diff --git a/src/seeds/SeedUsers.ts b/src/seeds/SeedUsers.ts index 9db0fd7..e366916 100644 --- a/src/seeds/SeedUsers.ts +++ b/src/seeds/SeedUsers.ts @@ -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 { + 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 = target; + permission.action = action; + permission.principal = principal; + await repo.save(await permission.toPermission()); + } + } } } \ No newline at end of file