async function viewUsers(){ const list=await api('/api/admin/users'); const rows=(Array.isArray(list)?list:[]).map(u=>''+esc(u.username)+''+(u.role==='admin'?'管理员':'操作员')+''+(u.enabled?'启用':'停用')+'').join(''); $('#app').innerHTML='

用户权限

管理员可管理用户。操作员可使用账号、购买和兑换,不能管理用户。
'+(rows||'')+'
账号角色状态
没有用户
'; } async function addUser(){ const v=await modal({title:'添加用户', fields:[{label:'账号'},{label:'密码',type:'password'},{label:'角色 admin 或 operator',value:'operator'}], okText:'创建'}); if(!v) return; const res=await api('/api/admin/users',{method:'POST',body:JSON.stringify({username:v[0],password:v[1],role:v[2]||'operator'})}); if(res.error) return fail('无法创建', res.error); viewUsers(); } async function resetUser(id){ const v=await ask('重置密码','新密码','','至少 6 位','password'); if(!v) return; const res=await api('/api/admin/users/'+id+'/password',{method:'POST',body:JSON.stringify({password:v})}); if(res.error) return fail('无法重置', res.error); notice('已重置','密码已更新'); }