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='用户权限
管理员可管理用户。操作员可使用账号、购买和兑换,不能管理用户。
';
}
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('已重置','密码已更新');
}