43 lines
1.3 KiB
TypeScript
43 lines
1.3 KiB
TypeScript
import { PrismaService } from 'src/database/prisma.service';
|
|
import { AbilityAction } from '../ability.action';
|
|
import { AppAbility } from '../ability.factory';
|
|
import { IAbilityHandler } from '../interfaces/ability-handler.interface';
|
|
import { Injectable } from '@nestjs/common';
|
|
|
|
@Injectable()
|
|
export class ManageWorkspaceMemberAbilityHandler implements IAbilityHandler {
|
|
constructor(private readonly prismaService: PrismaService) {}
|
|
|
|
async handle(ability: AppAbility) {
|
|
return ability.can(AbilityAction.Manage, 'WorkspaceMember');
|
|
}
|
|
}
|
|
|
|
@Injectable()
|
|
export class ReadWorkspaceMemberAbilityHandler implements IAbilityHandler {
|
|
handle(ability: AppAbility) {
|
|
return ability.can(AbilityAction.Read, 'WorkspaceMember');
|
|
}
|
|
}
|
|
|
|
@Injectable()
|
|
export class CreateWorkspaceMemberAbilityHandler implements IAbilityHandler {
|
|
handle(ability: AppAbility) {
|
|
return ability.can(AbilityAction.Create, 'WorkspaceMember');
|
|
}
|
|
}
|
|
|
|
@Injectable()
|
|
export class UpdateWorkspaceMemberAbilityHandler implements IAbilityHandler {
|
|
handle(ability: AppAbility) {
|
|
return ability.can(AbilityAction.Update, 'WorkspaceMember');
|
|
}
|
|
}
|
|
|
|
@Injectable()
|
|
export class DeleteWorkspaceMemberAbilityHandler implements IAbilityHandler {
|
|
handle(ability: AppAbility) {
|
|
return ability.can(AbilityAction.Delete, 'WorkspaceMember');
|
|
}
|
|
}
|