Unify & translate initial role/user detail in init & bootstrap command (#10493)

* Unify initial role/user detail in init & bootstrap

* translate role descriptions

* translate data from system collections
This commit is contained in:
Azri Kahar
2021-12-14 22:33:44 +08:00
committed by GitHub
parent 549b9ee8e1
commit 31bb890496
6 changed files with 25 additions and 11 deletions

View File

@@ -8,6 +8,7 @@ import { getSchema } from '../../../utils/get-schema';
import { RolesService, UsersService, SettingsService } from '../../../services';
import getDatabase, { isInstalled, validateDatabaseConnection, hasDatabaseConnection } from '../../../database';
import { SchemaOverview } from '../../../types';
import { defaultAdminRole, defaultAdminUser } from '../../utils/defaults';
export default async function bootstrap({ skipAdminInit }: { skipAdminInit?: boolean }): Promise<void> {
logger.info('Initializing bootstrap...');
@@ -65,7 +66,7 @@ async function waitForDatabase(database: Knex) {
async function createDefaultAdmin(schema: SchemaOverview) {
logger.info('Setting up first admin role...');
const rolesService = new RolesService({ schema });
const role = await rolesService.createOne({ name: 'Admin', admin_access: true });
const role = await rolesService.createOne(defaultAdminRole);
logger.info('Adding first admin user...');
const usersService = new UsersService({ schema });
@@ -84,5 +85,5 @@ async function createDefaultAdmin(schema: SchemaOverview) {
logger.info(`No admin password provided. Defaulting to "${adminPassword}"`);
}
await usersService.createOne({ email: adminEmail, password: adminPassword, role });
await usersService.createOne({ email: adminEmail, password: adminPassword, role, ...defaultAdminUser });
}

View File

@@ -11,6 +11,7 @@ import createEnv from '../../utils/create-env';
import { drivers, getDriverForClient } from '../../utils/drivers';
import { databaseQuestions } from './questions';
import { generateHash } from '../../../utils/generate-hash';
import { defaultAdminRole, defaultAdminUser } from '../../utils/defaults';
export default async function init(): Promise<void> {
const rootPath = process.cwd();
@@ -94,20 +95,15 @@ export default async function init(): Promise<void> {
await db('directus_roles').insert({
id: roleID,
name: 'Administrator',
icon: 'verified',
admin_access: true,
description: 'Initial administrative role with unrestricted App/API access',
...defaultAdminRole,
});
await db('directus_users').insert({
id: userID,
status: 'active',
email: firstUser.email,
password: firstUser.password,
first_name: 'Admin',
last_name: 'User',
role: roleID,
...defaultAdminUser,
});
await db.destroy();

View File

@@ -0,0 +1,12 @@
export const defaultAdminRole = {
name: 'Administrator',
icon: 'verified',
admin_access: true,
description: '$t:admin_description',
};
export const defaultAdminUser = {
status: 'active',
first_name: 'Admin',
last_name: 'User',
};