vona-module-a-permission 5.1.13 → 5.1.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/.metadata/index.d.ts +19 -8
- package/dist/.metadata/index.d.ts.map +1 -1
- package/dist/bean/bean.permission.d.ts +9 -8
- package/dist/bean/bean.permission.d.ts.map +1 -1
- package/dist/bean/summerCache.permissionActionByRoles.d.ts +8 -0
- package/dist/bean/summerCache.permissionActionByRoles.d.ts.map +1 -0
- package/dist/bean/summerCache.permissionUser.d.ts +8 -0
- package/dist/bean/summerCache.permissionUser.d.ts.map +1 -0
- package/dist/index.js +72 -62
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
- package/src/.metadata/index.ts +24 -9
- package/src/bean/bean.permission.ts +87 -73
- package/src/bean/summerCache.permissionActionByRoles.ts +27 -0
- package/src/bean/summerCache.permissionUser.ts +20 -0
- package/dist/bean/summerCache.permission.d.ts +0 -8
- package/dist/bean/summerCache.permission.d.ts.map +0 -1
- package/src/bean/summerCache.permission.ts +0 -17
|
@@ -49,27 +49,38 @@ declare module 'vona-module-a-event' {
|
|
|
49
49
|
}
|
|
50
50
|
/** event: end */
|
|
51
51
|
/** summerCache: begin */
|
|
52
|
-
export * from '../bean/summerCache.
|
|
52
|
+
export * from '../bean/summerCache.permissionActionByRoles.ts';
|
|
53
|
+
export * from '../bean/summerCache.permissionUser.ts';
|
|
53
54
|
import { type IDecoratorSummerCacheOptions } from 'vona-module-a-summer';
|
|
54
55
|
declare module 'vona-module-a-summer' {
|
|
55
56
|
interface ISummerCacheRecord {
|
|
56
|
-
'a-permission:
|
|
57
|
+
'a-permission:permissionActionByRoles': IDecoratorSummerCacheOptions;
|
|
58
|
+
'a-permission:permissionUser': IDecoratorSummerCacheOptions;
|
|
57
59
|
}
|
|
58
60
|
}
|
|
59
61
|
declare module 'vona-module-a-permission' {
|
|
60
|
-
interface
|
|
62
|
+
interface SummerCachePermissionActionByRoles {
|
|
61
63
|
}
|
|
62
|
-
interface
|
|
63
|
-
get $beanFullName(): 'a-permission.summerCache.
|
|
64
|
-
get $onionName(): 'a-permission:
|
|
64
|
+
interface SummerCachePermissionActionByRoles {
|
|
65
|
+
get $beanFullName(): 'a-permission.summerCache.permissionActionByRoles';
|
|
66
|
+
get $onionName(): 'a-permission:permissionActionByRoles';
|
|
67
|
+
get $onionOptions(): IDecoratorSummerCacheOptions;
|
|
68
|
+
}
|
|
69
|
+
interface SummerCachePermissionUser {
|
|
70
|
+
}
|
|
71
|
+
interface SummerCachePermissionUser {
|
|
72
|
+
get $beanFullName(): 'a-permission.summerCache.permissionUser';
|
|
73
|
+
get $onionName(): 'a-permission:permissionUser';
|
|
65
74
|
get $onionOptions(): IDecoratorSummerCacheOptions;
|
|
66
75
|
}
|
|
67
76
|
}
|
|
68
77
|
/** summerCache: end */
|
|
69
78
|
/** summerCache: begin */
|
|
70
|
-
import type {
|
|
79
|
+
import type { SummerCachePermissionActionByRoles } from '../bean/summerCache.permissionActionByRoles.ts';
|
|
80
|
+
import type { SummerCachePermissionUser } from '../bean/summerCache.permissionUser.ts';
|
|
71
81
|
export interface IModuleSummerCache {
|
|
72
|
-
'
|
|
82
|
+
'permissionActionByRoles': SummerCachePermissionActionByRoles;
|
|
83
|
+
'permissionUser': SummerCachePermissionUser;
|
|
73
84
|
}
|
|
74
85
|
/** summerCache: end */
|
|
75
86
|
/** dto: begin */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/.metadata/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AACjE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AACrE,kBAAkB;AAClB,cAAc,4BAA4B,CAAC;AAE3C,OAAO,MAAM,CAAC;AACd,OAAO,QAAQ,MAAM,CAAC;CAGrB;AACD,OAAO,QAAQ,0BAA0B,CAAC;IAElC,UAAiB,cAAc;KAG9B;CACR;AACD,gBAAgB;AAChB,kBAAkB;AAClB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,MAAM,CAAC;AACd,OAAO,QAAQ,MAAM,CAAC;IACpB,UAAiB,iBAAiB;QAChC,YAAY,EAAE,cAAc,CAAC;KAC9B;CACF;AACD,gBAAgB;AAChB,mBAAmB;AACnB,cAAc,sCAAsC,CAAC;AAErD,OAAO,MAAM,CAAC;AACd,OAAO,QAAQ,MAAM,CAAC;CAGrB;AACD,OAAO,QAAQ,0BAA0B,CAAC;IAElC,UAAiB,wBAAwB;KAGxC;IAEC,UAAiB,wBAAwB;QACvC,IAAI,aAAa,IAAI,wCAAwC,CAAC;QAC9D,IAAI,UAAU,IAAI,kCAAkC,CAAC;KAEtD;CACV;AACD,iBAAiB;AACjB,mBAAmB;AACnB,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,sCAAsC,CAAC;AACrF,MAAM,WAAW,YAAY;IAC3B,qBAAqB,EAAE,wBAAwB,CAAC;CACjD;AACD,iBAAiB;AACjB,mBAAmB;AACnB,OAAO,KAAK,EAAE,gCAAgC,EAAE,kCAAkC,EAAE,MAAM,sCAAsC,CAAC;AACjI,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,QAAQ,qBAAqB,CAAC;IACnC,UAAiB,YAAY;QAC3B,kCAAkC,EAAE,OAAO,CAAC,gCAAgC,EAAE,kCAAkC,CAAC,CAAC;KACnH;CACF;AACD,iBAAiB;AACjB,yBAAyB;AACzB,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/.metadata/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AACjE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AACrE,kBAAkB;AAClB,cAAc,4BAA4B,CAAC;AAE3C,OAAO,MAAM,CAAC;AACd,OAAO,QAAQ,MAAM,CAAC;CAGrB;AACD,OAAO,QAAQ,0BAA0B,CAAC;IAElC,UAAiB,cAAc;KAG9B;CACR;AACD,gBAAgB;AAChB,kBAAkB;AAClB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,MAAM,CAAC;AACd,OAAO,QAAQ,MAAM,CAAC;IACpB,UAAiB,iBAAiB;QAChC,YAAY,EAAE,cAAc,CAAC;KAC9B;CACF;AACD,gBAAgB;AAChB,mBAAmB;AACnB,cAAc,sCAAsC,CAAC;AAErD,OAAO,MAAM,CAAC;AACd,OAAO,QAAQ,MAAM,CAAC;CAGrB;AACD,OAAO,QAAQ,0BAA0B,CAAC;IAElC,UAAiB,wBAAwB;KAGxC;IAEC,UAAiB,wBAAwB;QACvC,IAAI,aAAa,IAAI,wCAAwC,CAAC;QAC9D,IAAI,UAAU,IAAI,kCAAkC,CAAC;KAEtD;CACV;AACD,iBAAiB;AACjB,mBAAmB;AACnB,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,sCAAsC,CAAC;AACrF,MAAM,WAAW,YAAY;IAC3B,qBAAqB,EAAE,wBAAwB,CAAC;CACjD;AACD,iBAAiB;AACjB,mBAAmB;AACnB,OAAO,KAAK,EAAE,gCAAgC,EAAE,kCAAkC,EAAE,MAAM,sCAAsC,CAAC;AACjI,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,QAAQ,qBAAqB,CAAC;IACnC,UAAiB,YAAY;QAC3B,kCAAkC,EAAE,OAAO,CAAC,gCAAgC,EAAE,kCAAkC,CAAC,CAAC;KACnH;CACF;AACD,iBAAiB;AACjB,yBAAyB;AACzB,cAAc,gDAAgD,CAAC;AAC/D,cAAc,uCAAuC,CAAC;AAEtD,OAAO,EAAE,KAAK,4BAA4B,EAAE,MAAM,sBAAsB,CAAC;AACzE,OAAO,QAAQ,sBAAsB,CAAC;IAElC,UAAiB,kBAAkB;QACjC,sCAAsC,EAAE,4BAA4B,CAAC;QAC3E,6BAA6B,EAAE,4BAA4B,CAAC;KACvD;CAGJ;AACD,OAAO,QAAQ,0BAA0B,CAAC;IAElC,UAAiB,kCAAkC;KAGlD;IAEC,UAAiB,kCAAkC;QACjD,IAAI,aAAa,IAAI,kDAAkD,CAAC;QACxE,IAAI,UAAU,IAAI,sCAAsC,CAAC;QACzD,IAAI,aAAa,IAAI,4BAA4B,CAAC;KACnD;IAEH,UAAiB,yBAAyB;KAGzC;IAEC,UAAiB,yBAAyB;QACxC,IAAI,aAAa,IAAI,yCAAyC,CAAC;QAC/D,IAAI,UAAU,IAAI,6BAA6B,CAAC;QAChD,IAAI,aAAa,IAAI,4BAA4B,CAAC;KACnD;CACV;AACD,uBAAuB;AACvB,yBAAyB;AACzB,OAAO,KAAK,EAAE,kCAAkC,EAAE,MAAM,gDAAgD,CAAC;AACzG,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,uCAAuC,CAAC;AACvF,MAAM,WAAW,kBAAkB;IACjC,yBAAyB,EAAE,kCAAkC,CAAC;IAChE,gBAAgB,EAAE,yBAAyB,CAAC;CAC3C;AACD,uBAAuB;AACvB,iBAAiB;AACjB,cAAc,wBAAwB,CAAC;AACvC,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AACrE,OAAO,mBAAmB,CAAC;AAC3B,OAAO,QAAQ,mBAAmB,CAAC;IAE/B,UAAiB,UAAU;QACzB,0BAA0B,EAAE,sBAAsB,CAAC;KACpD;CAGJ;AACD,OAAO,QAAQ,0BAA0B,CAAC;CAEzC;AACD,eAAe;AACf,iBAAiB;AACjB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,QAAQ,0BAA0B,CAAC;IAEtC,UAAiB,sBAAsB;QACrC,MAAM,CAAC,EAAE,uBAAuB,CAAC,cAAc,EAAE,sBAAsB,CAAC,uBAAuB,CAAC,CAAC,CAAC;KACnG;CACJ;AACD,eAAe;AACf,oBAAoB;AACpB,cAAc,qBAAqB,CAAC;AACpC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAClD,kBAAkB;AAClB,mBAAmB;AACnB,OAAO,EAAE,aAAa,EAAE,KAAK,aAAa,EAAE,KAAK,gBAAgB,EAAE,MAAM,MAAM,CAAC;AAGhF,qBACa,sBAAuB,SAAQ,aAAa;CAAG;AAE5D,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,aAAa,CAAC;IACtB,MAAM,EAAE,gBAAgB,CAAC,OAAO,MAAM,CAAC,CAAC;IACxC,KAAK,EAAE,YAAY,CAAC;IACpB,WAAW,EAAE,kBAAkB,CAAC;CAC/B;AAED,OAAO,MAAM,CAAC;AACd,OAAO,QAAQ,MAAM,CAAC;IACpB,UAAiB,gBAAgB;QAC/B,cAAc,EAAE,sBAAsB,CAAC;KACxC;IAED,UAAiB,mBAAmB;QAClC,UAAU,EAAE,sBAAsB,CAAC;KACpC;IAED,UAAiB,gBAAgB;QAC/B,cAAc,EAAE,UAAU,CAAC,OAAO,MAAM,CAAC,CAAC;KAC3C;CAKF;AACD,iBAAiB"}
|
|
@@ -4,18 +4,19 @@ import { BeanBase } from 'vona';
|
|
|
4
4
|
export declare class BeanPermission extends BeanBase {
|
|
5
5
|
clearAllCaches(): Promise<void>;
|
|
6
6
|
protected retrievePermissionsCacheKey(info: ICachingActionKeyInfo): string;
|
|
7
|
-
protected
|
|
7
|
+
protected retrievePermissionActionCacheKey(info: ICachingActionKeyInfo): string;
|
|
8
8
|
retrievePermissions(resource: keyof IResourceRecord): Promise<IOpenapiPermissions>;
|
|
9
9
|
protected retrievePermissionsDefault(resource: keyof IResourceRecord): Promise<IOpenapiPermissions>;
|
|
10
10
|
getPermissionsDefault(resource: keyof IResourceRecord): Promise<IOpenapiPermissions>;
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
private
|
|
14
|
-
private
|
|
15
|
-
private
|
|
16
|
-
private
|
|
11
|
+
retrievePermissionAction(resource: keyof IResourceRecord, actionKey: string): Promise<boolean>;
|
|
12
|
+
protected retrievePermissionActionByRoles(resource: keyof IResourceRecord, actionKey: string): Promise<boolean>;
|
|
13
|
+
private _getRoutePathInfo;
|
|
14
|
+
private _getControllerRoutes;
|
|
15
|
+
private _getControllerActionRoute;
|
|
16
|
+
private _extractCurrentRoleIdsSorted;
|
|
17
|
+
private _matchPassportMeta;
|
|
17
18
|
private _getPassportOptions;
|
|
18
19
|
private _matchPassportOptions;
|
|
19
|
-
private
|
|
20
|
+
private _evaluatePermissionAction;
|
|
20
21
|
}
|
|
21
22
|
//# sourceMappingURL=bean.permission.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bean.permission.d.ts","sourceRoot":"","sources":["../../src/bean/bean.permission.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AACnE,OAAO,KAAK,EAEV,mBAAmB,EACnB,eAAe,EAChB,MAAM,uBAAuB,CAAC;AAI/B,OAAO,
|
|
1
|
+
{"version":3,"file":"bean.permission.d.ts","sourceRoot":"","sources":["../../src/bean/bean.permission.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AACnE,OAAO,KAAK,EAEV,mBAAmB,EACnB,eAAe,EAChB,MAAM,uBAAuB,CAAC;AAI/B,OAAO,EAAe,QAAQ,EAA6B,MAAM,MAAM,CAAC;AAkBxE,qBACa,cAAe,SAAQ,QAAQ;IAC7B,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;IAW5C,SAAS,CAAC,2BAA2B,CAAC,IAAI,EAAE,qBAAqB,GAAG,MAAM;IAM1E,SAAS,CAAC,gCAAgC,CAAC,IAAI,EAAE,qBAAqB,GAAG,MAAM;IAUzE,mBAAmB,CAAC,QAAQ,EAAE,MAAM,eAAe,GAAG,OAAO,CAAC,mBAAmB,CAAC;cAMxE,0BAA0B,CACxC,QAAQ,EAAE,MAAM,eAAe,GAC9B,OAAO,CAAC,mBAAmB,CAAC;IAIzB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,eAAe,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAe7E,wBAAwB,CACnC,QAAQ,EAAE,MAAM,eAAe,EAC/B,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,OAAO,CAAC;cAWH,+BAA+B,CAC7C,QAAQ,EAAE,MAAM,eAAe,EAC/B,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,OAAO,CAAC;IAMnB,OAAO,CAAC,iBAAiB;IAMzB,OAAO,CAAC,oBAAoB;IAQ5B,OAAO,CAAC,yBAAyB;IAOjC,OAAO,CAAC,4BAA4B;IAKpC,OAAO,CAAC,kBAAkB;IAK1B,OAAO,CAAC,mBAAmB;IAO3B,OAAO,CAAC,qBAAqB;YAWf,yBAAyB;CAiBxC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { ISummerCacheGet, TSummerCacheActionOptions } from 'vona-module-a-summer';
|
|
2
|
+
import { ServiceSummerCacheBase } from 'vona-module-a-summer';
|
|
3
|
+
export type TSummerCachePermissionActionByRolesKey = any;
|
|
4
|
+
export type TSummerCachePermissionActionByRolesData = any;
|
|
5
|
+
export declare class SummerCachePermissionActionByRoles extends ServiceSummerCacheBase<TSummerCachePermissionActionByRolesKey, TSummerCachePermissionActionByRolesData> implements ISummerCacheGet<TSummerCachePermissionActionByRolesKey, TSummerCachePermissionActionByRolesData> {
|
|
6
|
+
getNative(_key?: TSummerCachePermissionActionByRolesKey, _options?: TSummerCacheActionOptions<TSummerCachePermissionActionByRolesKey, TSummerCachePermissionActionByRolesData>): Promise<TSummerCachePermissionActionByRolesData | undefined>;
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=summerCache.permissionActionByRoles.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"summerCache.permissionActionByRoles.d.ts","sourceRoot":"","sources":["../../src/bean/summerCache.permissionActionByRoles.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AAEvF,OAAO,EAAE,sBAAsB,EAAe,MAAM,sBAAsB,CAAC;AAE3E,MAAM,MAAM,sCAAsC,GAAG,GAAG,CAAC;AACzD,MAAM,MAAM,uCAAuC,GAAG,GAAG,CAAC;AAE1D,qBACa,kCACX,SAAQ,sBAAsB,CAC5B,sCAAsC,EACtC,uCAAuC,CAEzC,YACE,eAAe,CACb,sCAAsC,EACtC,uCAAuC,CACxC;IAEG,SAAS,CACb,IAAI,CAAC,EAAE,sCAAsC,EAC7C,QAAQ,CAAC,EAAE,yBAAyB,CAClC,sCAAsC,EACtC,uCAAuC,CACxC,GACA,OAAO,CAAC,uCAAuC,GAAG,SAAS,CAAC;CAChE"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { ISummerCacheGet, TSummerCacheActionOptions } from 'vona-module-a-summer';
|
|
2
|
+
import { ServiceSummerCacheBase } from 'vona-module-a-summer';
|
|
3
|
+
export type TSummerCachePermissionUserKey = any;
|
|
4
|
+
export type TSummerCachePermissionUserData = any;
|
|
5
|
+
export declare class SummerCachePermissionUser extends ServiceSummerCacheBase<TSummerCachePermissionUserKey, TSummerCachePermissionUserData> implements ISummerCacheGet<TSummerCachePermissionUserKey, TSummerCachePermissionUserData> {
|
|
6
|
+
getNative(_key?: TSummerCachePermissionUserKey, _options?: TSummerCacheActionOptions<TSummerCachePermissionUserKey, TSummerCachePermissionUserData>): Promise<TSummerCachePermissionUserData | undefined>;
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=summerCache.permissionUser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"summerCache.permissionUser.d.ts","sourceRoot":"","sources":["../../src/bean/summerCache.permissionUser.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AAEvF,OAAO,EAAE,sBAAsB,EAAe,MAAM,sBAAsB,CAAC;AAE3E,MAAM,MAAM,6BAA6B,GAAG,GAAG,CAAC;AAChD,MAAM,MAAM,8BAA8B,GAAG,GAAG,CAAC;AAEjD,qBACa,yBACX,SAAQ,sBAAsB,CAAC,6BAA6B,EAAE,8BAA8B,CAC5F,YAAW,eAAe,CAAC,6BAA6B,EAAE,8BAA8B,CAAC;IAEnF,SAAS,CACb,IAAI,CAAC,EAAE,6BAA6B,EACpC,QAAQ,CAAC,EAAE,yBAAyB,CAClC,6BAA6B,EAC7B,8BAA8B,CAC/B,GACA,OAAO,CAAC,8BAA8B,GAAG,SAAS,CAAC;CACvD"}
|
package/dist/index.js
CHANGED
|
@@ -1,18 +1,14 @@
|
|
|
1
|
-
import { beanFullNameFromOnionName, BeanInfo, BeanBase, appResource,
|
|
1
|
+
import { beanFullNameFromOnionName, BeanInfo, BeanBase, appResource, BeanScopeBase } from 'vona';
|
|
2
2
|
import { __decorate, __metadata } from 'tslib';
|
|
3
3
|
import { Bean, Scope } from 'vona-module-a-bean';
|
|
4
4
|
import { Caching } from 'vona-module-a-caching';
|
|
5
|
-
import {
|
|
6
|
-
import { recordResourceNameToRoutePath, Dto } from 'vona-module-a-web';
|
|
5
|
+
import { recordResourceNameToRoutePath, getCacheControllerRoutes, composeGuards, Dto } from 'vona-module-a-web';
|
|
7
6
|
import { Event, BeanEventBase } from 'vona-module-a-event';
|
|
8
7
|
import { SummerCache, ServiceSummerCacheBase } from 'vona-module-a-summer';
|
|
9
8
|
import { Api, v } from 'vona-module-a-openapiutils';
|
|
10
9
|
import z from 'zod';
|
|
11
10
|
|
|
12
11
|
const BeanFullNameGuardPassport = beanFullNameFromOnionName('a-user:passport', 'guard');
|
|
13
|
-
const BeanFullNameGuardRoleName = beanFullNameFromOnionName('a-user:roleName', 'guard');
|
|
14
|
-
const BeanFullNameGuardUserName = beanFullNameFromOnionName('a-user:userName', 'guard');
|
|
15
|
-
const BeanFullNamesGuardSupported = new Set([BeanFullNameGuardPassport, BeanFullNameGuardRoleName, BeanFullNameGuardUserName]);
|
|
16
12
|
const GuardOptionsPassportDefault = {
|
|
17
13
|
public: false,
|
|
18
14
|
activated: true,
|
|
@@ -20,16 +16,20 @@ const GuardOptionsPassportDefault = {
|
|
|
20
16
|
};
|
|
21
17
|
let BeanPermission = class BeanPermission extends BeanBase {
|
|
22
18
|
async clearAllCaches() {
|
|
23
|
-
const
|
|
24
|
-
|
|
19
|
+
const cachePermissionUser = this.bean.summer.cache(beanFullNameFromOnionName('a-permission:permissionUser', 'summerCache'));
|
|
20
|
+
const cachePermissionActionByRoles = this.bean.summer.cache(beanFullNameFromOnionName('a-permission:permissionActionByRoles', 'summerCache'));
|
|
21
|
+
await cachePermissionUser.clear();
|
|
22
|
+
await cachePermissionActionByRoles.clear();
|
|
25
23
|
}
|
|
26
24
|
retrievePermissionsCacheKey(info) {
|
|
27
25
|
const resource = info.args[0];
|
|
28
26
|
const userId = this.ctx.passport.user?.id;
|
|
29
27
|
return `user:${resource}_${userId}`;
|
|
30
28
|
}
|
|
31
|
-
|
|
32
|
-
|
|
29
|
+
retrievePermissionActionCacheKey(info) {
|
|
30
|
+
const [resource, actionKey] = info.args;
|
|
31
|
+
const roleIdsKey = this._extractCurrentRoleIdsSorted().join(',') || 'none';
|
|
32
|
+
return `action:${resource}:${actionKey}:roles:${roleIdsKey}`;
|
|
33
33
|
}
|
|
34
34
|
async retrievePermissions(resource) {
|
|
35
35
|
return await this.scope.event.retrievePermissions.emit({
|
|
@@ -42,52 +42,49 @@ let BeanPermission = class BeanPermission extends BeanBase {
|
|
|
42
42
|
return await this.getPermissionsDefault(resource);
|
|
43
43
|
}
|
|
44
44
|
async getPermissionsDefault(resource) {
|
|
45
|
-
const routePathInfo = recordResourceNameToRoutePath[resource];
|
|
46
|
-
if (!routePathInfo) throw new Error(`not found routePath of resource: ${resource}`);
|
|
47
|
-
const controller = routePathInfo.controller;
|
|
48
|
-
if (!appResource.getBean(controller)) throw new Error('invalid controller');
|
|
49
|
-
const descs = Object.getOwnPropertyDescriptors(controller.prototype);
|
|
50
45
|
const actionsIgnore = this.scope.config.permission.actionsIgnore;
|
|
51
|
-
const
|
|
46
|
+
const actionRoutes = this._getControllerRoutes(resource).filter(route => !actionsIgnore.includes(route.action));
|
|
52
47
|
const permissionsActions = {};
|
|
53
|
-
for (const
|
|
54
|
-
|
|
55
|
-
if (!desc.value || typeof desc.value !== 'function') continue;
|
|
56
|
-
const routeReal = appMetadata.getMetadata(SymbolUseOnionOptionsRouteReal, controller.prototype, actionKey);
|
|
57
|
-
permissionsActions[actionKey] = this._getPermissionOfActionByMetadata(routeReal);
|
|
48
|
+
for (const route of actionRoutes) {
|
|
49
|
+
permissionsActions[route.action] = await this.retrievePermissionAction(resource, route.action);
|
|
58
50
|
}
|
|
59
51
|
return {
|
|
60
52
|
actions: permissionsActions
|
|
61
53
|
};
|
|
62
54
|
}
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
return
|
|
55
|
+
async retrievePermissionAction(resource, actionKey) {
|
|
56
|
+
const route = this._getControllerActionRoute(resource, actionKey);
|
|
57
|
+
if (!route?.route?.meta) return false;
|
|
58
|
+
if (!this._matchPassportMeta(route.route.meta)) return false;
|
|
59
|
+
return await this.retrievePermissionActionByRoles(resource, actionKey);
|
|
68
60
|
}
|
|
69
|
-
|
|
70
|
-
const
|
|
71
|
-
|
|
61
|
+
async retrievePermissionActionByRoles(resource, actionKey) {
|
|
62
|
+
const route = this._getControllerActionRoute(resource, actionKey);
|
|
63
|
+
if (!route?.route?.meta) return false;
|
|
64
|
+
return await this._evaluatePermissionAction(route);
|
|
72
65
|
}
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
66
|
+
_getRoutePathInfo(resource) {
|
|
67
|
+
const routePathInfo = recordResourceNameToRoutePath[resource];
|
|
68
|
+
if (!routePathInfo) throw new Error(`not found routePath of resource: ${resource}`);
|
|
69
|
+
return routePathInfo;
|
|
76
70
|
}
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
const
|
|
81
|
-
if (!
|
|
82
|
-
|
|
83
|
-
if (!this._matchRoleNameOptions(roleNameOptions)) return false;
|
|
84
|
-
return true;
|
|
71
|
+
_getControllerRoutes(resource) {
|
|
72
|
+
const routePathInfo = this._getRoutePathInfo(resource);
|
|
73
|
+
const controller = routePathInfo.controller;
|
|
74
|
+
const beanOptions = appResource.getBean(controller);
|
|
75
|
+
if (!beanOptions) throw new Error('invalid controller');
|
|
76
|
+
return getCacheControllerRoutes(this.app)[beanOptions.beanFullName] ?? [];
|
|
85
77
|
}
|
|
86
|
-
|
|
87
|
-
return
|
|
78
|
+
_getControllerActionRoute(resource, actionKey) {
|
|
79
|
+
return this._getControllerRoutes(resource).find(route => route.action === actionKey);
|
|
88
80
|
}
|
|
89
|
-
|
|
90
|
-
|
|
81
|
+
_extractCurrentRoleIdsSorted() {
|
|
82
|
+
const roleIds = this.bean.passport.currentRoles?.map(item => String(item.id)) ?? [];
|
|
83
|
+
return Array.from(new Set(roleIds)).sort();
|
|
84
|
+
}
|
|
85
|
+
_matchPassportMeta(meta) {
|
|
86
|
+
const passportOptions = this._getPassportOptions(meta);
|
|
87
|
+
return this._matchPassportOptions(passportOptions);
|
|
91
88
|
}
|
|
92
89
|
_getPassportOptions(meta) {
|
|
93
90
|
return {
|
|
@@ -103,24 +100,32 @@ let BeanPermission = class BeanPermission extends BeanBase {
|
|
|
103
100
|
if (options.activated === false && this.bean.passport.isActivated) return false;
|
|
104
101
|
return true;
|
|
105
102
|
}
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
103
|
+
async _evaluatePermissionAction(route) {
|
|
104
|
+
const ctx = this.ctx;
|
|
105
|
+
const routePrevious = ctx.route;
|
|
106
|
+
const innerAccessPrevious = ctx.innerAccess;
|
|
107
|
+
try {
|
|
108
|
+
ctx.route = route;
|
|
109
|
+
ctx.innerAccess = false;
|
|
110
|
+
const result = await composeGuards(this.app, route)(this.ctx);
|
|
111
|
+
return result !== false;
|
|
112
|
+
} catch (err) {
|
|
113
|
+
if ([401, 403].includes(err?.code)) return false;
|
|
114
|
+
throw err;
|
|
115
|
+
} finally {
|
|
116
|
+
ctx.route = routePrevious;
|
|
117
|
+
ctx.innerAccess = innerAccessPrevious;
|
|
118
|
+
}
|
|
114
119
|
}
|
|
115
120
|
};
|
|
116
121
|
__decorate([Caching.get({
|
|
117
|
-
cacheName: 'a-permission:
|
|
122
|
+
cacheName: 'a-permission:permissionUser',
|
|
118
123
|
cacheKeyFn: 'retrievePermissionsCacheKey'
|
|
119
124
|
}), __metadata("design:type", Function), __metadata("design:paramtypes", [Object]), __metadata("design:returntype", Promise)], BeanPermission.prototype, "retrievePermissions", null);
|
|
120
125
|
__decorate([Caching.get({
|
|
121
|
-
cacheName: 'a-permission:
|
|
122
|
-
cacheKeyFn: '
|
|
123
|
-
}), __metadata("design:type", Function), __metadata("design:paramtypes", [Object]), __metadata("design:returntype", Promise)], BeanPermission.prototype, "
|
|
126
|
+
cacheName: 'a-permission:permissionActionByRoles',
|
|
127
|
+
cacheKeyFn: 'retrievePermissionActionCacheKey'
|
|
128
|
+
}), __metadata("design:type", Function), __metadata("design:paramtypes", [Object, String]), __metadata("design:returntype", Promise)], BeanPermission.prototype, "retrievePermissionActionByRoles", null);
|
|
124
129
|
BeanPermission = __decorate([Bean(), BeanInfo({
|
|
125
130
|
module: "a-permission"
|
|
126
131
|
})], BeanPermission);
|
|
@@ -130,14 +135,19 @@ EventRetrievePermissions = __decorate([Event(), BeanInfo({
|
|
|
130
135
|
module: "a-permission"
|
|
131
136
|
})], EventRetrievePermissions);
|
|
132
137
|
|
|
133
|
-
let
|
|
138
|
+
let SummerCachePermissionActionByRoles = class SummerCachePermissionActionByRoles extends ServiceSummerCacheBase {
|
|
139
|
+
async getNative(_key, _options) {}
|
|
140
|
+
};
|
|
141
|
+
SummerCachePermissionActionByRoles = __decorate([SummerCache(), BeanInfo({
|
|
142
|
+
module: "a-permission"
|
|
143
|
+
})], SummerCachePermissionActionByRoles);
|
|
144
|
+
|
|
145
|
+
let SummerCachePermissionUser = class SummerCachePermissionUser extends ServiceSummerCacheBase {
|
|
134
146
|
async getNative(_key, _options) {}
|
|
135
147
|
};
|
|
136
|
-
|
|
137
|
-
preset: 'mem'
|
|
138
|
-
}), BeanInfo({
|
|
148
|
+
SummerCachePermissionUser = __decorate([SummerCache(), BeanInfo({
|
|
139
149
|
module: "a-permission"
|
|
140
|
-
})],
|
|
150
|
+
})], SummerCachePermissionUser);
|
|
141
151
|
|
|
142
152
|
let DtoPermissions = class DtoPermissions {
|
|
143
153
|
constructor() {
|
|
@@ -167,5 +177,5 @@ ScopeModuleAPermission = __decorate([Scope(), BeanInfo({
|
|
|
167
177
|
})], ScopeModuleAPermission);
|
|
168
178
|
/** scope: end */
|
|
169
179
|
|
|
170
|
-
export { BeanPermission, DtoPermissions, EventRetrievePermissions, ScopeModuleAPermission,
|
|
180
|
+
export { BeanPermission, DtoPermissions, EventRetrievePermissions, ScopeModuleAPermission, SummerCachePermissionActionByRoles, SummerCachePermissionUser, config };
|
|
171
181
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/bean/bean.permission.ts","../src/bean/event.retrievePermissions.ts","../src/bean/summerCache.
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/bean/bean.permission.ts","../src/bean/event.retrievePermissions.ts","../src/bean/summerCache.permissionActionByRoles.ts","../src/bean/summerCache.permissionUser.ts","../src/dto/permissions.tsx","../src/config/config.ts","../src/.metadata/index.ts"],"sourcesContent":[null,null,null,null,null,null,null],"names":["BeanFullNameGuardPassport","beanFullNameFromOnionName","GuardOptionsPassportDefault","public","activated","checkAuthToken","BeanPermission","BeanBase","clearAllCaches","cachePermissionUser","bean","summer","cache","cachePermissionActionByRoles","clear","retrievePermissionsCacheKey","info","resource","args","userId","ctx","passport","user","id","retrievePermissionActionCacheKey","actionKey","roleIdsKey","_extractCurrentRoleIdsSorted","join","retrievePermissions","scope","event","emit","retrievePermissionsDefault","getPermissionsDefault","actionsIgnore","config","permission","actionRoutes","_getControllerRoutes","filter","route","includes","action","permissionsActions","retrievePermissionAction","actions","_getControllerActionRoute","meta","_matchPassportMeta","retrievePermissionActionByRoles","_evaluatePermissionAction","_getRoutePathInfo","routePathInfo","recordResourceNameToRoutePath","Error","controller","beanOptions","appResource","getBean","getCacheControllerRoutes","app","beanFullName","find","roleIds","currentRoles","map","item","String","Array","from","Set","sort","passportOptions","_getPassportOptions","_matchPassportOptions","options","isAuthenticated","isActivated","routePrevious","innerAccessPrevious","innerAccess","result","composeGuards","err","code","__decorate","Caching","get","cacheName","cacheKeyFn","prototype","Bean","__z_BeanInfo","module","EventRetrievePermissions","BeanEventBase","Event","SummerCachePermissionActionByRoles","ServiceSummerCacheBase","getNative","_key","_options","SummerCache","SummerCachePermissionUser","DtoPermissions","constructor","roleNames","Api","field","v","optional","array","tableIdentity","z","string","Dto","_app","ScopeModuleAPermission","BeanScopeBase","Scope"],"mappings":"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"}
|
package/package.json
CHANGED
package/src/.metadata/index.ts
CHANGED
|
@@ -19,7 +19,7 @@ declare module 'vona-module-a-permission' {
|
|
|
19
19
|
/** bean: end */
|
|
20
20
|
/** bean: begin */
|
|
21
21
|
import type { BeanPermission } from '../bean/bean.permission.ts';
|
|
22
|
-
import 'vona';
|
|
22
|
+
import 'vona';
|
|
23
23
|
declare module 'vona' {
|
|
24
24
|
export interface IBeanRecordGlobal {
|
|
25
25
|
'permission': BeanPermission;
|
|
@@ -64,35 +64,50 @@ declare module 'vona-module-a-event' {
|
|
|
64
64
|
}
|
|
65
65
|
/** event: end */
|
|
66
66
|
/** summerCache: begin */
|
|
67
|
-
export * from '../bean/summerCache.
|
|
67
|
+
export * from '../bean/summerCache.permissionActionByRoles.ts';
|
|
68
|
+
export * from '../bean/summerCache.permissionUser.ts';
|
|
68
69
|
|
|
69
70
|
import { type IDecoratorSummerCacheOptions } from 'vona-module-a-summer';
|
|
70
71
|
declare module 'vona-module-a-summer' {
|
|
71
72
|
|
|
72
73
|
export interface ISummerCacheRecord {
|
|
73
|
-
'a-permission:
|
|
74
|
+
'a-permission:permissionActionByRoles': IDecoratorSummerCacheOptions;
|
|
75
|
+
'a-permission:permissionUser': IDecoratorSummerCacheOptions;
|
|
74
76
|
}
|
|
75
77
|
|
|
76
78
|
|
|
77
79
|
}
|
|
78
80
|
declare module 'vona-module-a-permission' {
|
|
79
81
|
|
|
80
|
-
export interface
|
|
82
|
+
export interface SummerCachePermissionActionByRoles {
|
|
83
|
+
/** @internal */
|
|
84
|
+
get scope(): ScopeModuleAPermission;
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
export interface SummerCachePermissionActionByRoles {
|
|
88
|
+
get $beanFullName(): 'a-permission.summerCache.permissionActionByRoles';
|
|
89
|
+
get $onionName(): 'a-permission:permissionActionByRoles';
|
|
90
|
+
get $onionOptions(): IDecoratorSummerCacheOptions;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
export interface SummerCachePermissionUser {
|
|
81
94
|
/** @internal */
|
|
82
95
|
get scope(): ScopeModuleAPermission;
|
|
83
96
|
}
|
|
84
97
|
|
|
85
|
-
export interface
|
|
86
|
-
get $beanFullName(): 'a-permission.summerCache.
|
|
87
|
-
get $onionName(): 'a-permission:
|
|
98
|
+
export interface SummerCachePermissionUser {
|
|
99
|
+
get $beanFullName(): 'a-permission.summerCache.permissionUser';
|
|
100
|
+
get $onionName(): 'a-permission:permissionUser';
|
|
88
101
|
get $onionOptions(): IDecoratorSummerCacheOptions;
|
|
89
102
|
}
|
|
90
103
|
}
|
|
91
104
|
/** summerCache: end */
|
|
92
105
|
/** summerCache: begin */
|
|
93
|
-
import type {
|
|
106
|
+
import type { SummerCachePermissionActionByRoles } from '../bean/summerCache.permissionActionByRoles.ts';
|
|
107
|
+
import type { SummerCachePermissionUser } from '../bean/summerCache.permissionUser.ts';
|
|
94
108
|
export interface IModuleSummerCache {
|
|
95
|
-
'
|
|
109
|
+
'permissionActionByRoles': SummerCachePermissionActionByRoles;
|
|
110
|
+
'permissionUser': SummerCachePermissionUser;
|
|
96
111
|
}
|
|
97
112
|
/** summerCache: end */
|
|
98
113
|
/** dto: begin */
|
|
@@ -4,23 +4,19 @@ import type {
|
|
|
4
4
|
IOpenapiPermissions,
|
|
5
5
|
IResourceRecord,
|
|
6
6
|
} from 'vona-module-a-openapi';
|
|
7
|
-
import type { IGuardOptionsPassport
|
|
8
|
-
import type {
|
|
7
|
+
import type { IGuardOptionsPassport } from 'vona-module-a-user';
|
|
8
|
+
import type { ContextRoute, IRecordResourceNameToRoutePathItem } from 'vona-module-a-web';
|
|
9
9
|
|
|
10
|
-
import {
|
|
10
|
+
import { appResource, BeanBase, beanFullNameFromOnionName } from 'vona';
|
|
11
11
|
import { Bean } from 'vona-module-a-bean';
|
|
12
12
|
import { Caching } from 'vona-module-a-caching';
|
|
13
|
-
import {
|
|
14
|
-
|
|
13
|
+
import {
|
|
14
|
+
composeGuards,
|
|
15
|
+
getCacheControllerRoutes,
|
|
16
|
+
recordResourceNameToRoutePath,
|
|
17
|
+
} from 'vona-module-a-web';
|
|
15
18
|
|
|
16
19
|
const BeanFullNameGuardPassport = beanFullNameFromOnionName('a-user:passport', 'guard');
|
|
17
|
-
const BeanFullNameGuardRoleName = beanFullNameFromOnionName('a-user:roleName', 'guard');
|
|
18
|
-
const BeanFullNameGuardUserName = beanFullNameFromOnionName('a-user:userName', 'guard');
|
|
19
|
-
const BeanFullNamesGuardSupported = new Set<string>([
|
|
20
|
-
BeanFullNameGuardPassport,
|
|
21
|
-
BeanFullNameGuardRoleName,
|
|
22
|
-
BeanFullNameGuardUserName,
|
|
23
|
-
]);
|
|
24
20
|
const GuardOptionsPassportDefault: IGuardOptionsPassport = {
|
|
25
21
|
public: false,
|
|
26
22
|
activated: true,
|
|
@@ -32,10 +28,14 @@ type TGuardMeta = Record<string, unknown>;
|
|
|
32
28
|
@Bean()
|
|
33
29
|
export class BeanPermission extends BeanBase {
|
|
34
30
|
public async clearAllCaches(): Promise<void> {
|
|
35
|
-
const
|
|
36
|
-
beanFullNameFromOnionName('a-permission:
|
|
31
|
+
const cachePermissionUser = this.bean.summer.cache(
|
|
32
|
+
beanFullNameFromOnionName('a-permission:permissionUser', 'summerCache'),
|
|
37
33
|
);
|
|
38
|
-
|
|
34
|
+
const cachePermissionActionByRoles = this.bean.summer.cache(
|
|
35
|
+
beanFullNameFromOnionName('a-permission:permissionActionByRoles', 'summerCache'),
|
|
36
|
+
);
|
|
37
|
+
await cachePermissionUser.clear();
|
|
38
|
+
await cachePermissionActionByRoles.clear();
|
|
39
39
|
}
|
|
40
40
|
|
|
41
41
|
protected retrievePermissionsCacheKey(info: ICachingActionKeyInfo): string {
|
|
@@ -44,21 +44,22 @@ export class BeanPermission extends BeanBase {
|
|
|
44
44
|
return `user:${resource}_${userId}`;
|
|
45
45
|
}
|
|
46
46
|
|
|
47
|
-
protected
|
|
48
|
-
|
|
47
|
+
protected retrievePermissionActionCacheKey(info: ICachingActionKeyInfo): string {
|
|
48
|
+
const [resource, actionKey] = info.args as [keyof IResourceRecord, string];
|
|
49
|
+
const roleIdsKey = this._extractCurrentRoleIdsSorted().join(',') || 'none';
|
|
50
|
+
return `action:${resource}:${actionKey}:roles:${roleIdsKey}`;
|
|
49
51
|
}
|
|
50
52
|
|
|
51
|
-
@Caching.get({
|
|
53
|
+
@Caching.get({
|
|
54
|
+
cacheName: 'a-permission:permissionUser',
|
|
55
|
+
cacheKeyFn: 'retrievePermissionsCacheKey',
|
|
56
|
+
})
|
|
52
57
|
async retrievePermissions(resource: keyof IResourceRecord): Promise<IOpenapiPermissions> {
|
|
53
58
|
return await this.scope.event.retrievePermissions.emit({ resource }, async () => {
|
|
54
59
|
return await this.retrievePermissionsDefault(resource);
|
|
55
60
|
});
|
|
56
61
|
}
|
|
57
62
|
|
|
58
|
-
@Caching.get({
|
|
59
|
-
cacheName: 'a-permission:permission',
|
|
60
|
-
cacheKeyFn: 'retrievePermissionsDefaultCacheKey',
|
|
61
|
-
})
|
|
62
63
|
protected async retrievePermissionsDefault(
|
|
63
64
|
resource: keyof IResourceRecord,
|
|
64
65
|
): Promise<IOpenapiPermissions> {
|
|
@@ -66,67 +67,72 @@ export class BeanPermission extends BeanBase {
|
|
|
66
67
|
}
|
|
67
68
|
|
|
68
69
|
async getPermissionsDefault(resource: keyof IResourceRecord): Promise<IOpenapiPermissions> {
|
|
69
|
-
const routePathInfo: IRecordResourceNameToRoutePathItem =
|
|
70
|
-
recordResourceNameToRoutePath[resource];
|
|
71
|
-
if (!routePathInfo) throw new Error(`not found routePath of resource: ${resource}`);
|
|
72
|
-
const controller = routePathInfo.controller;
|
|
73
|
-
if (!appResource.getBean(controller)) throw new Error('invalid controller');
|
|
74
|
-
const descs = Object.getOwnPropertyDescriptors(controller.prototype);
|
|
75
70
|
const actionsIgnore = this.scope.config.permission.actionsIgnore;
|
|
76
|
-
const
|
|
77
|
-
|
|
71
|
+
const actionRoutes = this._getControllerRoutes(resource).filter(
|
|
72
|
+
route => !actionsIgnore.includes(route.action),
|
|
78
73
|
);
|
|
79
74
|
const permissionsActions: IOpenapiPermissionModeActionActions = {};
|
|
80
|
-
for (const
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
SymbolUseOnionOptionsRouteReal,
|
|
85
|
-
controller.prototype,
|
|
86
|
-
actionKey,
|
|
75
|
+
for (const route of actionRoutes) {
|
|
76
|
+
permissionsActions[route.action] = await this.retrievePermissionAction(
|
|
77
|
+
resource,
|
|
78
|
+
route.action,
|
|
87
79
|
);
|
|
88
|
-
permissionsActions[actionKey] = this._getPermissionOfActionByMetadata(routeReal);
|
|
89
80
|
}
|
|
90
81
|
return { actions: permissionsActions };
|
|
91
82
|
}
|
|
92
83
|
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
84
|
+
public async retrievePermissionAction(
|
|
85
|
+
resource: keyof IResourceRecord,
|
|
86
|
+
actionKey: string,
|
|
87
|
+
): Promise<boolean> {
|
|
88
|
+
const route = this._getControllerActionRoute(resource, actionKey);
|
|
89
|
+
if (!route?.route?.meta) return false;
|
|
90
|
+
if (!this._matchPassportMeta(route.route.meta)) return false;
|
|
91
|
+
return await this.retrievePermissionActionByRoles(resource, actionKey);
|
|
98
92
|
}
|
|
99
93
|
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
94
|
+
@Caching.get({
|
|
95
|
+
cacheName: 'a-permission:permissionActionByRoles',
|
|
96
|
+
cacheKeyFn: 'retrievePermissionActionCacheKey',
|
|
97
|
+
})
|
|
98
|
+
protected async retrievePermissionActionByRoles(
|
|
99
|
+
resource: keyof IResourceRecord,
|
|
100
|
+
actionKey: string,
|
|
101
|
+
): Promise<boolean> {
|
|
102
|
+
const route = this._getControllerActionRoute(resource, actionKey);
|
|
103
|
+
if (!route?.route?.meta) return false;
|
|
104
|
+
return await this._evaluatePermissionAction(route);
|
|
103
105
|
}
|
|
104
106
|
|
|
105
|
-
private
|
|
106
|
-
|
|
107
|
-
|
|
107
|
+
private _getRoutePathInfo(resource: keyof IResourceRecord): IRecordResourceNameToRoutePathItem {
|
|
108
|
+
const routePathInfo = recordResourceNameToRoutePath[resource];
|
|
109
|
+
if (!routePathInfo) throw new Error(`not found routePath of resource: ${resource}`);
|
|
110
|
+
return routePathInfo;
|
|
108
111
|
}
|
|
109
112
|
|
|
110
|
-
private
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
const
|
|
114
|
-
if (!
|
|
115
|
-
|
|
116
|
-
| Partial<IGuardOptionsRoleName>
|
|
117
|
-
| undefined;
|
|
118
|
-
if (!this._matchRoleNameOptions(roleNameOptions)) return false;
|
|
119
|
-
return true;
|
|
113
|
+
private _getControllerRoutes(resource: keyof IResourceRecord): ContextRoute[] {
|
|
114
|
+
const routePathInfo = this._getRoutePathInfo(resource);
|
|
115
|
+
const controller = routePathInfo.controller;
|
|
116
|
+
const beanOptions = appResource.getBean(controller);
|
|
117
|
+
if (!beanOptions) throw new Error('invalid controller');
|
|
118
|
+
return getCacheControllerRoutes(this.app)[beanOptions.beanFullName] ?? [];
|
|
120
119
|
}
|
|
121
120
|
|
|
122
|
-
private
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
121
|
+
private _getControllerActionRoute(
|
|
122
|
+
resource: keyof IResourceRecord,
|
|
123
|
+
actionKey: string,
|
|
124
|
+
): ContextRoute | undefined {
|
|
125
|
+
return this._getControllerRoutes(resource).find(route => route.action === actionKey);
|
|
126
126
|
}
|
|
127
127
|
|
|
128
|
-
private
|
|
129
|
-
|
|
128
|
+
private _extractCurrentRoleIdsSorted(): string[] {
|
|
129
|
+
const roleIds = this.bean.passport.currentRoles?.map(item => String(item.id)) ?? [];
|
|
130
|
+
return Array.from(new Set(roleIds)).sort();
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
private _matchPassportMeta(meta: TGuardMeta): boolean {
|
|
134
|
+
const passportOptions = this._getPassportOptions(meta);
|
|
135
|
+
return this._matchPassportOptions(passportOptions);
|
|
130
136
|
}
|
|
131
137
|
|
|
132
138
|
private _getPassportOptions(meta: TGuardMeta): IGuardOptionsPassport {
|
|
@@ -147,13 +153,21 @@ export class BeanPermission extends BeanBase {
|
|
|
147
153
|
return true;
|
|
148
154
|
}
|
|
149
155
|
|
|
150
|
-
private
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
156
|
+
private async _evaluatePermissionAction(route: ContextRoute): Promise<boolean> {
|
|
157
|
+
const ctx = this.ctx as any;
|
|
158
|
+
const routePrevious = ctx.route;
|
|
159
|
+
const innerAccessPrevious = ctx.innerAccess;
|
|
160
|
+
try {
|
|
161
|
+
ctx.route = route;
|
|
162
|
+
ctx.innerAccess = false;
|
|
163
|
+
const result = await composeGuards(this.app, route)(this.ctx);
|
|
164
|
+
return result !== false;
|
|
165
|
+
} catch (err: any) {
|
|
166
|
+
if ([401, 403].includes(err?.code)) return false;
|
|
167
|
+
throw err;
|
|
168
|
+
} finally {
|
|
169
|
+
ctx.route = routePrevious;
|
|
170
|
+
ctx.innerAccess = innerAccessPrevious;
|
|
171
|
+
}
|
|
158
172
|
}
|
|
159
173
|
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { ISummerCacheGet, TSummerCacheActionOptions } from 'vona-module-a-summer';
|
|
2
|
+
|
|
3
|
+
import { ServiceSummerCacheBase, SummerCache } from 'vona-module-a-summer';
|
|
4
|
+
|
|
5
|
+
export type TSummerCachePermissionActionByRolesKey = any;
|
|
6
|
+
export type TSummerCachePermissionActionByRolesData = any;
|
|
7
|
+
|
|
8
|
+
@SummerCache()
|
|
9
|
+
export class SummerCachePermissionActionByRoles
|
|
10
|
+
extends ServiceSummerCacheBase<
|
|
11
|
+
TSummerCachePermissionActionByRolesKey,
|
|
12
|
+
TSummerCachePermissionActionByRolesData
|
|
13
|
+
>
|
|
14
|
+
implements
|
|
15
|
+
ISummerCacheGet<
|
|
16
|
+
TSummerCachePermissionActionByRolesKey,
|
|
17
|
+
TSummerCachePermissionActionByRolesData
|
|
18
|
+
>
|
|
19
|
+
{
|
|
20
|
+
async getNative(
|
|
21
|
+
_key?: TSummerCachePermissionActionByRolesKey,
|
|
22
|
+
_options?: TSummerCacheActionOptions<
|
|
23
|
+
TSummerCachePermissionActionByRolesKey,
|
|
24
|
+
TSummerCachePermissionActionByRolesData
|
|
25
|
+
>,
|
|
26
|
+
): Promise<TSummerCachePermissionActionByRolesData | undefined> {}
|
|
27
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { ISummerCacheGet, TSummerCacheActionOptions } from 'vona-module-a-summer';
|
|
2
|
+
|
|
3
|
+
import { ServiceSummerCacheBase, SummerCache } from 'vona-module-a-summer';
|
|
4
|
+
|
|
5
|
+
export type TSummerCachePermissionUserKey = any;
|
|
6
|
+
export type TSummerCachePermissionUserData = any;
|
|
7
|
+
|
|
8
|
+
@SummerCache()
|
|
9
|
+
export class SummerCachePermissionUser
|
|
10
|
+
extends ServiceSummerCacheBase<TSummerCachePermissionUserKey, TSummerCachePermissionUserData>
|
|
11
|
+
implements ISummerCacheGet<TSummerCachePermissionUserKey, TSummerCachePermissionUserData>
|
|
12
|
+
{
|
|
13
|
+
async getNative(
|
|
14
|
+
_key?: TSummerCachePermissionUserKey,
|
|
15
|
+
_options?: TSummerCacheActionOptions<
|
|
16
|
+
TSummerCachePermissionUserKey,
|
|
17
|
+
TSummerCachePermissionUserData
|
|
18
|
+
>,
|
|
19
|
+
): Promise<TSummerCachePermissionUserData | undefined> {}
|
|
20
|
+
}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
import type { ISummerCacheGet, TSummerCacheActionOptions } from 'vona-module-a-summer';
|
|
2
|
-
import { ServiceSummerCacheBase } from 'vona-module-a-summer';
|
|
3
|
-
export type TSummerCachePermissionKey = any;
|
|
4
|
-
export type TSummerCachePermissionData = any;
|
|
5
|
-
export declare class SummerCachePermission extends ServiceSummerCacheBase<TSummerCachePermissionKey, TSummerCachePermissionData> implements ISummerCacheGet<TSummerCachePermissionKey, TSummerCachePermissionData> {
|
|
6
|
-
getNative(_key?: TSummerCachePermissionKey, _options?: TSummerCacheActionOptions<TSummerCachePermissionKey, TSummerCachePermissionData>): Promise<TSummerCachePermissionData | undefined>;
|
|
7
|
-
}
|
|
8
|
-
//# sourceMappingURL=summerCache.permission.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"summerCache.permission.d.ts","sourceRoot":"","sources":["../../src/bean/summerCache.permission.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AAEvF,OAAO,EAAE,sBAAsB,EAAe,MAAM,sBAAsB,CAAC;AAE3E,MAAM,MAAM,yBAAyB,GAAG,GAAG,CAAC;AAC5C,MAAM,MAAM,0BAA0B,GAAG,GAAG,CAAC;AAE7C,qBACa,qBACX,SAAQ,sBAAsB,CAAC,yBAAyB,EAAE,0BAA0B,CACpF,YAAW,eAAe,CAAC,yBAAyB,EAAE,0BAA0B,CAAC;IAE3E,SAAS,CACb,IAAI,CAAC,EAAE,yBAAyB,EAChC,QAAQ,CAAC,EAAE,yBAAyB,CAAC,yBAAyB,EAAE,0BAA0B,CAAC,GAC1F,OAAO,CAAC,0BAA0B,GAAG,SAAS,CAAC;CACnD"}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
import type { ISummerCacheGet, TSummerCacheActionOptions } from 'vona-module-a-summer';
|
|
2
|
-
|
|
3
|
-
import { ServiceSummerCacheBase, SummerCache } from 'vona-module-a-summer';
|
|
4
|
-
|
|
5
|
-
export type TSummerCachePermissionKey = any;
|
|
6
|
-
export type TSummerCachePermissionData = any;
|
|
7
|
-
|
|
8
|
-
@SummerCache({ preset: 'mem' })
|
|
9
|
-
export class SummerCachePermission
|
|
10
|
-
extends ServiceSummerCacheBase<TSummerCachePermissionKey, TSummerCachePermissionData>
|
|
11
|
-
implements ISummerCacheGet<TSummerCachePermissionKey, TSummerCachePermissionData>
|
|
12
|
-
{
|
|
13
|
-
async getNative(
|
|
14
|
-
_key?: TSummerCachePermissionKey,
|
|
15
|
-
_options?: TSummerCacheActionOptions<TSummerCachePermissionKey, TSummerCachePermissionData>,
|
|
16
|
-
): Promise<TSummerCachePermissionData | undefined> {}
|
|
17
|
-
}
|