@hugo.ye/common 1.0.134 → 1.0.135
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/build/auth/jwt-auth.guard.d.ts.map +1 -1
- package/build/auth/jwt-auth.guard.js +19 -7
- package/build/auth/jwt-auth.guard.js.map +1 -1
- package/build/utils/tool.d.ts +2 -0
- package/build/utils/tool.d.ts.map +1 -1
- package/build/utils/tool.js +20 -8
- package/build/utils/tool.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jwt-auth.guard.d.ts","sourceRoot":"","sources":["../../src/auth/jwt-auth.guard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,WAAW,EAAkB,KAAK,gBAAgB,EAAyB,MAAM,gBAAgB,CAAC;AAEhH,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,UAAU,EAA4B,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"jwt-auth.guard.d.ts","sourceRoot":"","sources":["../../src/auth/jwt-auth.guard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,WAAW,EAAkB,KAAK,gBAAgB,EAAyB,MAAM,gBAAgB,CAAC;AAEhH,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,UAAU,EAA4B,MAAM,MAAM,CAAC;AAgB5D,qBAAa,YAAa,YAAW,WAAW;IAGlB,OAAO,CAAC,QAAQ,CAAC,WAAW;IAClD,OAAO,CAAC,QAAQ,CAAC,SAAS;IAH9B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiC;gBAEb,WAAW,EAAE,WAAW,EAC9C,SAAS,EAAE,SAAS;IAEzC,WAAW,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;CA6B3F"}
|
|
@@ -12,10 +12,21 @@ var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
|
12
12
|
};
|
|
13
13
|
var JwtAuthGuard_1;
|
|
14
14
|
import { Logger, Inject, UnauthorizedException } from '@nestjs/common';
|
|
15
|
-
import { AUTH_PATTERN, AUTH_SERVICE, RoleEntity } from '../index.js';
|
|
15
|
+
import { AUTH_PATTERN, AUTH_SERVICE, flattenNestedPermissions, RoleEntity, UserEntity } from '../index.js';
|
|
16
16
|
import { ClientProxy } from '@nestjs/microservices';
|
|
17
17
|
import { Reflector } from '@nestjs/core';
|
|
18
18
|
import { Observable, tap, map, of, catchError } from 'rxjs';
|
|
19
|
+
const checkUserPermission = (user, accessPermissions) => {
|
|
20
|
+
const userPermissions = user.roles?.map((role) => role.permissions?.map((permission) => ({ [permission.action]: true })));
|
|
21
|
+
const access = userPermissions
|
|
22
|
+
? flattenNestedPermissions(userPermissions)
|
|
23
|
+
: {};
|
|
24
|
+
for (const permission of accessPermissions) {
|
|
25
|
+
if (access[permission])
|
|
26
|
+
return true;
|
|
27
|
+
}
|
|
28
|
+
throw new UnauthorizedException('权限不足');
|
|
29
|
+
};
|
|
19
30
|
let JwtAuthGuard = JwtAuthGuard_1 = class JwtAuthGuard {
|
|
20
31
|
clientProxy;
|
|
21
32
|
reflector;
|
|
@@ -34,12 +45,13 @@ let JwtAuthGuard = JwtAuthGuard_1 = class JwtAuthGuard {
|
|
|
34
45
|
authentication: jwt
|
|
35
46
|
}).pipe(tap((res) => {
|
|
36
47
|
if (roles) {
|
|
37
|
-
for (const role of roles) {
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
}
|
|
48
|
+
// for (const role of roles) {
|
|
49
|
+
// if (!res.roles?.map((role: RoleEntity) => role.name).includes(role)) {
|
|
50
|
+
// this.logger.error('The user does not valid role');
|
|
51
|
+
// throw new UnauthorizedException('The user does not valid role')
|
|
52
|
+
// }
|
|
53
|
+
// }
|
|
54
|
+
return checkUserPermission(res, roles);
|
|
43
55
|
}
|
|
44
56
|
context.switchToHttp().getRequest().user = res;
|
|
45
57
|
}), map(() => true), catchError((err) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jwt-auth.guard.js","sourceRoot":"","sources":["../../src/auth/jwt-auth.guard.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,OAAO,EAAoB,MAAM,EAAE,MAAM,EAAyB,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAChH,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"jwt-auth.guard.js","sourceRoot":"","sources":["../../src/auth/jwt-auth.guard.ts"],"names":[],"mappings":"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"}
|
package/build/utils/tool.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { UserEntity } from '../models/index.js';
|
|
1
2
|
export declare const isNumeric: (value: unknown) => boolean;
|
|
2
3
|
export declare const convertToNumber: <T>(input: T) => T;
|
|
3
4
|
export declare const merge: <T>(sort?: "asc" | "desc" | "none", ...args: T[][] | [T[][]]) => T[];
|
|
@@ -7,4 +8,5 @@ export declare function arrayRemoveByIndex<T>(arr: T[], index: number): T[];
|
|
|
7
8
|
export declare const mergeObjects: (...objects: Record<string, any>[]) => Record<string, any>;
|
|
8
9
|
export declare const flattenIndexedObject: (items: Record<string, boolean>[] | Record<string, Record<string, boolean>>) => Record<string, boolean>;
|
|
9
10
|
export declare const flattenNestedPermissions: (nestedPermissions: (Record<string, boolean>[] | undefined)[]) => Record<string, boolean>;
|
|
11
|
+
export declare const checkUserPermission: (user: UserEntity, accessPermissions: string[]) => boolean;
|
|
10
12
|
//# sourceMappingURL=tool.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool.d.ts","sourceRoot":"","sources":["../../src/utils/tool.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"tool.d.ts","sourceRoot":"","sources":["../../src/utils/tool.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAc,UAAU,EAAE,MAAM,aAAa,CAAC;AAG1D,eAAO,MAAM,SAAS,GAAI,OAAO,OAAO,KAAG,OAK1C,CAAC;AAEF,eAAO,MAAM,eAAe,GAAI,CAAC,EAAE,OAAO,CAAC,KAAG,CA0B7C,CAAC;AAiBF,eAAO,MAAM,KAAK,GAAI,CAAC,EACrB,OAAO,KAAK,GAAG,MAAM,GAAG,MAAM,EAC9B,GAAG,MAAM,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,KACvB,CAAC,EAeH,CAAC;AAIF,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,EAAE,CAE7D;AASD,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,EACnD,GAAG,EAAE,CAAC,EAAE,EACR,GAAG,EAAE,CAAC,EACN,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,GACV,CAAC,EAAE,CAEL;AAID,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,CAAC,EAAE,CAElE;AASD,eAAO,MAAM,YAAY,GACvB,GAAG,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,KAChC,MAAM,CAAC,MAAM,EAAE,GAAG,CAEpB,CAAC;AAUF,eAAO,MAAM,oBAAoB,GAC/B,OAAO,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,KACzE,MAAM,CAAC,MAAM,EAAE,OAAO,CAcxB,CAAC;AASF,eAAO,MAAM,wBAAwB,GACnC,mBAAmB,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,SAAS,CAAC,EAAE,KAC3D,MAAM,CAAC,MAAM,EAAE,OAAO,CAKxB,CAAC;AAGF,eAAO,MAAM,mBAAmB,GAC9B,MAAM,UAAU,EAChB,mBAAmB,MAAM,EAAE,YAY5B,CAAC"}
|
package/build/utils/tool.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
// 判断值是否为数字
|
|
2
2
|
export const isNumeric = (value) => {
|
|
3
|
-
if (typeof value ===
|
|
3
|
+
if (typeof value === 'number')
|
|
4
4
|
return Number.isFinite(value);
|
|
5
|
-
if (typeof value ===
|
|
5
|
+
if (typeof value === 'string')
|
|
6
6
|
return !isNaN(parseFloat(value)) && isFinite(Number(value));
|
|
7
7
|
return false;
|
|
8
8
|
};
|
|
@@ -12,7 +12,7 @@ export const convertToNumber = (input) => {
|
|
|
12
12
|
if (input === null || input === undefined)
|
|
13
13
|
return input;
|
|
14
14
|
// 处理字符串
|
|
15
|
-
if (typeof input ===
|
|
15
|
+
if (typeof input === 'string') {
|
|
16
16
|
const num = Number(input);
|
|
17
17
|
return (isNaN(num) ? input : num);
|
|
18
18
|
}
|
|
@@ -21,7 +21,7 @@ export const convertToNumber = (input) => {
|
|
|
21
21
|
return input.map((item) => convertToNumber(item));
|
|
22
22
|
}
|
|
23
23
|
// 处理对象
|
|
24
|
-
if (typeof input ===
|
|
24
|
+
if (typeof input === 'object') {
|
|
25
25
|
const result = {};
|
|
26
26
|
for (const key in input) {
|
|
27
27
|
result[key] = convertToNumber(input[key]);
|
|
@@ -48,12 +48,12 @@ export const merge = (sort, ...args) => {
|
|
|
48
48
|
? args[0]
|
|
49
49
|
: args;
|
|
50
50
|
const unique = [...new Set(arrays.flat())];
|
|
51
|
-
if (sort !==
|
|
51
|
+
if (sort !== 'none') {
|
|
52
52
|
return unique.sort((a, b) => {
|
|
53
|
-
if (typeof a ===
|
|
54
|
-
return sort ===
|
|
53
|
+
if (typeof a === 'number' && typeof b === 'number') {
|
|
54
|
+
return sort === 'asc' ? a - b : b - a; // 数字升序
|
|
55
55
|
}
|
|
56
|
-
return sort ===
|
|
56
|
+
return sort === 'asc'
|
|
57
57
|
? String(a).localeCompare(String(b))
|
|
58
58
|
: String(b).localeCompare(String(a)); // 字符串字母排序
|
|
59
59
|
});
|
|
@@ -121,4 +121,16 @@ export const flattenNestedPermissions = (nestedPermissions) => {
|
|
|
121
121
|
.flat() // 展平嵌套数组
|
|
122
122
|
.reduce((acc, obj) => ({ ...acc, ...obj }), {});
|
|
123
123
|
};
|
|
124
|
+
// 权限验证
|
|
125
|
+
export const checkUserPermission = (user, accessPermissions) => {
|
|
126
|
+
const userPermissions = user.roles?.map((role) => role.permissions?.map((permission) => ({ [permission.action]: true })));
|
|
127
|
+
const access = userPermissions
|
|
128
|
+
? flattenNestedPermissions(userPermissions)
|
|
129
|
+
: {};
|
|
130
|
+
for (const permission of accessPermissions) {
|
|
131
|
+
if (access[permission])
|
|
132
|
+
return true;
|
|
133
|
+
}
|
|
134
|
+
return false;
|
|
135
|
+
};
|
|
124
136
|
//# sourceMappingURL=tool.js.map
|
package/build/utils/tool.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool.js","sourceRoot":"","sources":["../../src/utils/tool.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"tool.js","sourceRoot":"","sources":["../../src/utils/tool.ts"],"names":[],"mappings":"AAEA,WAAW;AACX,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,KAAc,EAAW,EAAE;IACnD,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC7D,IAAI,OAAO,KAAK,KAAK,QAAQ;QAC3B,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,IAAI,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IAC9D,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AACF,WAAW;AACX,MAAM,CAAC,MAAM,eAAe,GAAG,CAAI,KAAQ,EAAK,EAAE;IAChD,sBAAsB;IACtB,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IAExD,QAAQ;IACR,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;QAC1B,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAM,CAAC;IACzC,CAAC;IAED,OAAO;IACP,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,CAAM,CAAC;IACzD,CAAC;IAED,OAAO;IACP,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,MAAM,GAAQ,EAAE,CAAC;QACvB,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE,CAAC;YACxB,MAAM,CAAC,GAAG,CAAC,GAAG,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;QAC5C,CAAC;QACD,OAAO,MAAW,CAAC;IACrB,CAAC;IAED,WAAW;IACX,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAEF,OAAO;AACP,6CAA6C;AAC7C,qCAAqC;AAErC,OAAO;AACP,oCAAoC;AACpC,gBAAgB;AAEhB,QAAQ;AACR,6CAA6C;AAC7C,uBAAuB;AAEvB,OAAO;AACP,qCAAqC;AACrC,4BAA4B;AAC5B,MAAM,CAAC,MAAM,KAAK,GAAG,CACnB,IAA8B,EAC9B,GAAG,IAAqB,EACnB,EAAE;IACP,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACtC,CAAC,CAAE,IAAI,CAAC,CAAC,CAAW;QACpB,CAAC,CAAE,IAAc,CAAC;IACpB,MAAM,MAAM,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAC3C,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;QACpB,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YAC1B,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;gBACnD,OAAO,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO;YAChD,CAAC;YACD,OAAO,IAAI,KAAK,KAAK;gBACnB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;gBACpC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU;QACpD,CAAC,CAAC,CAAC;IACL,CAAC;;QAAM,OAAO,MAAM,CAAC;AACvB,CAAC,CAAC;AAEF,WAAW;AACX,2DAA2D;AAC3D,MAAM,UAAU,kBAAkB,CAAI,GAAQ,EAAE,KAAQ;IACtD,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC;AAC9C,CAAC;AAED,sBAAsB;AACtB,kBAAkB;AAClB,yCAAyC;AACzC,yCAAyC;AACzC,yCAAyC;AACzC,KAAK;AACL,mCAAmC;AACnC,MAAM,UAAU,gBAAgB,CAC9B,GAAQ,EACR,GAAM,EACN,KAAW;IAEX,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,CAAC;AACnD,CAAC;AAED,QAAQ;AACR,mDAAmD;AACnD,MAAM,UAAU,kBAAkB,CAAI,GAAQ,EAAE,KAAa;IAC3D,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC;AAC3C,CAAC;AAED,6DAA6D;AAC7D,+BAA+B;AAC/B,oBAAoB;AACpB,0BAA0B;AAC1B,mBAAmB;AACnB,KAAK;AACL,uEAAuE;AACvE,MAAM,CAAC,MAAM,YAAY,GAAG,CAC1B,GAAG,OAA8B,EACZ,EAAE;IACvB,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,OAAO,CAAC,CAAC;AACvC,CAAC,CAAC;AAEF,6DAA6D;AAC7D,wCAAwC;AACxC,yBAAyB;AACzB,+BAA+B;AAC/B,yBAAyB;AACzB,MAAM;AACN,uBAAuB;AACvB,+CAA+C;AAC/C,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAClC,KAA0E,EACjD,EAAE;IAC3B,aAAa;IACb,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC,MAAM,CACjB,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,CAAC,EAClC,EAA6B,CAC9B,CAAC;IACJ,CAAC;IAED,2BAA2B;IAC3B,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAChC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,CAAC,EAClC,EAA6B,CAC9B,CAAC;AACJ,CAAC,CAAC;AACF,6DAA6D;AAC7D,4CAA4C;AAC5C,4CAA4C;AAC5C,eAAe;AACf,sBAAsB;AACtB,MAAM;AACN,uBAAuB;AACvB,+CAA+C;AAC/C,MAAM,CAAC,MAAM,wBAAwB,GAAG,CACtC,iBAA4D,EACnC,EAAE;IAC3B,OAAO,iBAAiB;SACrB,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,eAAe;SAClD,IAAI,EAAE,CAAC,SAAS;SAChB,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,GAAG,EAAE,CAAC,EAAE,EAA6B,CAAC,CAAC;AAC/E,CAAC,CAAC;AAEF,OAAO;AACP,MAAM,CAAC,MAAM,mBAAmB,GAAG,CACjC,IAAgB,EAChB,iBAA2B,EAC3B,EAAE;IACF,MAAM,eAAe,GAAG,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,IAAgB,EAAE,EAAE,CAC3D,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CACvE,CAAC;IACF,MAAM,MAAM,GAAG,eAAe;QAC5B,CAAC,CAAC,wBAAwB,CAAC,eAAe,CAAC;QAC3C,CAAC,CAAC,EAAE,CAAC;IACP,KAAK,MAAM,UAAU,IAAI,iBAAiB,EAAE,CAAC;QAC3C,IAAI,MAAM,CAAC,UAAU,CAAC;YAAE,OAAO,IAAI,CAAC;IACtC,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC,CAAC"}
|