@hugo.ye/common 1.0.139 → 1.0.141
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/decorators/verify-access.decorator.js +1 -1
- package/build/decorators/verify-access.decorator.js.map +1 -1
- package/build/guards/verify-access.guard.d.ts.map +1 -1
- package/build/guards/verify-access.guard.js +3 -8
- package/build/guards/verify-access.guard.js.map +1 -1
- package/build/utils/security.d.ts +17 -0
- package/build/utils/security.d.ts.map +1 -1
- package/build/utils/security.js +35 -0
- package/build/utils/security.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { VERIFY_ACCESS_KEY } from
|
|
1
|
+
import { VERIFY_ACCESS_KEY } from "../constants/global.js";
|
|
2
2
|
import { SetMetadata } from '@nestjs/common';
|
|
3
3
|
export const VerifyAccess = (...permissions) => SetMetadata(VERIFY_ACCESS_KEY, permissions);
|
|
4
4
|
//# sourceMappingURL=verify-access.decorator.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verify-access.decorator.js","sourceRoot":"","sources":["../../src/decorators/verify-access.decorator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"verify-access.decorator.js","sourceRoot":"","sources":["../../src/decorators/verify-access.decorator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,GAAG,WAAqB,EAAE,EAAE,CACvD,WAAW,CAAC,iBAAiB,EAAE,WAAW,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verify-access.guard.d.ts","sourceRoot":"","sources":["../../src/guards/verify-access.guard.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,KAAK,WAAW,EAChB,KAAK,gBAAgB,EACtB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAGzC,qBACa,iBAAkB,YAAW,WAAW;IACvC,OAAO,CAAC,SAAS;gBAAT,SAAS,EAAE,SAAS;IAExC,WAAW,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO;
|
|
1
|
+
{"version":3,"file":"verify-access.guard.d.ts","sourceRoot":"","sources":["../../src/guards/verify-access.guard.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,KAAK,WAAW,EAChB,KAAK,gBAAgB,EACtB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAGzC,qBACa,iBAAkB,YAAW,WAAW;IACvC,OAAO,CAAC,SAAS;gBAAT,SAAS,EAAE,SAAS;IAExC,WAAW,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO;CAoChD"}
|
|
@@ -10,7 +10,7 @@ var __metadata = (this && this.__metadata) || function (k, v) {
|
|
|
10
10
|
// guards/verify-access.guard.ts
|
|
11
11
|
import { Injectable, UnauthorizedException, } from '@nestjs/common';
|
|
12
12
|
import { Reflector } from '@nestjs/core';
|
|
13
|
-
import {
|
|
13
|
+
import { hasAnyPermission, VERIFY_ACCESS_KEY } from '../index.js';
|
|
14
14
|
let VerifyAccessGuard = class VerifyAccessGuard {
|
|
15
15
|
reflector;
|
|
16
16
|
constructor(reflector) {
|
|
@@ -31,13 +31,8 @@ let VerifyAccessGuard = class VerifyAccessGuard {
|
|
|
31
31
|
if (!user) {
|
|
32
32
|
throw new UnauthorizedException('请先登陆');
|
|
33
33
|
}
|
|
34
|
-
//
|
|
35
|
-
const
|
|
36
|
-
const access = userPermissions
|
|
37
|
-
? flattenNestedPermissions(userPermissions)
|
|
38
|
-
: {};
|
|
39
|
-
// 检查是否有所需权限
|
|
40
|
-
const hasPermission = requiredPermissions.some((permission) => access[permission]);
|
|
34
|
+
// 使用 PermissionService 检查权限
|
|
35
|
+
const hasPermission = hasAnyPermission(user.permissions, requiredPermissions);
|
|
41
36
|
if (!hasPermission) {
|
|
42
37
|
throw new UnauthorizedException(`权限不足,需要以下权限之一: ${requiredPermissions.join(', ')}`);
|
|
43
38
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verify-access.guard.js","sourceRoot":"","sources":["../../src/guards/verify-access.guard.ts"],"names":[],"mappings":";;;;;;;;;AAAA,gCAAgC;AAChC,OAAO,EACL,UAAU,EACV,qBAAqB,GAGtB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"verify-access.guard.js","sourceRoot":"","sources":["../../src/guards/verify-access.guard.ts"],"names":[],"mappings":";;;;;;;;;AAAA,gCAAgC;AAChC,OAAO,EACL,UAAU,EACV,qBAAqB,GAGtB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAG3D,IAAM,iBAAiB,GAAvB,MAAM,iBAAiB;IACR;IAApB,YAAoB,SAAoB;QAApB,cAAS,GAAT,SAAS,CAAW;IAAG,CAAC;IAE5C,WAAW,CAAC,OAAyB;QACnC,cAAc;QACd,MAAM,mBAAmB,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAC5C,iBAAiB,EACjB,OAAO,CAAC,UAAU,EAAE,CACrB,CAAC;QAEF,IAAI,CAAC,mBAAmB,IAAI,mBAAmB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC7D,OAAO,IAAI,CAAC,CAAC,cAAc;QAC7B,CAAC;QAED,OAAO;QACP,MAAM,IAAI,GACR,OAAO,CAAC,OAAO,EAAE,KAAK,MAAM;YAC1B,CAAC,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC,UAAU,EAAE,CAAC,IAAI;YAC1C,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI;gBACxC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC;gBACnD,CAAC,CAAC,IAAI,CAAC;QAEb,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,IAAI,qBAAqB,CAAC,MAAM,CAAC,CAAC;QAC1C,CAAC;QAED,4BAA4B;QAC5B,MAAM,aAAa,GAAG,gBAAgB,CACpC,IAAI,CAAC,WAAW,EAChB,mBAAmB,CACpB,CAAC;QAEF,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,MAAM,IAAI,qBAAqB,CAC7B,kBAAkB,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACnD,CAAC;QACJ,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;CACF,CAAA;AAvCY,iBAAiB;IAD7B,UAAU,EAAE;qCAEoB,SAAS;GAD7B,iBAAiB,CAuC7B"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { RoleEntity } from '../models/index.js';
|
|
1
2
|
export declare function hashPassword(password: string): Promise<string>;
|
|
2
3
|
export declare function verifyPassword(password: string, hashPassword: string): Promise<boolean>;
|
|
3
4
|
export declare const encodeUidSignature: (uid: string, signature: string, JWT_SECRET: string) => string;
|
|
@@ -5,4 +6,20 @@ export declare const decodeUidSignature: (uidSignature: string, JWT_SECRET: stri
|
|
|
5
6
|
export declare const createPostSignature: (data: any, JWT_SECRET: string) => any;
|
|
6
7
|
export declare const getSignature: (pepper: string, ...strings: string[]) => any;
|
|
7
8
|
export declare const verifySignature: (papper: string, signature: string, ...strings: string[]) => boolean;
|
|
9
|
+
/**
|
|
10
|
+
* 从角色中提取权限
|
|
11
|
+
*/
|
|
12
|
+
export declare function extractPermissions(roles: RoleEntity[]): Record<string, boolean>;
|
|
13
|
+
/**
|
|
14
|
+
* 检查用户是否有权限
|
|
15
|
+
*/
|
|
16
|
+
export declare function hasPermission(permissions: Record<string, boolean>, requiredPermission: string): boolean;
|
|
17
|
+
/**
|
|
18
|
+
* 检查用户是否有任一权限
|
|
19
|
+
*/
|
|
20
|
+
export declare function hasAnyPermission(permissions: Record<string, boolean>, requiredPermissions: string[]): boolean;
|
|
21
|
+
/**
|
|
22
|
+
* 检查用户是否有所有权限
|
|
23
|
+
*/
|
|
24
|
+
export declare function hasAllPermissions(permissions: Record<string, boolean>, requiredPermissions: string[]): boolean;
|
|
8
25
|
//# sourceMappingURL=security.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"security.d.ts","sourceRoot":"","sources":["../../src/utils/security.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"security.d.ts","sourceRoot":"","sources":["../../src/utils/security.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAG9C,wBAAsB,YAAY,CAAC,QAAQ,EAAE,MAAM,mBAGlD;AAED,wBAAsB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,oBAG1E;AAED,eAAO,MAAM,kBAAkB,GAC7B,KAAK,MAAM,EACX,WAAW,MAAM,EACjB,YAAY,MAAM,WAKnB,CAAC;AACF,eAAO,MAAM,kBAAkB,GAC7B,cAAc,MAAM,EACpB,YAAY,MAAM,WAInB,CAAC;AACF,eAAO,MAAM,mBAAmB,GAAI,MAAM,GAAG,EAAE,YAAY,MAAM,QAYhE,CAAC;AAEF,eAAO,MAAM,YAAY,GAAI,QAAQ,MAAM,EAAE,GAAG,SAAS,MAAM,EAAE,QAIhE,CAAA;AAED,eAAO,MAAM,eAAe,GAAI,QAAQ,MAAM,EAAE,WAAW,MAAM,EAAE,GAAG,SAAS,MAAM,EAAE,YAMtF,CAAA;AACC;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,UAAU,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAgB/E;AAED;;GAEG;AACH,wBAAgB,aAAa,CAC3B,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACpC,kBAAkB,EAAE,MAAM,GACzB,OAAO,CAET;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACpC,mBAAmB,EAAE,MAAM,EAAE,GAC5B,OAAO,CAET;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACpC,mBAAmB,EAAE,MAAM,EAAE,GAC5B,OAAO,CAET"}
|
package/build/utils/security.js
CHANGED
|
@@ -43,4 +43,39 @@ export const verifySignature = (papper, signature, ...strings) => {
|
|
|
43
43
|
else
|
|
44
44
|
return false;
|
|
45
45
|
};
|
|
46
|
+
/**
|
|
47
|
+
* 从角色中提取权限
|
|
48
|
+
*/
|
|
49
|
+
export function extractPermissions(roles) {
|
|
50
|
+
const permissions = {};
|
|
51
|
+
if (!Array.isArray(roles)) {
|
|
52
|
+
return permissions;
|
|
53
|
+
}
|
|
54
|
+
roles.forEach((role) => {
|
|
55
|
+
if (role.permissions && Array.isArray(role.permissions)) {
|
|
56
|
+
role.permissions.forEach((permission) => {
|
|
57
|
+
permissions[permission.action] = true;
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
return permissions;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* 检查用户是否有权限
|
|
65
|
+
*/
|
|
66
|
+
export function hasPermission(permissions, requiredPermission) {
|
|
67
|
+
return permissions[requiredPermission] === true;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* 检查用户是否有任一权限
|
|
71
|
+
*/
|
|
72
|
+
export function hasAnyPermission(permissions, requiredPermissions) {
|
|
73
|
+
return requiredPermissions.some((perm) => permissions[perm] === true);
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* 检查用户是否有所有权限
|
|
77
|
+
*/
|
|
78
|
+
export function hasAllPermissions(permissions, requiredPermissions) {
|
|
79
|
+
return requiredPermissions.every((perm) => permissions[perm] === true);
|
|
80
|
+
}
|
|
46
81
|
//# sourceMappingURL=security.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"security.js","sourceRoot":"","sources":["../../src/utils/security.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"security.js","sourceRoot":"","sources":["../../src/utils/security.ts"],"names":[],"mappings":"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"}
|