import { InjectRepository } from "@nestjs/typeorm";
import { Initializer } from "../initalizer.interface";
import { Permission } from "@app/models";
import { Repository } from "typeorm";
export class PermissionInit implements Initializer<Promise<void>>{
constructor(
@InjectRepository(Permission)
private permission: Repository<Permission>,
){}
async run(): Promise<void> {
const permissions = {
user: [
'add',
'remove',
'update',
'query',
'password::force-update',
'batch-remove',
],
permission: ['add', 'remove', 'update', 'get'],
role: ['add', 'remove', 'update', 'query'],
menu: ['add', 'remove', 'update', 'query'],
i18n: ['add', 'remove', 'update', 'query', 'batch-remove'],
lang: ['add', 'remove', 'update', 'query'],
};
const permissionEntites:Permission[] = [];
permissionEntites.push(
this.permission.create({
name: '*',
desc: ''
})
);
for (const [module, actions] of Object.entries(permissions)) {
for (const action of actions) {
if (
await this.permission.findOne({
where:{name: `${module}::${action}`}
})
) {
continue;
}
const p = this.permission.create(
{
name: `${module}::${action}`,
desc: '',
},
)
permissionEntites.push(p);
}
}
await this.permission.save(permissionEntites);
}
}