Files
twenty/server/src/ability/handlers/workspace-member.ability-handler.ts
Jérémy M b179d1f1f0 feat: wip casl policies (#334)
* feat: wip casl policies

* feat: add ability guard on pipeline resolvers

* fix: test
2023-06-20 19:31:11 -07:00

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');
}
}