Skip to content

Commit 40f6ae5

Browse files
author
vineet-suri
committed
RFIT-188 adding resource value modifier function
1 parent 3411210 commit 40f6ae5

File tree

3 files changed

+10
-5
lines changed

3 files changed

+10
-5
lines changed

src/keys.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import {
88
CasbinEnforcerFn,
99
CasbinAuthorizeFn,
1010
CasbinEnforcerConfigGetterFn,
11+
CasbinResourceModifierFn,
1112
} from './types';
1213
import { CoreBindings } from '@loopback/core';
1314
import { AuthorizationComponent } from './component';
@@ -45,6 +46,10 @@ export namespace AuthorizationBindings {
4546
'sf.userCasbinAuthorization.casbinEnforcerConfigGetter',
4647
);
4748

49+
export const CASBIN_RESOURCE_MODIFIER_FN = BindingKey.create<CasbinResourceModifierFn>(
50+
'sf.userCasbinAuthorization.casbinResourceModifierFn',
51+
);
52+
4853
export const CONFIG = BindingKey.create<AuthorizationConfig>(
4954
'sf.userAuthorization.config',
5055
);

src/providers/casbin-authorization-action.provider.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,17 +18,17 @@ export class CasbinAuthorizationProvider implements Provider<CasbinAuthorizeFn>
1818
) { }
1919

2020
value(): CasbinAuthorizeFn {
21-
return (response) => this.action(response);
21+
return (response, resource) => this.action(response, resource);
2222
}
2323

24-
async action(user: IAuthUserWithPermissions): Promise<boolean> {
24+
async action(user: IAuthUserWithPermissions, resource: string): Promise<boolean> {
2525
let authDecision = false;
2626
try {
2727
const metadata: AuthorizationMetadata = await this.getCasbinMetadata();
2828

2929
const subject = this.getUserName(`${user.id}`);
3030

31-
const object = metadata.resource;
31+
const object = resource;
3232

3333
const action = metadata.permissions && metadata.permissions.length > 0 ? metadata.permissions[0] : DEFAULT_SCOPE;
3434

src/types.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ export interface CasbinAuthorizeFn {
2020
// userPermissions - Array of permission keys granted to the user
2121
// This is actually a union of permissions picked up based on role
2222
// attached to the user and allowed permissions at specific user level
23-
(user: IAuthUserWithPermissions): Promise<boolean>;
23+
(user: IAuthUserWithPermissions, resVal: string): Promise<boolean>;
2424
}
2525
/**
2626
* Authorization metadata interface for the method decorator
@@ -91,7 +91,7 @@ export interface CasbinEnforcerConfigGetterFn {
9191
}
9292

9393
export interface CasbinResourceModifierFn {
94-
(authUser: IAuthUserWithPermissions, resource: string, isCasbinPolicy?: boolean): Promise<CasbinConfig>;
94+
(pathParams: string[]): Promise<string>;
9595
}
9696

9797
export interface CasbinConfig {

0 commit comments

Comments
 (0)