UNPKG

@directus/api

Version:

Directus is a real-time API and App dashboard for managing SQL database content

55 lines (53 loc) 1.57 kB
import { useLogger } from "../../../logger/index.js"; import database_default from "../../../database/index.js"; import { AccessService } from "../../../services/access.js"; import { getSchema } from "../../../utils/get-schema.js"; import { RolesService } from "../../../services/roles.js"; import { PoliciesService } from "../../../services/policies.js"; import "../../../services/index.js"; import { getLicenseManager } from "../../../license/manager.js"; import "../../../license/index.js"; //#region src/cli/commands/roles/create.ts async function rolesCreate({ role: name, admin, app }) { const database = database_default(); const logger = useLogger(); if (!name) { logger.error("Name is required"); process.exit(1); } await getLicenseManager().initialize(); try { const schema = await getSchema(); const rolesService = new RolesService({ schema, knex: database }); const policiesService = new PoliciesService({ schema, knex: database }); const accessService = new AccessService({ 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); } } //#endregion export { rolesCreate as default };