MCPcopy
hub / github.com/directus/directus / createAdmin

Function createAdmin

api/src/utils/create-admin.ts:30–73  ·  view source on GitHub ↗
(
	schema: SchemaOverview,
	admin?: {
		email?: string | undefined;
		password?: string | undefined;
		first_name?: string | undefined;
		last_name?: string | undefined;
	},
)

Source from the content-addressed store, hash-verified

28};
29
30export async function createAdmin(
31 schema: SchemaOverview,
32 admin?: {
33 email?: string | undefined;
34 password?: string | undefined;
35 first_name?: string | undefined;
36 last_name?: string | undefined;
37 },
38): Promise<void> {
39 const logger = useLogger();
40 const env = useEnv();
41
42 const adminEmail = admin?.email ?? env['ADMIN_EMAIL'];
43 const adminPassword = admin?.password ?? env['ADMIN_PASSWORD'];
44
45 // Without credentials there's no admin user to create. Will happen in onboarding flow.
46 if (!adminEmail || !adminPassword) return;
47
48 logger.info('Setting up first admin role...');
49 const accessService = new AccessService({ schema });
50 const policiesService = new PoliciesService({ schema });
51 const rolesService = new RolesService({ schema });
52
53 const role = await rolesService.createOne(defaultAdminRole);
54 const policy = await policiesService.createOne(defaultAdminPolicy);
55
56 await accessService.createOne({ policy, role });
57
58 const usersService = new UsersService({ schema });
59
60 const token = env['ADMIN_TOKEN'] ?? null;
61
62 logger.info('Adding first admin user...');
63
64 await usersService.createOne({
65 ...defaultAdminUser,
66 first_name: admin?.first_name ?? defaultAdminUser.first_name,
67 last_name: admin?.last_name ?? defaultAdminUser.last_name,
68 email: adminEmail,
69 password: adminPassword,
70 token,
71 role,
72 });
73}

Callers 2

server.tsFile · 0.85
bootstrapFunction · 0.85

Calls 6

createOneMethod · 0.95
createOneMethod · 0.95
createOneMethod · 0.95
useEnvFunction · 0.90
useLoggerFunction · 0.85
createOneMethod · 0.65

Tested by

no test coverage detected