@smartsoft001/auth-domain 1.1.71 → 1.1.75
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/package.json +16 -16
- package/src/lib/entities/user.entity.js +2 -3
- package/src/lib/entities/user.entity.js.map +1 -1
- package/src/lib/feature-create-token/interfaces.d.ts +1 -1
- package/src/lib/feature-create-token/token.config.js +2 -3
- package/src/lib/feature-create-token/token.config.js.map +1 -1
- package/src/lib/feature-create-token/token.factory.js +58 -60
- package/src/lib/feature-create-token/token.factory.js.map +1 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@smartsoft001/auth-domain",
|
|
3
|
-
"version": "1.1.
|
|
3
|
+
"version": "1.1.75",
|
|
4
4
|
"description": "Utils to authorization",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -13,13 +13,13 @@
|
|
|
13
13
|
"nestjs"
|
|
14
14
|
],
|
|
15
15
|
"dependencies": {
|
|
16
|
-
"@angular/common": "
|
|
17
|
-
"@angular/core": "
|
|
18
|
-
"@angular/platform-browser-dynamic": "
|
|
19
|
-
"@nestjs/axios": "
|
|
20
|
-
"@nestjs/common": "
|
|
21
|
-
"@nestjs/jwt": "^
|
|
22
|
-
"@nestjs/typeorm": "^
|
|
16
|
+
"@angular/common": "16.1.3",
|
|
17
|
+
"@angular/core": "16.1.3",
|
|
18
|
+
"@angular/platform-browser-dynamic": "16.1.3",
|
|
19
|
+
"@nestjs/axios": "3.0.0",
|
|
20
|
+
"@nestjs/common": "^10.0.5",
|
|
21
|
+
"@nestjs/jwt": "^10.1.0",
|
|
22
|
+
"@nestjs/typeorm": "^10.0.0",
|
|
23
23
|
"express": "4.18.2",
|
|
24
24
|
"flatted": "^3.2.4",
|
|
25
25
|
"guid-typescript": "1.0.9",
|
|
@@ -27,17 +27,17 @@
|
|
|
27
27
|
"md5": "2.3.0",
|
|
28
28
|
"reflect-metadata": "0.1.13",
|
|
29
29
|
"rxjs": "7.8.1",
|
|
30
|
-
"typeorm": "0.
|
|
30
|
+
"typeorm": "0.3.17"
|
|
31
31
|
},
|
|
32
32
|
"peerDependencies": {
|
|
33
|
-
"@smartsoft001/domain-core": "1.1.
|
|
34
|
-
"@smartsoft001/fb": "1.1.
|
|
35
|
-
"@smartsoft001/google": "1.1.
|
|
36
|
-
"@smartsoft001/models": "1.1.
|
|
37
|
-
"@smartsoft001/users": "1.1.
|
|
38
|
-
"@smartsoft001/utils": "1.1.
|
|
33
|
+
"@smartsoft001/domain-core": "1.1.75",
|
|
34
|
+
"@smartsoft001/fb": "1.1.75",
|
|
35
|
+
"@smartsoft001/google": "1.1.75",
|
|
36
|
+
"@smartsoft001/models": "1.1.75",
|
|
37
|
+
"@smartsoft001/users": "1.1.75",
|
|
38
|
+
"@smartsoft001/utils": "1.1.75",
|
|
39
39
|
"util": "0.12.5",
|
|
40
|
-
"tslib": "2.
|
|
40
|
+
"tslib": "2.5.3"
|
|
41
41
|
},
|
|
42
42
|
"main": "./src/index.js",
|
|
43
43
|
"types": "./src/index.d.ts"
|
|
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.User = void 0;
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
5
|
const typeorm_1 = require("typeorm");
|
|
6
|
-
let User = class User {
|
|
6
|
+
let User = exports.User = class User {
|
|
7
7
|
};
|
|
8
8
|
tslib_1.__decorate([
|
|
9
9
|
(0, typeorm_1.PrimaryGeneratedColumn)(),
|
|
@@ -41,8 +41,7 @@ tslib_1.__decorate([
|
|
|
41
41
|
(0, typeorm_1.Column)("googleUserId"),
|
|
42
42
|
tslib_1.__metadata("design:type", String)
|
|
43
43
|
], User.prototype, "googleUserId", void 0);
|
|
44
|
-
User = tslib_1.__decorate([
|
|
44
|
+
exports.User = User = tslib_1.__decorate([
|
|
45
45
|
(0, typeorm_1.Entity)('users')
|
|
46
46
|
], User);
|
|
47
|
-
exports.User = User;
|
|
48
47
|
//# sourceMappingURL=user.entity.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"user.entity.js","sourceRoot":"","sources":["../../../../../../../libs/auth/domain/src/lib/entities/user.entity.ts"],"names":[],"mappings":";;;;AAAA,qCAA+D;AAMxD,IAAM,IAAI,
|
|
1
|
+
{"version":3,"file":"user.entity.js","sourceRoot":"","sources":["../../../../../../../libs/auth/domain/src/lib/entities/user.entity.ts"],"names":[],"mappings":";;;;AAAA,qCAA+D;AAMxD,IAAM,IAAI,kBAAV,MAAM,IAAI;CA6BhB,CAAA;AA1BG;IADC,IAAA,gCAAsB,GAAE;;gCACd;AAGX;IADC,IAAA,gBAAM,EAAC,aAAa,CAAC;sCACT,KAAK;yCAAS;AAG3B;IADC,IAAA,gBAAM,EAAC,UAAU,CAAC;;sCACF;AAGjB;IADC,IAAA,gBAAM,EAAC,UAAU,CAAC;;sCACF;AAGjB;IADC,IAAA,gBAAM,EAAC,UAAU,CAAC;;sCACD;AAGlB;IADC,IAAA,gBAAM,EAAC,eAAe,CAAC;sCACT,IAAI;2CAAC;AAGpB;IADC,IAAA,gBAAM,EAAC,kBAAkB,CAAC;;8CACF;AAGzB;IADC,IAAA,gBAAM,EAAC,gBAAgB,CAAC;;4CACD;AAGxB;IADC,IAAA,gBAAM,EAAC,cAAc,CAAC;;0CACD;eA3Bb,IAAI;IADhB,IAAA,gBAAM,EAAC,OAAO,CAAC;GACH,IAAI,CA6BhB"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { IUserCredentials } from "@smartsoft001/users";
|
|
2
|
-
export
|
|
2
|
+
export type IAuthTokenRequest = IAuthTokenRequestPassword | IAuthTokenRequestRefreshToken | IAuthTokenRequestCustom | IAuthTokenRequestFb | IAuthTokenRequestGoogle;
|
|
3
3
|
export interface IAuthTokenRequestFb extends IUserCredentials {
|
|
4
4
|
grant_type: "fb";
|
|
5
5
|
fb_token: string;
|
|
@@ -3,13 +3,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.TokenConfig = void 0;
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
5
|
const common_1 = require("@nestjs/common");
|
|
6
|
-
let TokenConfig = class TokenConfig {
|
|
6
|
+
let TokenConfig = exports.TokenConfig = class TokenConfig {
|
|
7
7
|
constructor() {
|
|
8
8
|
this.clients = [];
|
|
9
9
|
}
|
|
10
10
|
};
|
|
11
|
-
TokenConfig = tslib_1.__decorate([
|
|
11
|
+
exports.TokenConfig = TokenConfig = tslib_1.__decorate([
|
|
12
12
|
(0, common_1.Injectable)()
|
|
13
13
|
], TokenConfig);
|
|
14
|
-
exports.TokenConfig = TokenConfig;
|
|
15
14
|
//# sourceMappingURL=token.config.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"token.config.js","sourceRoot":"","sources":["../../../../../../../libs/auth/domain/src/lib/feature-create-token/token.config.ts"],"names":[],"mappings":";;;;AAAA,2CAA0C;AAGnC,IAAM,WAAW,
|
|
1
|
+
{"version":3,"file":"token.config.js","sourceRoot":"","sources":["../../../../../../../libs/auth/domain/src/lib/feature-create-token/token.config.ts"],"names":[],"mappings":";;;;AAAA,2CAA0C;AAGnC,IAAM,WAAW,yBAAjB,MAAM,WAAW;IAAjB;QAEH,YAAO,GAAkB,EAAE,CAAC;IAEhC,CAAC;CAAA,CAAA;sBAJY,WAAW;IADvB,IAAA,mBAAU,GAAE;GACA,WAAW,CAIvB"}
|
|
@@ -14,7 +14,7 @@ const fb_1 = require("@smartsoft001/fb");
|
|
|
14
14
|
const google_1 = require("@smartsoft001/google");
|
|
15
15
|
const user_entity_1 = require("../entities/user.entity");
|
|
16
16
|
const token_config_1 = require("./token.config");
|
|
17
|
-
let TokenFactory = TokenFactory_1 = class TokenFactory {
|
|
17
|
+
let TokenFactory = exports.TokenFactory = TokenFactory_1 = class TokenFactory {
|
|
18
18
|
constructor(config, repository, jwtService, fbService, googleService) {
|
|
19
19
|
this.config = config;
|
|
20
20
|
this.repository = repository;
|
|
@@ -44,59 +44,60 @@ let TokenFactory = TokenFactory_1 = class TokenFactory {
|
|
|
44
44
|
if (user.disabled)
|
|
45
45
|
throw new domain_core_1.DomainValidationError("user disabled");
|
|
46
46
|
}
|
|
47
|
-
create(options) {
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
options.request.
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
options.request.
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
user,
|
|
71
|
-
});
|
|
72
|
-
}
|
|
73
|
-
const refreshToken = guid_typescript_1.Guid.raw();
|
|
74
|
-
yield this.repository.update(Object.assign(Object.assign({}, query), { disabled: { $ne: true } }), {
|
|
75
|
-
lastLoginDate: new Date(),
|
|
76
|
-
authRefreshToken: refreshToken,
|
|
47
|
+
async create(options) {
|
|
48
|
+
if (options.request.grant_type === 'fb') {
|
|
49
|
+
options.request.fb_user_id =
|
|
50
|
+
await this.fbService.getUserId(options.request.fb_token);
|
|
51
|
+
}
|
|
52
|
+
if (options.request.grant_type === 'google') {
|
|
53
|
+
options.request.google_user_id =
|
|
54
|
+
await this.googleService.getUserId(options.request.google_token);
|
|
55
|
+
}
|
|
56
|
+
this.valid(options.request);
|
|
57
|
+
const query = TokenFactory_1.getQuery(options.request, !!options.userProvider);
|
|
58
|
+
const user = options.userProvider
|
|
59
|
+
? await options.userProvider.get(query, options.request, options.httpReq)
|
|
60
|
+
: await this.repository.findOne(query);
|
|
61
|
+
if (!options.validationProvider || !options.validationProvider.replace) {
|
|
62
|
+
this.checkUser(options.request, user);
|
|
63
|
+
TokenFactory_1.checkDisabled(user);
|
|
64
|
+
await this.checkPassword(options.request, user);
|
|
65
|
+
}
|
|
66
|
+
if (options.validationProvider) {
|
|
67
|
+
await options.validationProvider.check({
|
|
68
|
+
request: options.request,
|
|
69
|
+
user,
|
|
77
70
|
});
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
httpReq: options.httpReq
|
|
87
|
-
});
|
|
88
|
-
}
|
|
89
|
-
return {
|
|
90
|
-
expired_in: this.config.expiredIn,
|
|
91
|
-
token_type: "bearer",
|
|
92
|
-
access_token: this.jwtService.sign(payload, {
|
|
93
|
-
expiresIn: this.config.expiredIn,
|
|
94
|
-
subject: user.username,
|
|
95
|
-
}),
|
|
96
|
-
refresh_token: refreshToken,
|
|
97
|
-
username: user.username
|
|
98
|
-
};
|
|
71
|
+
}
|
|
72
|
+
const refreshToken = guid_typescript_1.Guid.raw();
|
|
73
|
+
await this.repository.update({
|
|
74
|
+
...query,
|
|
75
|
+
disabled: { $ne: true },
|
|
76
|
+
}, {
|
|
77
|
+
lastLoginDate: new Date(),
|
|
78
|
+
authRefreshToken: refreshToken,
|
|
99
79
|
});
|
|
80
|
+
const payload = {
|
|
81
|
+
permissions: user.permissions,
|
|
82
|
+
scope: options.request.scope,
|
|
83
|
+
};
|
|
84
|
+
if (options.payloadProvider) {
|
|
85
|
+
await options.payloadProvider.change(payload, {
|
|
86
|
+
user,
|
|
87
|
+
request: options.request,
|
|
88
|
+
httpReq: options.httpReq
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
return {
|
|
92
|
+
expired_in: this.config.expiredIn,
|
|
93
|
+
token_type: "bearer",
|
|
94
|
+
access_token: this.jwtService.sign(payload, {
|
|
95
|
+
expiresIn: this.config.expiredIn,
|
|
96
|
+
subject: user.username,
|
|
97
|
+
}),
|
|
98
|
+
refresh_token: refreshToken,
|
|
99
|
+
username: user.username
|
|
100
|
+
};
|
|
100
101
|
}
|
|
101
102
|
checkUser(config, user) {
|
|
102
103
|
if (!user)
|
|
@@ -104,12 +105,10 @@ let TokenFactory = TokenFactory_1 = class TokenFactory {
|
|
|
104
105
|
? this._invalidUsernameOrPasswordMessage
|
|
105
106
|
: "Invalid token");
|
|
106
107
|
}
|
|
107
|
-
checkPassword(config, user) {
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
throw new domain_core_1.DomainValidationError(this._invalidUsernameOrPasswordMessage);
|
|
112
|
-
});
|
|
108
|
+
async checkPassword(config, user) {
|
|
109
|
+
if (config.grant_type === "password" &&
|
|
110
|
+
!(await utils_1.PasswordService.compare(config.password, user.password)))
|
|
111
|
+
throw new domain_core_1.DomainValidationError(this._invalidUsernameOrPasswordMessage);
|
|
113
112
|
}
|
|
114
113
|
valid(req) {
|
|
115
114
|
if (!req)
|
|
@@ -147,7 +146,7 @@ let TokenFactory = TokenFactory_1 = class TokenFactory {
|
|
|
147
146
|
}
|
|
148
147
|
}
|
|
149
148
|
};
|
|
150
|
-
TokenFactory = TokenFactory_1 = tslib_1.__decorate([
|
|
149
|
+
exports.TokenFactory = TokenFactory = TokenFactory_1 = tslib_1.__decorate([
|
|
151
150
|
(0, common_1.Injectable)(),
|
|
152
151
|
tslib_1.__param(1, (0, typeorm_2.InjectRepository)(user_entity_1.User)),
|
|
153
152
|
tslib_1.__metadata("design:paramtypes", [token_config_1.TokenConfig,
|
|
@@ -156,5 +155,4 @@ TokenFactory = TokenFactory_1 = tslib_1.__decorate([
|
|
|
156
155
|
fb_1.FbService,
|
|
157
156
|
google_1.GoogleService])
|
|
158
157
|
], TokenFactory);
|
|
159
|
-
exports.TokenFactory = TokenFactory;
|
|
160
158
|
//# sourceMappingURL=token.factory.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"token.factory.js","sourceRoot":"","sources":["../../../../../../../libs/auth/domain/src/lib/feature-create-token/token.factory.ts"],"names":[],"mappings":";;;;;AAAA,2CAA4C;AAC5C,qCAAqC;AACrC,qCAAyC;AACzC,6CAAmD;AACnD,qDAAuC;AAGvC,2DAA4E;AAC5E,+CAAsD;AACtD,yCAA2C;AAC3C,iDAAmD;AAEnD,yDAA+C;AAC/C,iDAA6C;AAOtC,IAAM,YAAY,
|
|
1
|
+
{"version":3,"file":"token.factory.js","sourceRoot":"","sources":["../../../../../../../libs/auth/domain/src/lib/feature-create-token/token.factory.ts"],"names":[],"mappings":"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"}
|