chamesu
Version:
This package contains all packages of the chat application.
105 lines (79 loc) • 3.28 kB
text/typescript
/*
* Copyright (c) 2022.
* Author Peter Placzek (tada5hi)
* For the full copyright and license information,
* view the LICENSE file that was distributed with this source code.
*/
import {Factory, Seeder} from "typeorm-seeding";
import {Connection, getRepository} from "typeorm";
import {UserRepository} from "@chamesu/common/domains/auth/user/repository";
import {RoleRepository} from "@chamesu/common/domains/auth/role/repository";
import {AuthPermission} from "@chamesu/common/domains/auth/permission";
import {AuthRolePermission} from "@chamesu/common/domains/auth/role/permission";
import {AuthUserRole} from "@chamesu/common/domains/auth/user/role";
export default class CreateAuth implements Seeder {
public async run(factory: Factory, connection: Connection) : Promise<any> {
//-------------------------------------------------
const roleRepository = connection.getCustomRepository(RoleRepository);
let adminRole = roleRepository.create({
name: 'admin'
});
await roleRepository.save(adminRole);
//-------------------------------------------------
const userRepository = connection.getCustomRepository(UserRepository);
let adminUser = userRepository.create({
name: 'admin',
password: await userRepository.hashPassword('start123'),
email: 'peter.placzek1996@gmail.com'
});
await userRepository.save(adminUser);
//-------------------------------------------------
const userRoleRepository = getRepository(AuthUserRole);
await userRoleRepository.insert({
role_id: adminRole.id,
user_id: adminUser.id
});
//-------------------------------------------------
const permissionRepository = connection.getRepository(AuthPermission);
const names : string[] = [
'admin_ui_use',
'realm_add',
'realm_drop',
'realm_edit',
'provider_add',
'provider_drop',
'provider_edit',
'permission_add',
'permission_drop',
'permission_edit',
'user_add',
'user_drop',
'user_edit',
'user_role_add',
'user_role_drop',
'user_role_edit',
'role_add',
'role_drop',
'role_edit',
'role_permission_add',
'role_permission_drop',
];
const permissions : AuthPermission[] = names.map((id: string) => {
return permissionRepository.create({id});
});
await permissionRepository.save(permissions);
//-------------------------------------------------
/**
* Assign all permissions to default role.
*/
const rolePermissionRepository = connection.getRepository(AuthRolePermission);
const rolePermissions : AuthRolePermission[] = [];
for(let j=0; j<permissions.length; j++) {
rolePermissions.push(rolePermissionRepository.create({
role_id: adminRole.id,
permission_id: permissions[j].id
}))
}
await rolePermissionRepository.save(rolePermissions);
}
}