Added a admin group with all permissions to seeding
This commit is contained in:
parent
744faba7ee
commit
f25ae9ba4f
|
@ -1,20 +1,48 @@
|
|||
import { Connection } from 'typeorm';
|
||||
import { Factory, Seeder } from 'typeorm-seeding';
|
||||
import { CreatePermission } from '../models/actions/CreatePermission';
|
||||
import { CreateUser } from '../models/actions/CreateUser';
|
||||
import { CreateUserGroup } from '../models/actions/CreateUserGroup';
|
||||
import { Permission } from '../models/entities/Permission';
|
||||
import { User } from '../models/entities/User';
|
||||
import { UserGroup } from '../models/entities/UserGroup';
|
||||
import { PermissionAction } from '../models/enums/PermissionAction';
|
||||
import { PermissionTarget } from '../models/enums/PermissionTargets';
|
||||
|
||||
export default class SeedUsers implements Seeder {
|
||||
public async run(factory: Factory, connection: Connection): Promise<any> {
|
||||
let adminGroup: UserGroup = await this.createAdminGroup(connection);
|
||||
let demouser = await this.createUser(connection, adminGroup.id);
|
||||
await this.createPermissions(connection, adminGroup.id);
|
||||
}
|
||||
|
||||
public async createAdminGroup(connection: Connection) {
|
||||
let adminGroup = new CreateUserGroup();
|
||||
adminGroup.name = "ADMINS";
|
||||
adminGroup.description = "Has all possible permissions";
|
||||
return await connection.getRepository(UserGroup).save(await adminGroup.toUserGroup());
|
||||
}
|
||||
|
||||
public async createUser(connection: Connection, group: number) {
|
||||
let initialUser = new CreateUser();
|
||||
initialUser.firstname = "demo";
|
||||
initialUser.lastname = "demo";
|
||||
initialUser.username = "demo";
|
||||
initialUser.password = "demo";
|
||||
await connection
|
||||
.createQueryBuilder()
|
||||
.insert()
|
||||
.into(User)
|
||||
.values([await initialUser.toUser()])
|
||||
.execute()
|
||||
initialUser.group = group;
|
||||
return await connection.getRepository(User).save(await initialUser.toUser());
|
||||
}
|
||||
|
||||
public async createPermissions(connection: Connection, principal: number) {
|
||||
let repo = await connection.getRepository(Permission);
|
||||
for (let target in PermissionTarget) {
|
||||
for (let action in PermissionAction) {
|
||||
let permission = new CreatePermission;
|
||||
permission.target = <PermissionTarget>target;
|
||||
permission.action = <PermissionAction>action;
|
||||
permission.principal = principal;
|
||||
await repo.save(await permission.toPermission());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue