@lenne.tech/nest-server 11.5.0 → 11.6.1
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/core/common/decorators/graphql-populate.decorator.d.ts +2 -2
- package/dist/core/common/interceptors/check-security.interceptor.js +4 -3
- package/dist/core/common/interceptors/check-security.interceptor.js.map +1 -1
- package/dist/core/modules/auth/services/core-auth.service.d.ts +10 -5
- package/dist/core/modules/auth/services/core-auth.service.js +20 -12
- package/dist/core/modules/auth/services/core-auth.service.js.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +29 -36
- package/src/core/common/interceptors/check-security.interceptor.ts +6 -5
- package/src/core/modules/auth/services/core-auth.service.ts +43 -19
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export declare const GraphQLPopulate: (...dataOrPipes: (import("@nestjs/common").PipeTransform<any, any> |
|
|
1
|
+
export declare const GraphQLPopulate: (...dataOrPipes: (import("@nestjs/common").PipeTransform<any, any> | {
|
|
2
2
|
gqlPath?: string;
|
|
3
3
|
ignoreSelections?: boolean;
|
|
4
|
-
})[]) => ParameterDecorator;
|
|
4
|
+
} | import("@nestjs/common").Type<import("@nestjs/common").PipeTransform<any, any>>)[]) => ParameterDecorator;
|
|
@@ -33,7 +33,8 @@ let CheckSecurityInterceptor = class CheckSecurityInterceptor {
|
|
|
33
33
|
const user = (0, context_helper_1.getContextData)(context)?.currentUser || null;
|
|
34
34
|
let force = false;
|
|
35
35
|
if (!user) {
|
|
36
|
-
|
|
36
|
+
const className = context.getClass()?.name;
|
|
37
|
+
if (className === 'AuthResolver' || className === 'AuthController') {
|
|
37
38
|
force = true;
|
|
38
39
|
}
|
|
39
40
|
}
|
|
@@ -60,7 +61,7 @@ let CheckSecurityInterceptor = class CheckSecurityInterceptor {
|
|
|
60
61
|
return response;
|
|
61
62
|
}
|
|
62
63
|
if (data && typeof data === 'object') {
|
|
63
|
-
const writeable = !Object.keys(data).find(key => !Object.getOwnPropertyDescriptor(data, key).writable);
|
|
64
|
+
const writeable = !Object.keys(data).find((key) => !Object.getOwnPropertyDescriptor(data, key).writable);
|
|
64
65
|
if (!writeable) {
|
|
65
66
|
return data;
|
|
66
67
|
}
|
|
@@ -68,7 +69,7 @@ let CheckSecurityInterceptor = class CheckSecurityInterceptor {
|
|
|
68
69
|
return (0, input_helper_1.processDeep)(data, (item) => {
|
|
69
70
|
if (!item || typeof item !== 'object' || typeof item.securityCheck !== 'function') {
|
|
70
71
|
if (Array.isArray(item)) {
|
|
71
|
-
return item.filter(i => i !== undefined);
|
|
72
|
+
return item.filter((i) => i !== undefined);
|
|
72
73
|
}
|
|
73
74
|
return item;
|
|
74
75
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"check-security.interceptor.js","sourceRoot":"","sources":["../../../../src/core/common/interceptors/check-security.interceptor.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA4F;AAE5F,8CAAqC;AAErC,8DAA2D;AAC3D,oDAAoD;AACpD,0DAAsD;AACtD,+DAA2D;AAMpD,IAAM,wBAAwB,GAA9B,MAAM,wBAAwB;IAMnC,YAA6B,aAA4B;QAA5B,kBAAa,GAAb,aAAa,CAAe;QALzD,WAAM,GAAG;YACP,KAAK,EAAE,KAAK;YACZ,kBAAkB,EAAE,IAAI;SACzB,CAAC;QAGA,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,mCAAmC,CAAC,CAAC;QACjG,IAAI,OAAO,aAAa,KAAK,QAAQ,EAAE,CAAC;YACtC,IAAI,CAAC,MAAM,GAAG,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,aAAa,EAAE,CAAC;QACrD,CAAC;IACH,CAAC;IAED,SAAS,CAAC,OAAyB,EAAE,IAAiB;QAEpD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAGzB,MAAM,IAAI,GAAG,IAAA,+BAAc,EAAC,OAAO,CAAC,EAAE,WAAW,IAAI,IAAI,CAAC;QAG1D,IAAI,KAAK,GAAG,KAAK,CAAC;QAClB,IAAI,CAAC,IAAI,EAAE,CAAC;YAGV,
|
|
1
|
+
{"version":3,"file":"check-security.interceptor.js","sourceRoot":"","sources":["../../../../src/core/common/interceptors/check-security.interceptor.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,6 +7,14 @@ import { CoreAuthSignUpInput } from '../inputs/core-auth-sign-up.input';
|
|
|
7
7
|
import { ICoreAuthUser } from '../interfaces/core-auth-user.interface';
|
|
8
8
|
import { JwtPayload } from '../interfaces/jwt-payload.interface';
|
|
9
9
|
import { CoreAuthUserService } from './core-auth-user.service';
|
|
10
|
+
export interface GetResultOptions {
|
|
11
|
+
currentRefreshToken?: string;
|
|
12
|
+
data?: {
|
|
13
|
+
[key: string]: any;
|
|
14
|
+
deviceId?: string;
|
|
15
|
+
};
|
|
16
|
+
serviceOptions?: ServiceOptions;
|
|
17
|
+
}
|
|
10
18
|
export declare class CoreAuthService {
|
|
11
19
|
protected readonly userService: CoreAuthUserService;
|
|
12
20
|
protected readonly jwtService: JwtService;
|
|
@@ -16,14 +24,11 @@ export declare class CoreAuthService {
|
|
|
16
24
|
logout(tokenOrRefreshToken: string, serviceOptions: ServiceOptions & {
|
|
17
25
|
allDevices?: boolean;
|
|
18
26
|
}): Promise<boolean>;
|
|
19
|
-
refreshTokens(user: ICoreAuthUser, currentRefreshToken: string): Promise<CoreAuthModel>;
|
|
27
|
+
refreshTokens(user: ICoreAuthUser, currentRefreshToken: string, serviceOptions?: ServiceOptions): Promise<CoreAuthModel>;
|
|
20
28
|
signIn(input: CoreAuthSignInInput, serviceOptions?: ServiceOptions): Promise<CoreAuthModel>;
|
|
21
29
|
signUp(input: CoreAuthSignUpInput, serviceOptions?: ServiceOptions): Promise<CoreAuthModel>;
|
|
22
30
|
validateUser(payload: JwtPayload): Promise<any>;
|
|
23
|
-
protected getResult(user: ICoreAuthUser,
|
|
24
|
-
[key: string]: any;
|
|
25
|
-
deviceId?: string;
|
|
26
|
-
}, currentRefreshToken?: string): Promise<CoreAuthModel>;
|
|
31
|
+
protected getResult(user: ICoreAuthUser, options?: GetResultOptions): Promise<CoreAuthModel>;
|
|
27
32
|
protected getSecretFromConfig(refresh?: boolean): any;
|
|
28
33
|
protected createTokens(userId: string, data?: {
|
|
29
34
|
[key: string]: any;
|
|
@@ -47,13 +47,14 @@ let CoreAuthService = class CoreAuthService {
|
|
|
47
47
|
await this.userService.update(user.id, { refreshTokens: user.refreshTokens }, serviceOptions);
|
|
48
48
|
return true;
|
|
49
49
|
}
|
|
50
|
-
async refreshTokens(user, currentRefreshToken) {
|
|
50
|
+
async refreshTokens(user, currentRefreshToken, serviceOptions) {
|
|
51
51
|
const { deviceDescription, deviceId } = this.decodeJwt(currentRefreshToken);
|
|
52
52
|
const tokens = await this.createTokens(user.id, { deviceDescription, deviceId });
|
|
53
53
|
tokens.refreshToken = await this.updateRefreshToken(user, currentRefreshToken, tokens.refreshToken);
|
|
54
|
-
return
|
|
55
|
-
|
|
56
|
-
|
|
54
|
+
return this.getResult(user, {
|
|
55
|
+
currentRefreshToken,
|
|
56
|
+
data: { deviceDescription, deviceId },
|
|
57
|
+
serviceOptions: { ...serviceOptions, currentUser: user },
|
|
57
58
|
});
|
|
58
59
|
}
|
|
59
60
|
async signIn(input, serviceOptions) {
|
|
@@ -72,7 +73,10 @@ let CoreAuthService = class CoreAuthService {
|
|
|
72
73
|
if (!((await bcrypt.compare(password, user.password)) || (await bcrypt.compare((0, js_sha256_1.sha256)(password), user.password)))) {
|
|
73
74
|
throw new common_1.UnauthorizedException('Wrong password');
|
|
74
75
|
}
|
|
75
|
-
return this.getResult(user, {
|
|
76
|
+
return this.getResult(user, {
|
|
77
|
+
data: { deviceDescription, deviceId },
|
|
78
|
+
serviceOptions: { ...serviceOptions, currentUser: user },
|
|
79
|
+
});
|
|
76
80
|
}
|
|
77
81
|
async signUp(input, serviceOptions) {
|
|
78
82
|
const serviceOptionsForUserService = (0, service_helper_1.prepareServiceOptions)(serviceOptions, {
|
|
@@ -84,7 +88,10 @@ let CoreAuthService = class CoreAuthService {
|
|
|
84
88
|
throw new common_1.BadRequestException('Email address already in use');
|
|
85
89
|
}
|
|
86
90
|
const { deviceDescription, deviceId } = input;
|
|
87
|
-
return this.getResult(user, {
|
|
91
|
+
return this.getResult(user, {
|
|
92
|
+
data: { deviceDescription, deviceId },
|
|
93
|
+
serviceOptions: { ...serviceOptions, currentUser: user },
|
|
94
|
+
});
|
|
88
95
|
}
|
|
89
96
|
catch (err) {
|
|
90
97
|
if (err?.message === 'Unprocessable Entity') {
|
|
@@ -101,12 +108,13 @@ let CoreAuthService = class CoreAuthService {
|
|
|
101
108
|
}
|
|
102
109
|
return user;
|
|
103
110
|
}
|
|
104
|
-
async getResult(user,
|
|
111
|
+
async getResult(user, options) {
|
|
112
|
+
const { currentRefreshToken, data, serviceOptions } = options || {};
|
|
105
113
|
const tokens = await this.createTokens(user.id, data);
|
|
106
114
|
tokens.refreshToken = await this.updateRefreshToken(user, currentRefreshToken, tokens.refreshToken, data);
|
|
107
115
|
return core_auth_model_1.CoreAuthModel.map({
|
|
108
116
|
...tokens,
|
|
109
|
-
user: await this.userService.prepareOutput(user),
|
|
117
|
+
user: await this.userService.prepareOutput(user, serviceOptions),
|
|
110
118
|
});
|
|
111
119
|
}
|
|
112
120
|
getSecretFromConfig(refresh) {
|
|
@@ -114,10 +122,10 @@ let CoreAuthService = class CoreAuthService {
|
|
|
114
122
|
if (refresh) {
|
|
115
123
|
path += '.refresh';
|
|
116
124
|
}
|
|
117
|
-
return (this.configService.getFastButReadOnly(`${path}.signInOptions.secret`)
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
125
|
+
return (this.configService.getFastButReadOnly(`${path}.signInOptions.secret`) ||
|
|
126
|
+
this.configService.getFastButReadOnly(`${path}.signInOptions.secretOrPrivateKey`) ||
|
|
127
|
+
this.configService.getFastButReadOnly(`${path}.secret`) ||
|
|
128
|
+
this.configService.getFastButReadOnly(`${path}.secretOrPrivateKey`));
|
|
121
129
|
}
|
|
122
130
|
async createTokens(userId, data) {
|
|
123
131
|
const sameTokenIdPeriod = this.configService.getFastButReadOnly('jwt.sameTokenIdPeriod', 0);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"core-auth.service.js","sourceRoot":"","sources":["../../../../../src/core/modules/auth/services/core-auth.service.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAAwF;AACxF,qCAAyC;AACzC,iCAAkC;AAClC,mCAAoC;AACpC,yCAAmC;AAEnC,iEAAiE;AACjE,2EAA+E;AAE/E,4EAAwE;AACxE,wDAAmD;AAKnD,qEAA+D;
|
|
1
|
+
{"version":3,"file":"core-auth.service.js","sourceRoot":"","sources":["../../../../../src/core/modules/auth/services/core-auth.service.ts"],"names":[],"mappings":"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"}
|