@bearei/server-common 0.0.216 → 0.0.217
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/access/access.guard.js +2 -2
- package/dist/access/access.guard.js.map +1 -1
- package/dist/authentication/authentication.service.d.ts +2 -2
- package/dist/authentication/authentication.service.js +16 -2
- package/dist/authentication/authentication.service.js.map +1 -1
- package/dist/external/external.interface.d.ts +16 -2
- package/dist/external/external.service.d.ts +4 -4
- package/dist/external/external.service.js +6 -6
- package/dist/external/external.service.js.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +1 -1
|
@@ -46,7 +46,7 @@ let AccessGuard = class AccessGuard {
|
|
|
46
46
|
message: 'Authentication token is not found.'
|
|
47
47
|
})(exception_1.HTTP_EXCEPTION.UNAUTHORIZED);
|
|
48
48
|
}
|
|
49
|
-
const
|
|
49
|
+
const validatePayload = (request) => {
|
|
50
50
|
const validateInternalSignature = (value) => {
|
|
51
51
|
if (!value) {
|
|
52
52
|
(0, exception_1.throwHTTPException)({
|
|
@@ -78,7 +78,7 @@ let AccessGuard = class AccessGuard {
|
|
|
78
78
|
return Boolean(subject);
|
|
79
79
|
};
|
|
80
80
|
};
|
|
81
|
-
return this.jwtService.verifyAsync(token).then(
|
|
81
|
+
return this.jwtService.verifyAsync(token).then(validatePayload(request)(requiredAccesses));
|
|
82
82
|
}
|
|
83
83
|
};
|
|
84
84
|
exports.AccessGuard = AccessGuard;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"access.guard.js","sourceRoot":"","sources":["../../src/access/access.guard.ts"],"names":[],"mappings":";;;;;;;;;;;;AACA,2CAAyC;AACzC,2CAA4C;AAC5C,uCAAsC;AACtC,8CAA6C;AAC7C,4CAAoF;AAGpF,gCAAiC;AACjC,oCAAwD;AACxD,+CAAoC;AAI7B,IAAM,WAAW,GAAjB,MAAM,WAAW;IAEL;IACA;IACA;IAHlB,YACkB,aAA4B,EAC5B,UAAsB,EACtB,SAAoB;QAFpB,kBAAa,GAAb,aAAa,CAAe;QAC5B,eAAU,GAAV,UAAU,CAAY;QACtB,cAAS,GAAT,SAAS,CAAW;IACnC,CAAC;IAEJ,WAAW,CAAC,OAAyB;QACpC,MAAM,gBAAgB,GAAyB,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC,4BAAe,EAAE;YAChG,OAAO,CAAC,QAAQ,EAAE;YAClB,OAAO,CAAC,UAAU,EAAE;SACpB,CAAC,CAAA;QAEF,MAAM,UAAU,GAAG,gBAAgB,EAAE,QAAQ,CAAC,oBAAM,CAAC,SAAS,CAAC,CAAA;QAE/D,IAAI,UAAU,EAAE,CAAC;YAChB,OAAO,IAAI,CAAA;QACZ,CAAC;QAED,MAAM,OAAO,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,UAAU,EAAe,CAAA;QAChE,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAA;QAC/B,MAAM,aAAa,GAClB,OAAO,CAAC,6BAA6B,CAAC,CAAC,CAAC,CAAC,6BAA6B,CAAC,CAAC,CAAC,eAAe,CAAA;QAEzF,MAAM,KAAK,GAAG,IAAA,0BAAkB,EAAC,OAAO,CAAC,CAAC,aAAa,CAAC,CAAA;QAExD,IAAI,CAAC,KAAK,EAAE,CAAC;YACZ,IAAA,8BAAkB,EAAC;gBAClB,IAAI,EAAE,+BAAmB,CAAC,kBAAkB;gBAC5C,OAAO,EAAE,oCAAoC;aAC7C,CAAC,CAAC,0BAAc,CAAC,YAAY,CAAC,CAAA;QAChC,CAAC;QAED,MAAM,
|
|
1
|
+
{"version":3,"file":"access.guard.js","sourceRoot":"","sources":["../../src/access/access.guard.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,6 +4,6 @@ import type { AuthenticationPermissionsOptions, AuthenticationSubscriptionFeatur
|
|
|
4
4
|
export declare class AuthenticationService {
|
|
5
5
|
private readonly externalService;
|
|
6
6
|
constructor(externalService: ExternalService);
|
|
7
|
-
authenticationPermissions(headers: RequestHeaders): (options: AuthenticationPermissionsOptions) => Promise<
|
|
8
|
-
authenticationSubscriptionFeatures(headers: RequestHeaders): (options: AuthenticationSubscriptionFeaturesOptions) => Promise<
|
|
7
|
+
authenticationPermissions(headers: RequestHeaders): ({ userId, ...options }: AuthenticationPermissionsOptions) => Promise<void>;
|
|
8
|
+
authenticationSubscriptionFeatures(headers: RequestHeaders): ({ userId, ...options }: AuthenticationSubscriptionFeaturesOptions) => Promise<void>;
|
|
9
9
|
}
|
|
@@ -11,6 +11,7 @@ var __metadata = (this && this.__metadata) || function (k, v) {
|
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
12
|
exports.AuthenticationService = void 0;
|
|
13
13
|
const common_1 = require("@nestjs/common");
|
|
14
|
+
const exception_1 = require("../exception");
|
|
14
15
|
const external_1 = require("../external");
|
|
15
16
|
let AuthenticationService = class AuthenticationService {
|
|
16
17
|
externalService;
|
|
@@ -18,10 +19,23 @@ let AuthenticationService = class AuthenticationService {
|
|
|
18
19
|
this.externalService = externalService;
|
|
19
20
|
}
|
|
20
21
|
authenticationPermissions(headers) {
|
|
21
|
-
return async (options) =>
|
|
22
|
+
return async ({ userId, ...options }) => {
|
|
23
|
+
const { results: permissions } = await this.externalService.authenticationUserPermissions(headers)({ ...options, size: 1024 })(userId);
|
|
24
|
+
if (!permissions.length) {
|
|
25
|
+
(0, exception_1.throwHTTPException)({ message: 'No permission to access the current resource.' })(exception_1.HTTP_EXCEPTION.FORBIDDEN);
|
|
26
|
+
}
|
|
27
|
+
};
|
|
22
28
|
}
|
|
23
29
|
authenticationSubscriptionFeatures(headers) {
|
|
24
|
-
return async (options) =>
|
|
30
|
+
return async ({ userId, ...options }) => {
|
|
31
|
+
const { results: features } = await this.externalService.authenticationUserSubscriptionFeatures(headers)({ ...options, size: 1024 })(userId);
|
|
32
|
+
if (!features.length) {
|
|
33
|
+
(0, exception_1.throwHTTPException)({
|
|
34
|
+
code: exception_1.HTTP_EXCEPTION_CODE.NOT_SUBSCRIBED,
|
|
35
|
+
message: 'No subscription to the current resource.'
|
|
36
|
+
})(exception_1.HTTP_EXCEPTION.FORBIDDEN);
|
|
37
|
+
}
|
|
38
|
+
};
|
|
25
39
|
}
|
|
26
40
|
};
|
|
27
41
|
exports.AuthenticationService = AuthenticationService;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"authentication.service.js","sourceRoot":"","sources":["../../src/authentication/authentication.service.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAAyC;AAEzC,0CAA2C;AAOpC,IAAM,qBAAqB,GAA3B,MAAM,qBAAqB;IACJ;IAA7B,YAA6B,eAAgC;QAAhC,oBAAe,GAAf,eAAe,CAAiB;IAAG,CAAC;IAEjE,yBAAyB,CAAC,OAAuB;QAChD,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"authentication.service.js","sourceRoot":"","sources":["../../src/authentication/authentication.service.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAAyC;AAEzC,4CAAoF;AACpF,0CAA2C;AAOpC,IAAM,qBAAqB,GAA3B,MAAM,qBAAqB;IACJ;IAA7B,YAA6B,eAAgC;QAAhC,oBAAe,GAAf,eAAe,CAAiB;IAAG,CAAC;IAEjE,yBAAyB,CAAC,OAAuB;QAChD,OAAO,KAAK,EAAE,EAAC,MAAM,EAAE,GAAG,OAAO,EAAmC,EAAE,EAAE;YACvE,MAAM,EAAC,OAAO,EAAE,WAAW,EAAC,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,6BAA6B,CACtF,OAAO,CACP,CAAC,EAAC,GAAG,OAAO,EAAE,IAAI,EAAE,IAAI,EAAC,CAAC,CAAC,MAAM,CAAC,CAAA;YAEnC,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC;gBACzB,IAAA,8BAAkB,EAAC,EAAC,OAAO,EAAE,+CAA+C,EAAC,CAAC,CAC7E,0BAAc,CAAC,SAAS,CACxB,CAAA;YACF,CAAC;QACF,CAAC,CAAA;IACF,CAAC;IAED,kCAAkC,CAAC,OAAuB;QACzD,OAAO,KAAK,EAAE,EAAC,MAAM,EAAE,GAAG,OAAO,EAA4C,EAAE,EAAE;YAChF,MAAM,EAAC,OAAO,EAAE,QAAQ,EAAC,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,sCAAsC,CAC5F,OAAO,CACP,CAAC,EAAC,GAAG,OAAO,EAAE,IAAI,EAAE,IAAI,EAAC,CAAC,CAAC,MAAM,CAAC,CAAA;YAEnC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;gBACtB,IAAA,8BAAkB,EAAC;oBAClB,IAAI,EAAE,+BAAmB,CAAC,cAAc;oBACxC,OAAO,EAAE,0CAA0C;iBACnD,CAAC,CAAC,0BAAc,CAAC,SAAS,CAAC,CAAA;YAC7B,CAAC;QACF,CAAC,CAAA;IACF,CAAC;CACD,CAAA;AA/BY,sDAAqB;gCAArB,qBAAqB;IADjC,IAAA,mBAAU,GAAE;qCAEkC,0BAAe;GADjD,qBAAqB,CA+BjC"}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import type { AxiosRequestConfig } from 'axios';
|
|
2
|
+
import { IndexDTO } from '../app.dto';
|
|
3
|
+
import { CommonEntity } from '../app.entity';
|
|
2
4
|
import type { Action, ActionResult, RequestHeaders } from '../app.interface';
|
|
3
5
|
import type { Permission } from '../permission';
|
|
4
6
|
import type { SubscriptionFeature } from '../subscription-feature';
|
|
@@ -20,12 +22,12 @@ export interface CreateExternalActionLogOptions {
|
|
|
20
22
|
result: ActionResult;
|
|
21
23
|
serviceName: string;
|
|
22
24
|
}
|
|
23
|
-
export interface AuthenticationExternalPermissionsOptions {
|
|
25
|
+
export interface AuthenticationExternalPermissionsOptions extends IndexDTO {
|
|
24
26
|
domainId: string;
|
|
25
27
|
keys: Permission[];
|
|
26
28
|
userId: string;
|
|
27
29
|
}
|
|
28
|
-
export interface AuthenticationExternalSubscriptionFeaturesOptions {
|
|
30
|
+
export interface AuthenticationExternalSubscriptionFeaturesOptions extends IndexDTO {
|
|
29
31
|
domainId: string;
|
|
30
32
|
keys: SubscriptionFeature[];
|
|
31
33
|
userId: string;
|
|
@@ -54,3 +56,15 @@ export interface RequestError {
|
|
|
54
56
|
};
|
|
55
57
|
};
|
|
56
58
|
}
|
|
59
|
+
export interface PermissionEntity extends CommonEntity {
|
|
60
|
+
domainId: string;
|
|
61
|
+
resourceId: string;
|
|
62
|
+
protected: boolean;
|
|
63
|
+
key: Permission;
|
|
64
|
+
description: string;
|
|
65
|
+
}
|
|
66
|
+
export interface FeatureEntity extends CommonEntity {
|
|
67
|
+
domainId: string;
|
|
68
|
+
key: SubscriptionFeature;
|
|
69
|
+
description: string;
|
|
70
|
+
}
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import { HttpService } from '@nestjs/axios';
|
|
2
2
|
import { ConfigService } from '@nestjs/config';
|
|
3
|
-
import type { RequestHeaders } from '../app.interface';
|
|
3
|
+
import type { FindResult, RequestHeaders } from '../app.interface';
|
|
4
4
|
import { JWTService } from '../jwt';
|
|
5
|
-
import type { AuthenticationExternalPermissionsOptions, AuthenticationExternalSubscriptionFeaturesOptions,
|
|
5
|
+
import type { AuthenticationExternalPermissionsOptions, AuthenticationExternalSubscriptionFeaturesOptions, CreateExternalActionLogOptions, FeatureEntity, PermissionEntity, RequestOptions } from './external.interface';
|
|
6
6
|
export declare class ExternalService {
|
|
7
7
|
private readonly configService;
|
|
8
8
|
private readonly httpService;
|
|
9
9
|
private readonly jwtService;
|
|
10
10
|
constructor(configService: ConfigService, httpService: HttpService, jwtService: JWTService);
|
|
11
|
-
authenticationUserPermissions(headers: RequestHeaders): (options: AuthenticationExternalPermissionsOptions) => Promise<
|
|
12
|
-
authenticationUserSubscriptionFeatures(headers: RequestHeaders): (options: AuthenticationExternalSubscriptionFeaturesOptions) => Promise<
|
|
11
|
+
authenticationUserPermissions(headers: RequestHeaders): (options: Omit<AuthenticationExternalPermissionsOptions, "userId">) => (id: string) => Promise<FindResult<PermissionEntity>>;
|
|
12
|
+
authenticationUserSubscriptionFeatures(headers: RequestHeaders): (options: Omit<AuthenticationExternalSubscriptionFeaturesOptions, "userId">) => (id: string) => Promise<FindResult<FeatureEntity>>;
|
|
13
13
|
createActionLog(headers: RequestHeaders): ({ action, serviceName, ...restOptions }: CreateExternalActionLogOptions) => Promise<any>;
|
|
14
14
|
request({ async, baseURL, headers, method, params, path, serviceName, timeout, version, ...restOptions }: RequestOptions): Promise<any>;
|
|
15
15
|
}
|
|
@@ -27,21 +27,21 @@ let ExternalService = class ExternalService {
|
|
|
27
27
|
this.jwtService = jwtService;
|
|
28
28
|
}
|
|
29
29
|
authenticationUserPermissions(headers) {
|
|
30
|
-
return async (
|
|
30
|
+
return (options) => async (id) => this.request({
|
|
31
31
|
headers,
|
|
32
32
|
method: 'GET',
|
|
33
33
|
params: options,
|
|
34
|
-
path:
|
|
35
|
-
serviceName: 'bearei-
|
|
34
|
+
path: `/users/${id}/permissions`,
|
|
35
|
+
serviceName: 'bearei-permission'
|
|
36
36
|
});
|
|
37
37
|
}
|
|
38
38
|
authenticationUserSubscriptionFeatures(headers) {
|
|
39
|
-
return async (
|
|
39
|
+
return (options) => async (id) => this.request({
|
|
40
40
|
headers,
|
|
41
41
|
method: 'GET',
|
|
42
42
|
params: options,
|
|
43
|
-
path:
|
|
44
|
-
serviceName: 'bearei-
|
|
43
|
+
path: `/users/${id}/features`,
|
|
44
|
+
serviceName: 'bearei-subscription'
|
|
45
45
|
});
|
|
46
46
|
}
|
|
47
47
|
createActionLog(headers) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"external.service.js","sourceRoot":"","sources":["../../src/external/external.service.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,yCAAyC;AACzC,2CAAyC;AACzC,2CAA4C;AAC5C,+BAA+C;AAE/C,4CAAoF;AACpF,gCAAiC;AACjC,oCAA6B;
|
|
1
|
+
{"version":3,"file":"external.service.js","sourceRoot":"","sources":["../../src/external/external.service.ts"],"names":[],"mappings":"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"}
|