@solidxai/core 0.1.11 → 0.1.12-beta.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/constants/error-messages.d.ts +1 -0
- package/dist/constants/error-messages.d.ts.map +1 -1
- package/dist/constants/error-messages.js +1 -0
- package/dist/constants/error-messages.js.map +1 -1
- package/dist/controllers/authentication.controller.d.ts +1 -1
- package/dist/controllers/chatter-message.controller.d.ts +0 -2
- package/dist/controllers/chatter-message.controller.d.ts.map +1 -1
- package/dist/controllers/chatter-message.controller.js +0 -16
- package/dist/controllers/chatter-message.controller.js.map +1 -1
- package/dist/guards/access-token.guard.d.ts +5 -1
- package/dist/guards/access-token.guard.d.ts.map +1 -1
- package/dist/guards/access-token.guard.js +31 -3
- package/dist/guards/access-token.guard.js.map +1 -1
- package/dist/guards/authentication.guard.d.ts +1 -0
- package/dist/guards/authentication.guard.d.ts.map +1 -1
- package/dist/guards/authentication.guard.js +16 -1
- package/dist/guards/authentication.guard.js.map +1 -1
- package/dist/helpers/bootstrap.helper.d.ts.map +1 -1
- package/dist/helpers/bootstrap.helper.js +3 -1
- package/dist/helpers/bootstrap.helper.js.map +1 -1
- package/dist/helpers/solid-core-error-codes-provider.service.d.ts.map +1 -1
- package/dist/helpers/solid-core-error-codes-provider.service.js +28 -0
- package/dist/helpers/solid-core-error-codes-provider.service.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/interfaces/active-user-data.interface.d.ts +1 -0
- package/dist/interfaces/active-user-data.interface.d.ts.map +1 -1
- package/dist/interfaces/active-user-data.interface.js.map +1 -1
- package/dist/seeders/module-metadata-seeder.service.d.ts.map +1 -1
- package/dist/seeders/module-metadata-seeder.service.js +18 -1
- package/dist/seeders/module-metadata-seeder.service.js.map +1 -1
- package/dist/seeders/seed-data/solid-core-metadata.json +0 -1
- package/dist/services/active-session-storage.service.d.ts +10 -0
- package/dist/services/active-session-storage.service.d.ts.map +1 -0
- package/dist/services/active-session-storage.service.js +41 -0
- package/dist/services/active-session-storage.service.js.map +1 -0
- package/dist/services/authentication.service.d.ts +6 -3
- package/dist/services/authentication.service.d.ts.map +1 -1
- package/dist/services/authentication.service.js +29 -5
- package/dist/services/authentication.service.js.map +1 -1
- package/dist/services/chatter-message.service.d.ts +2 -0
- package/dist/services/chatter-message.service.d.ts.map +1 -1
- package/dist/services/chatter-message.service.js +25 -2
- package/dist/services/chatter-message.service.js.map +1 -1
- package/dist/services/crud.service.d.ts.map +1 -1
- package/dist/services/crud.service.js +1 -0
- package/dist/services/crud.service.js.map +1 -1
- package/dist/services/refresh-token-ids-storage.service.d.ts +6 -1
- package/dist/services/refresh-token-ids-storage.service.d.ts.map +1 -1
- package/dist/services/refresh-token-ids-storage.service.js +0 -2
- package/dist/services/refresh-token-ids-storage.service.js.map +1 -1
- package/dist/services/settings/default-settings-provider.service.d.ts +18 -0
- package/dist/services/settings/default-settings-provider.service.d.ts.map +1 -1
- package/dist/services/settings/default-settings-provider.service.js +10 -0
- package/dist/services/settings/default-settings-provider.service.js.map +1 -1
- package/dist/solid-core.module.d.ts.map +1 -1
- package/dist/solid-core.module.js +2 -0
- package/dist/solid-core.module.js.map +1 -1
- package/package.json +1 -1
- package/src/constants/error-messages.ts +1 -0
- package/src/controllers/chatter-message.controller.ts +7 -7
- package/src/guards/access-token.guard.ts +43 -3
- package/src/guards/authentication.guard.ts +22 -1
- package/src/helpers/bootstrap.helper.ts +9 -3
- package/src/helpers/solid-core-error-codes-provider.service.ts +29 -1
- package/src/index.ts +1 -0
- package/src/interfaces/active-user-data.interface.ts +6 -0
- package/src/seeders/module-metadata-seeder.service.ts +23 -2
- package/src/seeders/seed-data/solid-core-metadata.json +0 -1
- package/src/services/active-session-storage.service.ts +24 -0
- package/src/services/authentication.service.ts +30 -3
- package/src/services/chatter-message.service.ts +32 -2
- package/src/services/crud.service.ts +1 -0
- package/src/services/refresh-token-ids-storage.service.ts +9 -8
- package/src/services/settings/default-settings-provider.service.ts +10 -1
- package/src/solid-core.module.ts +2 -0
|
@@ -5304,7 +5304,6 @@
|
|
|
5304
5304
|
"SavedFiltersController.update",
|
|
5305
5305
|
"SavedFiltersController.insertMany",
|
|
5306
5306
|
"SavedFiltersController.create",
|
|
5307
|
-
"ChatterMessageController.create",
|
|
5308
5307
|
"ChatterMessageController.getChatterMessages",
|
|
5309
5308
|
"ChatterMessageController.postMessage",
|
|
5310
5309
|
"ChatterMessageController.findMany",
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Cache } from "cache-manager";
|
|
2
|
+
export declare class ActiveSessionStorageService {
|
|
3
|
+
private readonly cacheManager;
|
|
4
|
+
constructor(cacheManager: Cache);
|
|
5
|
+
setActiveSession(userId: number, sessionId: string): Promise<void>;
|
|
6
|
+
getActiveSession(userId: number): Promise<string | undefined>;
|
|
7
|
+
clearActiveSession(userId: number): Promise<void>;
|
|
8
|
+
private getKey;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=active-session-storage.service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"active-session-storage.service.d.ts","sourceRoot":"","sources":["../../src/services/active-session-storage.service.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAEtC,qBACa,2BAA2B;IACH,OAAO,CAAC,QAAQ,CAAC,YAAY;gBAAZ,YAAY,EAAE,KAAK;IAEjE,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIlE,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAI7D,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIvD,OAAO,CAAC,MAAM;CAGf"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.ActiveSessionStorageService = void 0;
|
|
16
|
+
const cache_manager_1 = require("@nestjs/cache-manager");
|
|
17
|
+
const common_1 = require("@nestjs/common");
|
|
18
|
+
let ActiveSessionStorageService = class ActiveSessionStorageService {
|
|
19
|
+
constructor(cacheManager) {
|
|
20
|
+
this.cacheManager = cacheManager;
|
|
21
|
+
}
|
|
22
|
+
async setActiveSession(userId, sessionId) {
|
|
23
|
+
await this.cacheManager.set(this.getKey(userId), sessionId);
|
|
24
|
+
}
|
|
25
|
+
async getActiveSession(userId) {
|
|
26
|
+
return this.cacheManager.get(this.getKey(userId));
|
|
27
|
+
}
|
|
28
|
+
async clearActiveSession(userId) {
|
|
29
|
+
await this.cacheManager.del(this.getKey(userId));
|
|
30
|
+
}
|
|
31
|
+
getKey(userId) {
|
|
32
|
+
return `active-session-${userId}`;
|
|
33
|
+
}
|
|
34
|
+
};
|
|
35
|
+
exports.ActiveSessionStorageService = ActiveSessionStorageService;
|
|
36
|
+
exports.ActiveSessionStorageService = ActiveSessionStorageService = __decorate([
|
|
37
|
+
(0, common_1.Injectable)(),
|
|
38
|
+
__param(0, (0, common_1.Inject)(cache_manager_1.CACHE_MANAGER)),
|
|
39
|
+
__metadata("design:paramtypes", [Object])
|
|
40
|
+
], ActiveSessionStorageService);
|
|
41
|
+
//# sourceMappingURL=active-session-storage.service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"active-session-storage.service.js","sourceRoot":"","sources":["../../src/services/active-session-storage.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,yDAAsD;AACtD,2CAAoD;AAI7C,IAAM,2BAA2B,GAAjC,MAAM,2BAA2B;IACtC,YAAoD,YAAmB;QAAnB,iBAAY,GAAZ,YAAY,CAAO;IAAG,CAAC;IAE3E,KAAK,CAAC,gBAAgB,CAAC,MAAc,EAAE,SAAiB;QACtD,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,SAAS,CAAC,CAAC;IAC9D,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,MAAc;QACnC,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;IACpD,CAAC;IAED,KAAK,CAAC,kBAAkB,CAAC,MAAc;QACrC,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;IACnD,CAAC;IAEO,MAAM,CAAC,MAAc;QAC3B,OAAO,kBAAkB,MAAM,EAAE,CAAC;IACpC,CAAC;CACF,CAAA;AAlBY,kEAA2B;sCAA3B,2BAA2B;IADvC,IAAA,mBAAU,GAAE;IAEE,WAAA,IAAA,eAAM,EAAC,6BAAa,CAAC,CAAA;;GADvB,2BAA2B,CAkBvC","sourcesContent":["import { CACHE_MANAGER } from \"@nestjs/cache-manager\";\nimport { Inject, Injectable } from \"@nestjs/common\";\nimport { Cache } from \"cache-manager\";\n\n@Injectable()\nexport class ActiveSessionStorageService {\n constructor(@Inject(CACHE_MANAGER) private readonly cacheManager: Cache) {}\n\n async setActiveSession(userId: number, sessionId: string): Promise<void> {\n await this.cacheManager.set(this.getKey(userId), sessionId);\n }\n\n async getActiveSession(userId: number): Promise<string | undefined> {\n return this.cacheManager.get(this.getKey(userId));\n }\n\n async clearActiveSession(userId: number): Promise<void> {\n await this.cacheManager.del(this.getKey(userId));\n }\n\n private getKey(userId: number): string {\n return `active-session-${userId}`;\n }\n}\n"]}
|
|
@@ -15,6 +15,7 @@ import { SignInDto } from "../dtos/sign-in.dto";
|
|
|
15
15
|
import { SignUpDto } from "../dtos/sign-up.dto";
|
|
16
16
|
import { User } from "../entities/user.entity";
|
|
17
17
|
import { ActiveUserData } from "../interfaces/active-user-data.interface";
|
|
18
|
+
import { ActiveSessionStorageService } from "./active-session-storage.service";
|
|
18
19
|
import { HashingService } from "./hashing.service";
|
|
19
20
|
import { RefreshTokenIdsStorageService } from "./refresh-token-ids-storage.service";
|
|
20
21
|
import { SsoCodeStorageService } from "./sso-code-storage.service";
|
|
@@ -30,6 +31,7 @@ export declare class AuthenticationService {
|
|
|
30
31
|
private readonly userRepository;
|
|
31
32
|
private readonly hashingService;
|
|
32
33
|
private readonly jwtService;
|
|
34
|
+
private readonly activeSessionStorage;
|
|
33
35
|
private readonly refreshTokenIdsStorage;
|
|
34
36
|
private readonly httpService;
|
|
35
37
|
private readonly mailServiceFactory;
|
|
@@ -43,7 +45,7 @@ export declare class AuthenticationService {
|
|
|
43
45
|
private readonly dataSource;
|
|
44
46
|
private readonly solidRegistry;
|
|
45
47
|
private readonly logger;
|
|
46
|
-
constructor(userService: UserService, userRepository: UserRepository, hashingService: HashingService, jwtService: JwtService, refreshTokenIdsStorage: RefreshTokenIdsStorageService, httpService: HttpService, mailServiceFactory: MailFactory, smsFactory: SmsFactory, whatsAppFactory: WhatsAppFactory, eventEmitter: EventEmitter2, settingService: SettingService, roleMetadataService: RoleMetadataService, userActivityHistoryService: UserActivityHistoryService, ssoCodeStorage: SsoCodeStorageService, dataSource: DataSource, solidRegistry: SolidRegistry);
|
|
48
|
+
constructor(userService: UserService, userRepository: UserRepository, hashingService: HashingService, jwtService: JwtService, activeSessionStorage: ActiveSessionStorageService, refreshTokenIdsStorage: RefreshTokenIdsStorageService, httpService: HttpService, mailServiceFactory: MailFactory, smsFactory: SmsFactory, whatsAppFactory: WhatsAppFactory, eventEmitter: EventEmitter2, settingService: SettingService, roleMetadataService: RoleMetadataService, userActivityHistoryService: UserActivityHistoryService, ssoCodeStorage: SsoCodeStorageService, dataSource: DataSource, solidRegistry: SolidRegistry);
|
|
47
49
|
private getCompanyLogo;
|
|
48
50
|
resolveUser(username: string, email: string): Promise<User>;
|
|
49
51
|
updatePasswordDetails(user: User, newPassword: string): Promise<User>;
|
|
@@ -159,7 +161,7 @@ export declare class AuthenticationService {
|
|
|
159
161
|
accessToken: string;
|
|
160
162
|
refreshToken: string;
|
|
161
163
|
}>;
|
|
162
|
-
generateAccessToken(user: User): Promise<string>;
|
|
164
|
+
generateAccessToken(user: User, sessionId?: string): Promise<string>;
|
|
163
165
|
generateRefreshToken(user: User, previousRefreshToken?: string): Promise<string>;
|
|
164
166
|
refreshTokens(refreshTokenDto: RefreshTokenDto): Promise<{
|
|
165
167
|
accessToken: string;
|
|
@@ -226,6 +228,7 @@ export declare class AuthenticationService {
|
|
|
226
228
|
};
|
|
227
229
|
}>;
|
|
228
230
|
private isPasswordlessRegistrationEnabled;
|
|
231
|
+
private shouldPreventConcurrentLogins;
|
|
229
232
|
private checkAccountBlocked;
|
|
230
233
|
private incrementFailedAttempts;
|
|
231
234
|
private resetFailedAttempts;
|
|
@@ -241,7 +244,7 @@ export declare class AuthenticationService {
|
|
|
241
244
|
id: number;
|
|
242
245
|
roles: string[];
|
|
243
246
|
};
|
|
244
|
-
refreshToken:
|
|
247
|
+
refreshToken: string;
|
|
245
248
|
}>;
|
|
246
249
|
generateSsoCode(activeUser: ActiveUserData, rawAccessToken: string): Promise<{
|
|
247
250
|
ssoCode: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"authentication.service.d.ts","sourceRoot":"","sources":["../../src/services/authentication.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAY5C,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAOzC,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAChE,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAO9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAE,wBAAwB,EAAE,MAAM,qCAAqC,CAAC;AAC/E,OAAO,EAAE,yBAAyB,EAAE,MAAM,sCAAsC,CAAC;AACjF,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAE/C,OAAO,EAAE,cAAc,EAAE,MAAM,0CAA0C,CAAC;AAC1E,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAEL,6BAA6B,EAC9B,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAC7E,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAa3D,qBACa,qBAAqB;IAI9B,OAAO,CAAC,QAAQ,CAAC,WAAW;IAE5B,OAAO,CAAC,QAAQ,CAAC,cAAc;IAC/B,OAAO,CAAC,QAAQ,CAAC,cAAc;IAC/B,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,sBAAsB;IACvC,OAAO,CAAC,QAAQ,CAAC,WAAW;IAE5B,OAAO,CAAC,QAAQ,CAAC,kBAAkB;IAEnC,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,eAAe;IAChC,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,cAAc;IAC/B,OAAO,CAAC,QAAQ,CAAC,mBAAmB;IACpC,OAAO,CAAC,QAAQ,CAAC,0BAA0B;IAC3C,OAAO,CAAC,QAAQ,CAAC,cAAc;IAG/B,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,aAAa;
|
|
1
|
+
{"version":3,"file":"authentication.service.d.ts","sourceRoot":"","sources":["../../src/services/authentication.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -30,6 +30,7 @@ const uuid_1 = require("uuid");
|
|
|
30
30
|
const constants_1 = require("../constants");
|
|
31
31
|
const user_entity_1 = require("../entities/user.entity");
|
|
32
32
|
const interfaces_1 = require("../interfaces");
|
|
33
|
+
const active_session_storage_service_1 = require("./active-session-storage.service");
|
|
33
34
|
const hashing_service_1 = require("./hashing.service");
|
|
34
35
|
const refresh_token_ids_storage_service_1 = require("./refresh-token-ids-storage.service");
|
|
35
36
|
const sso_code_storage_service_1 = require("./sso-code-storage.service");
|
|
@@ -47,11 +48,12 @@ var LoginProvider;
|
|
|
47
48
|
LoginProvider["OTP"] = "otp";
|
|
48
49
|
})(LoginProvider || (LoginProvider = {}));
|
|
49
50
|
let AuthenticationService = AuthenticationService_1 = class AuthenticationService {
|
|
50
|
-
constructor(userService, userRepository, hashingService, jwtService, refreshTokenIdsStorage, httpService, mailServiceFactory, smsFactory, whatsAppFactory, eventEmitter, settingService, roleMetadataService, userActivityHistoryService, ssoCodeStorage, dataSource, solidRegistry) {
|
|
51
|
+
constructor(userService, userRepository, hashingService, jwtService, activeSessionStorage, refreshTokenIdsStorage, httpService, mailServiceFactory, smsFactory, whatsAppFactory, eventEmitter, settingService, roleMetadataService, userActivityHistoryService, ssoCodeStorage, dataSource, solidRegistry) {
|
|
51
52
|
this.userService = userService;
|
|
52
53
|
this.userRepository = userRepository;
|
|
53
54
|
this.hashingService = hashingService;
|
|
54
55
|
this.jwtService = jwtService;
|
|
56
|
+
this.activeSessionStorage = activeSessionStorage;
|
|
55
57
|
this.refreshTokenIdsStorage = refreshTokenIdsStorage;
|
|
56
58
|
this.httpService = httpService;
|
|
57
59
|
this.mailServiceFactory = mailServiceFactory;
|
|
@@ -1045,8 +1047,17 @@ let AuthenticationService = AuthenticationService_1 = class AuthenticationServic
|
|
|
1045
1047
|
}
|
|
1046
1048
|
}
|
|
1047
1049
|
async generateTokens(user) {
|
|
1050
|
+
const sessionId = this.shouldPreventConcurrentLogins()
|
|
1051
|
+
? (0, crypto_1.randomUUID)()
|
|
1052
|
+
: undefined;
|
|
1053
|
+
if (sessionId) {
|
|
1054
|
+
await this.activeSessionStorage.setActiveSession(user.id, sessionId);
|
|
1055
|
+
}
|
|
1056
|
+
else {
|
|
1057
|
+
await this.activeSessionStorage.clearActiveSession(user.id);
|
|
1058
|
+
}
|
|
1048
1059
|
const [accessToken, refreshToken] = await Promise.all([
|
|
1049
|
-
await this.generateAccessToken(user),
|
|
1060
|
+
await this.generateAccessToken(user, sessionId),
|
|
1050
1061
|
await this.generateRefreshToken(user),
|
|
1051
1062
|
]);
|
|
1052
1063
|
return {
|
|
@@ -1054,10 +1065,18 @@ let AuthenticationService = AuthenticationService_1 = class AuthenticationServic
|
|
|
1054
1065
|
refreshToken,
|
|
1055
1066
|
};
|
|
1056
1067
|
}
|
|
1057
|
-
async generateAccessToken(user) {
|
|
1068
|
+
async generateAccessToken(user, sessionId) {
|
|
1058
1069
|
const userRoleNames = user.roles.map((role) => role.name);
|
|
1070
|
+
const resolvedSessionId = this.shouldPreventConcurrentLogins()
|
|
1071
|
+
? sessionId ?? (await this.activeSessionStorage.getActiveSession(user.id))
|
|
1072
|
+
: undefined;
|
|
1059
1073
|
const accessTokenTtl = this.settingService.getConfigValue("accessTokenTtl");
|
|
1060
|
-
const accessToken = await this.signToken(user.id, accessTokenTtl, {
|
|
1074
|
+
const accessToken = await this.signToken(user.id, accessTokenTtl, {
|
|
1075
|
+
username: user.username,
|
|
1076
|
+
email: user.email,
|
|
1077
|
+
roles: userRoleNames,
|
|
1078
|
+
...(resolvedSessionId ? { sessionId: resolvedSessionId } : {}),
|
|
1079
|
+
});
|
|
1061
1080
|
return accessToken;
|
|
1062
1081
|
}
|
|
1063
1082
|
async generateRefreshToken(user, previousRefreshToken) {
|
|
@@ -1374,6 +1393,9 @@ let AuthenticationService = AuthenticationService_1 = class AuthenticationServic
|
|
|
1374
1393
|
async isPasswordlessRegistrationEnabled() {
|
|
1375
1394
|
return this.settingService.getConfigValue("passwordLessAuth");
|
|
1376
1395
|
}
|
|
1396
|
+
shouldPreventConcurrentLogins() {
|
|
1397
|
+
return (this.settingService.getConfigValue("preventConcurrentLogins") === true);
|
|
1398
|
+
}
|
|
1377
1399
|
checkAccountBlocked(user) {
|
|
1378
1400
|
const maxFailedAttempts = this.settingService.getConfigValue("maxFailedLoginAttempts");
|
|
1379
1401
|
if (maxFailedAttempts > 0 &&
|
|
@@ -1402,6 +1424,7 @@ let AuthenticationService = AuthenticationService_1 = class AuthenticationServic
|
|
|
1402
1424
|
}
|
|
1403
1425
|
const userId = payload.sub;
|
|
1404
1426
|
await this.refreshTokenIdsStorage.invalidate(userId);
|
|
1427
|
+
await this.activeSessionStorage.clearActiveSession(userId);
|
|
1405
1428
|
const user = await this.userRepository.findOne({
|
|
1406
1429
|
where: {
|
|
1407
1430
|
id: userId,
|
|
@@ -1481,11 +1504,12 @@ AuthenticationService.SIGNUP_DTO_KEYS = new Set([
|
|
|
1481
1504
|
]);
|
|
1482
1505
|
exports.AuthenticationService = AuthenticationService = AuthenticationService_1 = __decorate([
|
|
1483
1506
|
(0, common_1.Injectable)(),
|
|
1484
|
-
__param(
|
|
1507
|
+
__param(15, (0, typeorm_1.InjectDataSource)()),
|
|
1485
1508
|
__metadata("design:paramtypes", [user_service_1.UserService,
|
|
1486
1509
|
user_repository_1.UserRepository,
|
|
1487
1510
|
hashing_service_1.HashingService,
|
|
1488
1511
|
jwt_1.JwtService,
|
|
1512
|
+
active_session_storage_service_1.ActiveSessionStorageService,
|
|
1489
1513
|
refresh_token_ids_storage_service_1.RefreshTokenIdsStorageService,
|
|
1490
1514
|
axios_1.HttpService,
|
|
1491
1515
|
mail_factory_1.MailFactory,
|