1- import { AbilityBuilder , detectSubjectType } from '@casl/ability' ;
1+ import { AbilityBuilder } from '@casl/ability' ;
22import { createPrismaAbility } from '@casl/prisma' ;
33import { Inject , Injectable } from '@nestjs/common' ;
44
55import { LoggingService } from '../logging/logging.service.js' ;
6+ import { createAppAbility , detectAppSubject } from './ability.utils.js' ;
67import { DEFINE_ABILITY_TOKEN } from './auth.config.js' ;
78
8- import type { AppAbilities , AppAbility , DefineAbility , Permission } from './auth.config.js' ;
9+ import type { AppAbility , DefineAbility , Permission } from './auth.config.js' ;
910
1011@Injectable ( )
1112export class AbilityFactory {
12- private detectSubjectType = ( obj : { [ key : string ] : unknown } ) : string => {
13- if ( typeof obj . __modelName === 'string' ) {
14- return obj . __modelName ;
15- }
16- return detectSubjectType ( obj ) ;
17- } ;
18-
1913 constructor (
2014 private readonly loggingService : LoggingService ,
2115 @Inject ( DEFINE_ABILITY_TOKEN ) private readonly defineAbility ?: DefineAbility
@@ -32,7 +26,7 @@ export class AbilityFactory {
3226 this . defineAbility ( abilityBuilder , payload , metadata ) ;
3327 }
3428 return abilityBuilder . build ( {
35- detectSubjectType : this . detectSubjectType
29+ detectSubjectType : detectAppSubject
3630 } ) ;
3731 }
3832
@@ -41,8 +35,6 @@ export class AbilityFactory {
4135 message : 'Creating Ability From Permissions' ,
4236 permissions
4337 } ) ;
44- return createPrismaAbility < AppAbilities > ( permissions , {
45- detectSubjectType : this . detectSubjectType
46- } ) ;
38+ return createAppAbility ( permissions ) ;
4739 }
4840}
0 commit comments