feat: delete views from views dropdown (#1234)
Closes #1129 Co-authored-by: Charles Bochet <charlesBochet@users.noreply.github.com>
This commit is contained in:
@ -140,17 +140,17 @@ export class AbilityFactory {
|
||||
can(AbilityAction.Read, 'View', { workspaceId: workspace.id });
|
||||
can(AbilityAction.Create, 'View', { workspaceId: workspace.id });
|
||||
can(AbilityAction.Update, 'View', { workspaceId: workspace.id });
|
||||
can(AbilityAction.Delete, 'View', { workspaceId: workspace.id });
|
||||
|
||||
// ViewField
|
||||
can(AbilityAction.Read, 'ViewField', { workspaceId: workspace.id });
|
||||
can(AbilityAction.Create, 'ViewField', { workspaceId: workspace.id });
|
||||
can(AbilityAction.Update, 'ViewField', { workspaceId: workspace.id });
|
||||
|
||||
//Favorite
|
||||
can(AbilityAction.Read, 'Favorite', { workspaceId: workspace.id });
|
||||
can(AbilityAction.Create, 'Favorite');
|
||||
can(AbilityAction.Delete, 'Favorite', {
|
||||
workspaceId: workspace.id,
|
||||
});
|
||||
can(AbilityAction.Delete, 'Favorite', { workspaceId: workspace.id });
|
||||
|
||||
// ViewSort
|
||||
can(AbilityAction.Read, 'ViewSort', { workspaceId: workspace.id });
|
||||
|
||||
@ -114,6 +114,7 @@ import {
|
||||
CreateViewAbilityHandler,
|
||||
ReadViewAbilityHandler,
|
||||
UpdateViewAbilityHandler,
|
||||
DeleteViewAbilityHandler,
|
||||
} from './handlers/view.ability-handler';
|
||||
|
||||
@Global()
|
||||
@ -207,6 +208,7 @@ import {
|
||||
ReadViewAbilityHandler,
|
||||
CreateViewAbilityHandler,
|
||||
UpdateViewAbilityHandler,
|
||||
DeleteViewAbilityHandler,
|
||||
// ViewField
|
||||
ReadViewFieldAbilityHandler,
|
||||
CreateViewFieldAbilityHandler,
|
||||
@ -305,6 +307,7 @@ import {
|
||||
ReadViewAbilityHandler,
|
||||
CreateViewAbilityHandler,
|
||||
UpdateViewAbilityHandler,
|
||||
DeleteViewAbilityHandler,
|
||||
// ViewField
|
||||
ReadViewFieldAbilityHandler,
|
||||
CreateViewFieldAbilityHandler,
|
||||
|
||||
@ -77,3 +77,19 @@ export class UpdateViewAbilityHandler implements IAbilityHandler {
|
||||
return ability.can(AbilityAction.Update, subject('View', view));
|
||||
}
|
||||
}
|
||||
|
||||
@Injectable()
|
||||
export class DeleteViewAbilityHandler implements IAbilityHandler {
|
||||
constructor(private readonly prismaService: PrismaService) {}
|
||||
|
||||
async handle(ability: AppAbility, context: ExecutionContext) {
|
||||
const gqlContext = GqlExecutionContext.create(context);
|
||||
const args = gqlContext.getArgs<ViewArgs>();
|
||||
const view = await this.prismaService.client.view.findFirst({
|
||||
where: args.where,
|
||||
});
|
||||
assert(view, '', NotFoundException);
|
||||
|
||||
return ability.can(AbilityAction.Delete, subject('View', view));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user