monitor/core/routes/adminManager/page.ts
2025-04-16 22:30:27 +07:00

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);
};