@smartsoft001/auth-domain 1.1.91 → 2.68.0

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.
Files changed (50) hide show
  1. package/.eslintrc.json +26 -0
  2. package/README.md +161 -2
  3. package/jest.config.ts +26 -0
  4. package/package.json +3 -32
  5. package/project.json +44 -0
  6. package/src/index.ts +9 -0
  7. package/src/lib/entities/user.entity.ts +34 -0
  8. package/src/lib/feature-create-token/interfaces.ts +51 -0
  9. package/src/lib/feature-create-token/token-payload.provider.ts +17 -0
  10. package/src/lib/feature-create-token/token-user.provider.ts +14 -0
  11. package/src/lib/feature-create-token/token-validation.provider.ts +13 -0
  12. package/src/lib/feature-create-token/token.config.ts +8 -0
  13. package/src/lib/feature-create-token/token.factory.spec.ts +193 -0
  14. package/src/lib/feature-create-token/token.factory.ts +199 -0
  15. package/tsconfig.json +13 -0
  16. package/tsconfig.lib.json +10 -0
  17. package/tsconfig.spec.json +20 -0
  18. package/src/index.d.ts +0 -6
  19. package/src/index.js +0 -15
  20. package/src/index.js.map +0 -1
  21. package/src/lib/entities/index.js +0 -5
  22. package/src/lib/entities/index.js.map +0 -1
  23. package/src/lib/entities/user.entity.d.ts +0 -13
  24. package/src/lib/entities/user.entity.js +0 -47
  25. package/src/lib/entities/user.entity.js.map +0 -1
  26. package/src/lib/feature-create-token/index.js +0 -10
  27. package/src/lib/feature-create-token/index.js.map +0 -1
  28. package/src/lib/feature-create-token/interfaces.d.ts +0 -39
  29. package/src/lib/feature-create-token/interfaces.js +0 -3
  30. package/src/lib/feature-create-token/interfaces.js.map +0 -1
  31. package/src/lib/feature-create-token/token-payload.provider.d.ts +0 -11
  32. package/src/lib/feature-create-token/token-payload.provider.js +0 -8
  33. package/src/lib/feature-create-token/token-payload.provider.js.map +0 -1
  34. package/src/lib/feature-create-token/token-user.provider.d.ts +0 -7
  35. package/src/lib/feature-create-token/token-user.provider.js +0 -8
  36. package/src/lib/feature-create-token/token-user.provider.js.map +0 -1
  37. package/src/lib/feature-create-token/token-validation.provider.d.ts +0 -10
  38. package/src/lib/feature-create-token/token-validation.provider.js +0 -8
  39. package/src/lib/feature-create-token/token-validation.provider.js.map +0 -1
  40. package/src/lib/feature-create-token/token.config.d.ts +0 -5
  41. package/src/lib/feature-create-token/token.config.js +0 -14
  42. package/src/lib/feature-create-token/token.config.js.map +0 -1
  43. package/src/lib/feature-create-token/token.factory.d.ts +0 -39
  44. package/src/lib/feature-create-token/token.factory.js +0 -158
  45. package/src/lib/feature-create-token/token.factory.js.map +0 -1
  46. package/test-setup.js +0 -1
  47. package/test-setup.js.map +0 -1
  48. /package/src/lib/entities/{index.d.ts → index.ts} +0 -0
  49. /package/src/lib/feature-create-token/{index.d.ts → index.ts} +0 -0
  50. /package/{test-setup.d.ts → test-setup.ts} +0 -0
@@ -1,158 +0,0 @@
1
- "use strict";
2
- var TokenFactory_1;
3
- Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.TokenFactory = void 0;
5
- const tslib_1 = require("tslib");
6
- const common_1 = require("@nestjs/common");
7
- const typeorm_1 = require("typeorm");
8
- const jwt_1 = require("@nestjs/jwt");
9
- const typeorm_2 = require("@nestjs/typeorm");
10
- const guid_typescript_1 = require("guid-typescript");
11
- const domain_core_1 = require("@smartsoft001/domain-core");
12
- const utils_1 = require("@smartsoft001/utils");
13
- const fb_1 = require("@smartsoft001/fb");
14
- const google_1 = require("@smartsoft001/google");
15
- const user_entity_1 = require("../entities/user.entity");
16
- const token_config_1 = require("./token.config");
17
- let TokenFactory = exports.TokenFactory = TokenFactory_1 = class TokenFactory {
18
- constructor(config, repository, jwtService, fbService, googleService) {
19
- this.config = config;
20
- this.repository = repository;
21
- this.jwtService = jwtService;
22
- this.fbService = fbService;
23
- this.googleService = googleService;
24
- this._invalidUsernameOrPasswordMessage = "Invalid username or password";
25
- }
26
- static getQuery(config, customProvider = false) {
27
- switch (config.grant_type) {
28
- case "fb":
29
- return { facebookUserId: config.fb_user_id };
30
- case "google":
31
- return { googleUserId: config.google_user_id };
32
- case "password":
33
- return { username: config.username };
34
- case "refresh_token":
35
- return { authRefreshToken: config.refresh_token };
36
- default:
37
- if (!customProvider) {
38
- throw new domain_core_1.DomainValidationError('Invalid grand type');
39
- }
40
- return null;
41
- }
42
- }
43
- static checkDisabled(user) {
44
- if (user.disabled)
45
- throw new domain_core_1.DomainValidationError("user disabled");
46
- }
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,
70
- });
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,
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
- };
101
- }
102
- checkUser(config, user) {
103
- if (!user)
104
- throw new domain_core_1.DomainValidationError(config.grant_type === "password"
105
- ? this._invalidUsernameOrPasswordMessage
106
- : "Invalid token");
107
- }
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);
112
- }
113
- valid(req) {
114
- if (!req)
115
- throw new domain_core_1.DomainValidationError("config is empty");
116
- if (!req.grant_type)
117
- throw new domain_core_1.DomainValidationError("grant_type is empty");
118
- // password
119
- if (req.grant_type === "password") {
120
- if (!req.username)
121
- throw new domain_core_1.DomainValidationError("username is empty");
122
- if (!req.password)
123
- throw new domain_core_1.DomainValidationError("password is empty");
124
- if (!req.client_id)
125
- throw new domain_core_1.DomainValidationError("client_id is empty");
126
- if (!this.config.clients.some((c) => c === req.client_id))
127
- throw new domain_core_1.DomainValidationError("client_id is incorrect");
128
- // refres token
129
- }
130
- else if (req.grant_type === "refresh_token") {
131
- if (!req.refresh_token)
132
- throw new domain_core_1.DomainValidationError("refresh_token is empty");
133
- // fb token
134
- }
135
- else if (req.grant_type === "fb") {
136
- if (!req.fb_token)
137
- throw new domain_core_1.DomainValidationError("fb_token is empty");
138
- if (!req.fb_user_id)
139
- throw new domain_core_1.DomainValidationError("fb_user_id is empty");
140
- }
141
- else if (req.grant_type === "google") {
142
- if (!req.google_token)
143
- throw new domain_core_1.DomainValidationError("google_token is empty");
144
- if (!req.google_user_id)
145
- throw new domain_core_1.DomainValidationError("google_user_id is empty");
146
- }
147
- }
148
- };
149
- exports.TokenFactory = TokenFactory = TokenFactory_1 = tslib_1.__decorate([
150
- (0, common_1.Injectable)(),
151
- tslib_1.__param(1, (0, typeorm_2.InjectRepository)(user_entity_1.User)),
152
- tslib_1.__metadata("design:paramtypes", [token_config_1.TokenConfig,
153
- typeorm_1.Repository,
154
- jwt_1.JwtService,
155
- fb_1.FbService,
156
- google_1.GoogleService])
157
- ], TokenFactory);
158
- //# sourceMappingURL=token.factory.js.map
@@ -1 +0,0 @@
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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"}
package/test-setup.js DELETED
@@ -1 +0,0 @@
1
- //# sourceMappingURL=test-setup.js.map
package/test-setup.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"test-setup.js","sourceRoot":"","sources":["../../../../libs/auth/domain/test-setup.ts"],"names":[],"mappings":""}
File without changes
File without changes