50 lines
1.6 KiB
TypeScript
50 lines
1.6 KiB
TypeScript
const modulename = 'WebServer:AdminManagerPage';
|
|
import { AuthedCtx } from '@modules/WebServer/ctxTypes';
|
|
import consoleFactory from '@lib/console';
|
|
const console = consoleFactory(modulename);
|
|
|
|
|
|
/**
|
|
* Returns the output page containing the admins.
|
|
*/
|
|
export default async function AdminManagerPage(ctx: AuthedCtx) {
|
|
//Check permission
|
|
if (!ctx.admin.hasPermission('manage.admins')) {
|
|
return ctx.utils.render('main/message', {message: 'You don\'t have permission to view this page.'});
|
|
}
|
|
|
|
//Prepare admin array
|
|
const admins = txCore.adminStore.getAdminsList().map((admin) => {
|
|
let perms;
|
|
if (admin.master == true) {
|
|
perms = 'master account';
|
|
} else if (admin.permissions.includes('all_permissions')) {
|
|
perms = 'all permissions';
|
|
} else if (admin.permissions.length !== 1) {
|
|
perms = `${admin.permissions.length} permissions`;
|
|
} else {
|
|
perms = '1 permission';
|
|
}
|
|
const isSelf = ctx.admin.name.toLowerCase() === admin.name.toLowerCase();
|
|
|
|
return {
|
|
hasCitizenFX: (admin.providers.includes('citizenfx')),
|
|
hasDiscord: (admin.providers.includes('discord')),
|
|
name: admin.name,
|
|
perms: perms,
|
|
isSelf,
|
|
disableEdit: !ctx.admin.isMaster && admin.master,
|
|
disableDelete: (admin.master || isSelf),
|
|
};
|
|
});
|
|
|
|
//Set render data
|
|
const renderData = {
|
|
headerTitle: 'Admin Manager',
|
|
admins,
|
|
};
|
|
|
|
//Give output
|
|
return ctx.utils.render('main/adminManager', renderData);
|
|
};
|