@directus/api
Version:
Directus is a real-time API and App dashboard for managing SQL database content
39 lines (38 loc) • 1.48 kB
JavaScript
import { getSchema } from '../../../utils/get-schema.js';
import { RolesService } from '../../../services/roles.js';
import { PoliciesService } from '../../../services/index.js';
import { AccessService } from '../../../services/index.js';
import getDatabase from '../../../database/index.js';
import { useLogger } from '../../../logger/index.js';
export default async function rolesCreate({ role: name, admin, app, }) {
const database = getDatabase();
const logger = useLogger();
if (!name) {
logger.error('Name is required');
process.exit(1);
}
try {
const schema = await getSchema();
const rolesService = new RolesService({ schema: schema, knex: database });
const policiesService = new PoliciesService({ schema: schema, knex: database });
const accessService = new AccessService({ schema: schema, knex: database });
const adminPolicyId = await policiesService.createOne({
name: `Policy for ${name}`,
admin_access: admin,
app_access: app,
icon: 'supervised_user_circle',
});
const roleId = await rolesService.createOne({ name });
await accessService.createOne({
role: roleId,
policy: adminPolicyId,
});
process.stdout.write(`${String(roleId)}\n`);
database.destroy();
process.exit(0);
}
catch (err) {
logger.error(err);
process.exit(1);
}
}