@ackplus/nest-auth 0.0.23 → 0.0.24
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 +1 -1
- package/src/index.d.ts +1 -0
- package/src/index.js +1 -0
- package/src/index.js.map +1 -1
- package/src/lib/auth.constants.d.ts +1 -0
- package/src/lib/auth.constants.js +2 -1
- package/src/lib/auth.constants.js.map +1 -1
- package/src/lib/auth.module.d.ts +0 -0
- package/src/lib/auth.module.js +1 -0
- package/src/lib/auth.module.js.map +1 -0
- package/src/lib/decorators/nest-auth-role.decorator.d.ts +3 -0
- package/src/lib/decorators/nest-auth-role.decorator.js +14 -0
- package/src/lib/decorators/nest-auth-role.decorator.js.map +1 -0
- package/src/lib/dto/responses/auth.response.dto.d.ts +6 -6
- package/src/lib/dto/responses/auth.response.dto.js +14 -19
- package/src/lib/dto/responses/auth.response.dto.js.map +1 -1
- package/src/lib/entities/access-key.entity.d.ts +16 -0
- package/src/lib/entities/access-key.entity.js +63 -0
- package/src/lib/entities/access-key.entity.js.map +1 -0
- package/src/lib/entities/index.d.ts +3 -1
- package/src/lib/entities/index.js +2 -0
- package/src/lib/entities/index.js.map +1 -1
- package/src/lib/entities/permission.entity.d.ts +1 -0
- package/src/lib/entities/permission.entity.js +5 -0
- package/src/lib/entities/permission.entity.js.map +1 -1
- package/src/lib/entities/role-permission.entity.d.ts +2 -1
- package/src/lib/entities/role-permission.entity.js +1 -1
- package/src/lib/entities/role-permission.entity.js.map +1 -1
- package/src/lib/entities/role.entity.d.ts +12 -2
- package/src/lib/entities/role.entity.js +65 -4
- package/src/lib/entities/role.entity.js.map +1 -1
- package/src/lib/entities/tenant.entity.d.ts +3 -3
- package/src/lib/entities/tenant.entity.js +9 -6
- package/src/lib/entities/tenant.entity.js.map +1 -1
- package/src/lib/entities/user.entity.js +1 -1
- package/src/lib/entities/user.entity.js.map +1 -1
- package/src/lib/events/index.d.ts +34 -0
- package/src/lib/events/index.js +39 -0
- package/src/lib/events/index.js.map +1 -0
- package/src/lib/events/logged-out-all.event.d.ts +15 -0
- package/src/lib/events/logged-out-all.event.js +10 -0
- package/src/lib/events/logged-out-all.event.js.map +1 -0
- package/src/lib/events/logged-out.event.d.ts +13 -0
- package/src/lib/events/logged-out.event.js +10 -0
- package/src/lib/events/logged-out.event.js.map +1 -0
- package/src/lib/events/password-reset-requested.event.d.ts +15 -0
- package/src/lib/events/password-reset-requested.event.js +10 -0
- package/src/lib/events/password-reset-requested.event.js.map +1 -0
- package/src/lib/events/password-reset.event.d.ts +11 -0
- package/src/lib/events/password-reset.event.js +10 -0
- package/src/lib/events/password-reset.event.js.map +1 -0
- package/src/lib/events/tenant-created.event.d.ts +8 -0
- package/src/lib/events/tenant-created.event.js +10 -0
- package/src/lib/events/tenant-created.event.js.map +1 -0
- package/src/lib/events/tenant-deleted.event.d.ts +8 -0
- package/src/lib/events/tenant-deleted.event.js +10 -0
- package/src/lib/events/tenant-deleted.event.js.map +1 -0
- package/src/lib/events/tenant-updated.event.d.ts +9 -0
- package/src/lib/events/tenant-updated.event.js +10 -0
- package/src/lib/events/tenant-updated.event.js.map +1 -0
- package/src/lib/events/user-2fa-verified.event.d.ts +15 -0
- package/src/lib/events/user-2fa-verified.event.js +10 -0
- package/src/lib/events/user-2fa-verified.event.js.map +1 -0
- package/src/lib/events/user-created.event.d.ts +9 -0
- package/src/lib/events/user-created.event.js +10 -0
- package/src/lib/events/user-created.event.js.map +1 -0
- package/src/lib/events/user-deleted.event.d.ts +9 -0
- package/src/lib/events/user-deleted.event.js +10 -0
- package/src/lib/events/user-deleted.event.js.map +1 -0
- package/src/lib/events/user-logged-in.event.d.ts +17 -0
- package/src/lib/events/user-logged-in.event.js +10 -0
- package/src/lib/events/user-logged-in.event.js.map +1 -0
- package/src/lib/events/user-refresh-token.event.d.ts +11 -0
- package/src/lib/events/user-refresh-token.event.js +10 -0
- package/src/lib/events/user-refresh-token.event.js.map +1 -0
- package/src/lib/events/user-registered.event.d.ts +17 -0
- package/src/lib/events/user-registered.event.js +10 -0
- package/src/lib/events/user-registered.event.js.map +1 -0
- package/src/lib/events/user-updated.event.d.ts +10 -0
- package/src/lib/events/user-updated.event.js +10 -0
- package/src/lib/events/user-updated.event.js.map +1 -0
- package/src/lib/guards/auth.guard.d.ts +8 -5
- package/src/lib/guards/auth.guard.js +59 -32
- package/src/lib/guards/auth.guard.js.map +1 -1
- package/src/lib/guards/nest-auth-role.guard.d.ts +7 -0
- package/src/lib/guards/nest-auth-role.guard.js +37 -0
- package/src/lib/guards/nest-auth-role.guard.js.map +1 -0
- package/src/lib/nest-auth.module.js +26 -13
- package/src/lib/nest-auth.module.js.map +1 -1
- package/src/lib/services/access-key.service.d.ts +19 -0
- package/src/lib/services/access-key.service.js +119 -0
- package/src/lib/services/access-key.service.js.map +1 -0
- package/src/lib/services/auth.service.d.ts +5 -3
- package/src/lib/services/auth.service.js +80 -15
- package/src/lib/services/auth.service.js.map +1 -1
- package/src/lib/services/role.service.d.ts +16 -0
- package/src/lib/services/role.service.js +194 -0
- package/src/lib/services/role.service.js.map +1 -0
- package/src/lib/services/tenant.service.d.ts +16 -0
- package/src/lib/services/tenant.service.js +134 -0
- package/src/lib/services/tenant.service.js.map +1 -0
- package/src/lib/services/user.service.d.ts +20 -0
- package/src/lib/services/user.service.js +211 -0
- package/src/lib/services/user.service.js.map +1 -0
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.NestAuthEvents = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
tslib_1.__exportStar(require("./user-registered.event"), exports);
|
|
6
|
+
tslib_1.__exportStar(require("./user-logged-in.event"), exports);
|
|
7
|
+
tslib_1.__exportStar(require("./user-2fa-verified.event"), exports);
|
|
8
|
+
tslib_1.__exportStar(require("./user-refresh-token.event"), exports);
|
|
9
|
+
tslib_1.__exportStar(require("./password-reset-requested.event"), exports);
|
|
10
|
+
tslib_1.__exportStar(require("./password-reset.event"), exports);
|
|
11
|
+
tslib_1.__exportStar(require("./logged-out.event"), exports);
|
|
12
|
+
tslib_1.__exportStar(require("./logged-out-all.event"), exports);
|
|
13
|
+
tslib_1.__exportStar(require("./user-created.event"), exports);
|
|
14
|
+
tslib_1.__exportStar(require("./user-updated.event"), exports);
|
|
15
|
+
tslib_1.__exportStar(require("./user-deleted.event"), exports);
|
|
16
|
+
tslib_1.__exportStar(require("./tenant-created.event"), exports);
|
|
17
|
+
tslib_1.__exportStar(require("./tenant-updated.event"), exports);
|
|
18
|
+
tslib_1.__exportStar(require("./tenant-deleted.event"), exports);
|
|
19
|
+
exports.NestAuthEvents = {
|
|
20
|
+
LOGGED_IN: 'nest_auth.logged_in',
|
|
21
|
+
REGISTERED: 'nest_auth.registered',
|
|
22
|
+
TWO_FACTOR_VERIFIED: 'nest_auth.two_factor_verified',
|
|
23
|
+
REFRESH_TOKEN: 'nest_auth.refresh_token',
|
|
24
|
+
PASSWORD_RESET_REQUESTED: 'nest_auth.password_reset_requested',
|
|
25
|
+
PASSWORD_RESET: 'nest_auth.password_reset',
|
|
26
|
+
LOGGED_OUT: 'nest_auth.logged_out',
|
|
27
|
+
LOGGED_OUT_ALL: 'nest_auth.logged_out_all',
|
|
28
|
+
USER_CREATED: 'nest_auth.user.created',
|
|
29
|
+
USER_UPDATED: 'nest_auth.user.updated',
|
|
30
|
+
USER_DELETED: 'nest_auth.user.deleted',
|
|
31
|
+
TENANT_CREATED: 'nest_auth.tenant.created',
|
|
32
|
+
TENANT_UPDATED: 'nest_auth.tenant.updated',
|
|
33
|
+
TENANT_DELETED: 'nest_auth.tenant.deleted',
|
|
34
|
+
ACCESS_KEY_CREATED: 'nest_auth.access_key.created',
|
|
35
|
+
ACCESS_KEY_DELETED: 'nest_auth.access_key.deleted',
|
|
36
|
+
ACCESS_KEY_UPDATED: 'nest_auth.access_key.updated',
|
|
37
|
+
ACCESS_KEY_DEACTIVATED: 'nest_auth.access_key.deactivated',
|
|
38
|
+
};
|
|
39
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../packages/nest-auth/src/lib/events/index.ts"],"names":[],"mappings":";;;;AACA,kEAAwC;AACxC,iEAAuC;AACvC,oEAA0C;AAC1C,qEAA2C;AAC3C,2EAAiD;AACjD,iEAAuC;AACvC,6DAAmC;AACnC,iEAAuC;AAGvC,+DAAqC;AACrC,+DAAqC;AACrC,+DAAqC;AAGrC,iEAAuC;AACvC,iEAAuC;AACvC,iEAAuC;AAE1B,QAAA,cAAc,GAAG;IAE1B,SAAS,EAAE,qBAAqB;IAChC,UAAU,EAAE,sBAAsB;IAClC,mBAAmB,EAAE,+BAA+B;IACpD,aAAa,EAAE,yBAAyB;IACxC,wBAAwB,EAAE,oCAAoC;IAC9D,cAAc,EAAE,0BAA0B;IAC1C,UAAU,EAAE,sBAAsB;IAClC,cAAc,EAAE,0BAA0B;IAG1C,YAAY,EAAE,wBAAwB;IACtC,YAAY,EAAE,wBAAwB;IACtC,YAAY,EAAE,wBAAwB;IAGtC,cAAc,EAAE,0BAA0B;IAC1C,cAAc,EAAE,0BAA0B;IAC1C,cAAc,EAAE,0BAA0B;IAG1C,kBAAkB,EAAE,8BAA8B;IAClD,kBAAkB,EAAE,8BAA8B;IAClD,kBAAkB,EAAE,8BAA8B;IAClD,sBAAsB,EAAE,kCAAkC;CACpD,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { User } from "../entities/user.entity";
|
|
2
|
+
import { SessionPayload } from "../interfaces/token-payload.interface";
|
|
3
|
+
export interface LoggedOutAllEventPayload {
|
|
4
|
+
user: User;
|
|
5
|
+
tenantId?: string;
|
|
6
|
+
metadata?: Record<string, any>;
|
|
7
|
+
sessions: SessionPayload[];
|
|
8
|
+
logoutType: 'user' | 'admin' | 'system';
|
|
9
|
+
reason?: string;
|
|
10
|
+
currentSessionId?: string;
|
|
11
|
+
}
|
|
12
|
+
export declare class LoggedOutAllEvent {
|
|
13
|
+
readonly payload: LoggedOutAllEventPayload;
|
|
14
|
+
constructor(payload: LoggedOutAllEventPayload);
|
|
15
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.LoggedOutAllEvent = void 0;
|
|
4
|
+
class LoggedOutAllEvent {
|
|
5
|
+
constructor(payload) {
|
|
6
|
+
this.payload = payload;
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
exports.LoggedOutAllEvent = LoggedOutAllEvent;
|
|
10
|
+
//# sourceMappingURL=logged-out-all.event.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logged-out-all.event.js","sourceRoot":"","sources":["../../../../../../packages/nest-auth/src/lib/events/logged-out-all.event.ts"],"names":[],"mappings":";;;AAaA,MAAa,iBAAiB;IAC1B,YACoB,OAAiC;QAAjC,YAAO,GAAP,OAAO,CAA0B;IACjD,CAAC;CACR;AAJD,8CAIC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { User } from "../entities/user.entity";
|
|
2
|
+
import { SessionPayload } from "../interfaces/token-payload.interface";
|
|
3
|
+
export interface LoggedOutEventPayload {
|
|
4
|
+
user: User;
|
|
5
|
+
tenantId?: string;
|
|
6
|
+
session: SessionPayload;
|
|
7
|
+
logoutType: 'user' | 'admin' | 'system';
|
|
8
|
+
reason?: string;
|
|
9
|
+
}
|
|
10
|
+
export declare class LoggedOutEvent {
|
|
11
|
+
readonly payload: LoggedOutEventPayload;
|
|
12
|
+
constructor(payload: LoggedOutEventPayload);
|
|
13
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.LoggedOutEvent = void 0;
|
|
4
|
+
class LoggedOutEvent {
|
|
5
|
+
constructor(payload) {
|
|
6
|
+
this.payload = payload;
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
exports.LoggedOutEvent = LoggedOutEvent;
|
|
10
|
+
//# sourceMappingURL=logged-out.event.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logged-out.event.js","sourceRoot":"","sources":["../../../../../../packages/nest-auth/src/lib/events/logged-out.event.ts"],"names":[],"mappings":";;;AAWA,MAAa,cAAc;IACvB,YACoB,OAA8B;QAA9B,YAAO,GAAP,OAAO,CAAuB;IAC9C,CAAC;CACR;AAJD,wCAIC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { User } from "../entities/user.entity";
|
|
2
|
+
import { ForgotPasswordRequestDto } from "../dto/requests/forgot-password.request.dto";
|
|
3
|
+
import { OTP } from "../entities/otp.entity";
|
|
4
|
+
import { BaseAuthProvider } from "../providers/base-auth.provider";
|
|
5
|
+
export interface PasswordResetRequestedEventPayload {
|
|
6
|
+
user: User;
|
|
7
|
+
tenantId?: string;
|
|
8
|
+
input: ForgotPasswordRequestDto;
|
|
9
|
+
otp: OTP;
|
|
10
|
+
provider: BaseAuthProvider;
|
|
11
|
+
}
|
|
12
|
+
export declare class PasswordResetRequestedEvent {
|
|
13
|
+
readonly payload: PasswordResetRequestedEventPayload;
|
|
14
|
+
constructor(payload: PasswordResetRequestedEventPayload);
|
|
15
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PasswordResetRequestedEvent = void 0;
|
|
4
|
+
class PasswordResetRequestedEvent {
|
|
5
|
+
constructor(payload) {
|
|
6
|
+
this.payload = payload;
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
exports.PasswordResetRequestedEvent = PasswordResetRequestedEvent;
|
|
10
|
+
//# sourceMappingURL=password-reset-requested.event.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"password-reset-requested.event.js","sourceRoot":"","sources":["../../../../../../packages/nest-auth/src/lib/events/password-reset-requested.event.ts"],"names":[],"mappings":";;;AAaA,MAAa,2BAA2B;IACpC,YACoB,OAA2C;QAA3C,YAAO,GAAP,OAAO,CAAoC;IAC3D,CAAC;CACR;AAJD,kEAIC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { User } from "../entities/user.entity";
|
|
2
|
+
import { ResetPasswordRequestDto } from "../dto/requests/reset-password.request.dto";
|
|
3
|
+
export interface PasswordResetEventPayload {
|
|
4
|
+
user: User;
|
|
5
|
+
tenantId?: string;
|
|
6
|
+
input: ResetPasswordRequestDto;
|
|
7
|
+
}
|
|
8
|
+
export declare class PasswordResetEvent {
|
|
9
|
+
readonly payload: PasswordResetEventPayload;
|
|
10
|
+
constructor(payload: PasswordResetEventPayload);
|
|
11
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PasswordResetEvent = void 0;
|
|
4
|
+
class PasswordResetEvent {
|
|
5
|
+
constructor(payload) {
|
|
6
|
+
this.payload = payload;
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
exports.PasswordResetEvent = PasswordResetEvent;
|
|
10
|
+
//# sourceMappingURL=password-reset.event.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"password-reset.event.js","sourceRoot":"","sources":["../../../../../../packages/nest-auth/src/lib/events/password-reset.event.ts"],"names":[],"mappings":";;;AAUA,MAAa,kBAAkB;IAC3B,YACoB,OAAkC;QAAlC,YAAO,GAAP,OAAO,CAA2B;IAClD,CAAC;CACR;AAJD,gDAIC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Tenant } from '../entities/tenant.entity';
|
|
2
|
+
export interface TenantCreatedEventPayload {
|
|
3
|
+
tenant: Tenant;
|
|
4
|
+
}
|
|
5
|
+
export declare class TenantCreatedEvent {
|
|
6
|
+
readonly payload: TenantCreatedEventPayload;
|
|
7
|
+
constructor(payload: TenantCreatedEventPayload);
|
|
8
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TenantCreatedEvent = void 0;
|
|
4
|
+
class TenantCreatedEvent {
|
|
5
|
+
constructor(payload) {
|
|
6
|
+
this.payload = payload;
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
exports.TenantCreatedEvent = TenantCreatedEvent;
|
|
10
|
+
//# sourceMappingURL=tenant-created.event.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tenant-created.event.js","sourceRoot":"","sources":["../../../../../../packages/nest-auth/src/lib/events/tenant-created.event.ts"],"names":[],"mappings":";;;AAMA,MAAa,kBAAkB;IAC3B,YAA4B,OAAkC;QAAlC,YAAO,GAAP,OAAO,CAA2B;IAAI,CAAC;CACtE;AAFD,gDAEC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Tenant } from "../entities/tenant.entity";
|
|
2
|
+
export interface TenantDeletedEventPayload {
|
|
3
|
+
tenant: Tenant;
|
|
4
|
+
}
|
|
5
|
+
export declare class TenantDeletedEvent {
|
|
6
|
+
readonly payload: TenantDeletedEventPayload;
|
|
7
|
+
constructor(payload: TenantDeletedEventPayload);
|
|
8
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TenantDeletedEvent = void 0;
|
|
4
|
+
class TenantDeletedEvent {
|
|
5
|
+
constructor(payload) {
|
|
6
|
+
this.payload = payload;
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
exports.TenantDeletedEvent = TenantDeletedEvent;
|
|
10
|
+
//# sourceMappingURL=tenant-deleted.event.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tenant-deleted.event.js","sourceRoot":"","sources":["../../../../../../packages/nest-auth/src/lib/events/tenant-deleted.event.ts"],"names":[],"mappings":";;;AAMA,MAAa,kBAAkB;IAC3B,YACoB,OAAkC;QAAlC,YAAO,GAAP,OAAO,CAA2B;IAClD,CAAC;CACR;AAJD,gDAIC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { Tenant } from "../entities/tenant.entity";
|
|
2
|
+
export interface TenantUpdatedEventPayload {
|
|
3
|
+
tenant: Tenant;
|
|
4
|
+
updatedFields: string[];
|
|
5
|
+
}
|
|
6
|
+
export declare class TenantUpdatedEvent {
|
|
7
|
+
readonly payload: TenantUpdatedEventPayload;
|
|
8
|
+
constructor(payload: TenantUpdatedEventPayload);
|
|
9
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TenantUpdatedEvent = void 0;
|
|
4
|
+
class TenantUpdatedEvent {
|
|
5
|
+
constructor(payload) {
|
|
6
|
+
this.payload = payload;
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
exports.TenantUpdatedEvent = TenantUpdatedEvent;
|
|
10
|
+
//# sourceMappingURL=tenant-updated.event.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tenant-updated.event.js","sourceRoot":"","sources":["../../../../../../packages/nest-auth/src/lib/events/tenant-updated.event.ts"],"names":[],"mappings":";;;AAOA,MAAa,kBAAkB;IAC3B,YACoB,OAAkC;QAAlC,YAAO,GAAP,OAAO,CAA2B;IAClD,CAAC;CACR;AAJD,gDAIC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { User } from "../entities/user.entity";
|
|
2
|
+
import { Verify2faRequestDto } from "../dto/requests/verify-2fa.request.dto";
|
|
3
|
+
import { SessionPayload } from "../interfaces/token-payload.interface";
|
|
4
|
+
import { AuthTokensResponseDto } from "../dto";
|
|
5
|
+
export interface User2faVerifiedEventPayload {
|
|
6
|
+
user: User;
|
|
7
|
+
tenantId?: string;
|
|
8
|
+
input: Verify2faRequestDto;
|
|
9
|
+
session: SessionPayload;
|
|
10
|
+
tokens: AuthTokensResponseDto;
|
|
11
|
+
}
|
|
12
|
+
export declare class User2faVerifiedEvent {
|
|
13
|
+
readonly payload: User2faVerifiedEventPayload;
|
|
14
|
+
constructor(payload: User2faVerifiedEventPayload);
|
|
15
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.User2faVerifiedEvent = void 0;
|
|
4
|
+
class User2faVerifiedEvent {
|
|
5
|
+
constructor(payload) {
|
|
6
|
+
this.payload = payload;
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
exports.User2faVerifiedEvent = User2faVerifiedEvent;
|
|
10
|
+
//# sourceMappingURL=user-2fa-verified.event.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"user-2fa-verified.event.js","sourceRoot":"","sources":["../../../../../../packages/nest-auth/src/lib/events/user-2fa-verified.event.ts"],"names":[],"mappings":";;;AAeA,MAAa,oBAAoB;IAC7B,YACoB,OAAoC;QAApC,YAAO,GAAP,OAAO,CAA6B;IACpD,CAAC;CACR;AAJD,oDAIC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { User } from '../entities/user.entity';
|
|
2
|
+
export interface UserCreatedEventPayload {
|
|
3
|
+
user: User;
|
|
4
|
+
tenantId?: string;
|
|
5
|
+
}
|
|
6
|
+
export declare class UserCreatedEvent {
|
|
7
|
+
readonly payload: UserCreatedEventPayload;
|
|
8
|
+
constructor(payload: UserCreatedEventPayload);
|
|
9
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.UserCreatedEvent = void 0;
|
|
4
|
+
class UserCreatedEvent {
|
|
5
|
+
constructor(payload) {
|
|
6
|
+
this.payload = payload;
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
exports.UserCreatedEvent = UserCreatedEvent;
|
|
10
|
+
//# sourceMappingURL=user-created.event.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"user-created.event.js","sourceRoot":"","sources":["../../../../../../packages/nest-auth/src/lib/events/user-created.event.ts"],"names":[],"mappings":";;;AAOA,MAAa,gBAAgB;IACzB,YAA4B,OAAgC;QAAhC,YAAO,GAAP,OAAO,CAAyB;IAAI,CAAC;CACpE;AAFD,4CAEC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { User } from "../entities/user.entity";
|
|
2
|
+
export interface UserDeletedEventPayload {
|
|
3
|
+
user: User;
|
|
4
|
+
tenantId?: string;
|
|
5
|
+
}
|
|
6
|
+
export declare class UserDeletedEvent {
|
|
7
|
+
readonly payload: UserDeletedEventPayload;
|
|
8
|
+
constructor(payload: UserDeletedEventPayload);
|
|
9
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.UserDeletedEvent = void 0;
|
|
4
|
+
class UserDeletedEvent {
|
|
5
|
+
constructor(payload) {
|
|
6
|
+
this.payload = payload;
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
exports.UserDeletedEvent = UserDeletedEvent;
|
|
10
|
+
//# sourceMappingURL=user-deleted.event.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"user-deleted.event.js","sourceRoot":"","sources":["../../../../../../packages/nest-auth/src/lib/events/user-deleted.event.ts"],"names":[],"mappings":";;;AAOA,MAAa,gBAAgB;IACzB,YACoB,OAAgC;QAAhC,YAAO,GAAP,OAAO,CAAyB;IAChD,CAAC;CACR;AAJD,4CAIC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { User } from "../entities/user.entity";
|
|
2
|
+
import { BaseAuthProvider } from "../providers/base-auth.provider";
|
|
3
|
+
import { AuthTokensResponseDto, LoginRequestDto } from "../dto";
|
|
4
|
+
import { SessionPayload } from "../interfaces/token-payload.interface";
|
|
5
|
+
export interface UserLoggedInEventPayload {
|
|
6
|
+
user: User;
|
|
7
|
+
tenantId?: string;
|
|
8
|
+
input: LoginRequestDto;
|
|
9
|
+
provider: BaseAuthProvider;
|
|
10
|
+
session: SessionPayload;
|
|
11
|
+
tokens: AuthTokensResponseDto;
|
|
12
|
+
isRequiresMfa: boolean;
|
|
13
|
+
}
|
|
14
|
+
export declare class UserLoggedInEvent {
|
|
15
|
+
readonly payload: UserLoggedInEventPayload;
|
|
16
|
+
constructor(payload: UserLoggedInEventPayload);
|
|
17
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.UserLoggedInEvent = void 0;
|
|
4
|
+
class UserLoggedInEvent {
|
|
5
|
+
constructor(payload) {
|
|
6
|
+
this.payload = payload;
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
exports.UserLoggedInEvent = UserLoggedInEvent;
|
|
10
|
+
//# sourceMappingURL=user-logged-in.event.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"user-logged-in.event.js","sourceRoot":"","sources":["../../../../../../packages/nest-auth/src/lib/events/user-logged-in.event.ts"],"names":[],"mappings":";;;AAgBA,MAAa,iBAAiB;IAC1B,YACoB,OAAiC;QAAjC,YAAO,GAAP,OAAO,CAA0B;IACjD,CAAC;CACR;AAJD,8CAIC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { SessionPayload } from "../interfaces/token-payload.interface";
|
|
2
|
+
import { AuthTokensResponseDto } from "../dto";
|
|
3
|
+
export interface UserRefreshTokenEventPayload {
|
|
4
|
+
session: SessionPayload;
|
|
5
|
+
tokens: AuthTokensResponseDto;
|
|
6
|
+
oldRefreshToken: string;
|
|
7
|
+
}
|
|
8
|
+
export declare class UserRefreshTokenEvent {
|
|
9
|
+
readonly payload: UserRefreshTokenEventPayload;
|
|
10
|
+
constructor(payload: UserRefreshTokenEventPayload);
|
|
11
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.UserRefreshTokenEvent = void 0;
|
|
4
|
+
class UserRefreshTokenEvent {
|
|
5
|
+
constructor(payload) {
|
|
6
|
+
this.payload = payload;
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
exports.UserRefreshTokenEvent = UserRefreshTokenEvent;
|
|
10
|
+
//# sourceMappingURL=user-refresh-token.event.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"user-refresh-token.event.js","sourceRoot":"","sources":["../../../../../../packages/nest-auth/src/lib/events/user-refresh-token.event.ts"],"names":[],"mappings":";;;AAUA,MAAa,qBAAqB;IAC9B,YACoB,OAAqC;QAArC,YAAO,GAAP,OAAO,CAA8B;IACrD,CAAC;CACR;AAJD,sDAIC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { User } from "../entities/user.entity";
|
|
2
|
+
import { BaseAuthProvider } from "../providers/base-auth.provider";
|
|
3
|
+
import { AuthTokensResponseDto, SignupRequestDto } from "../dto";
|
|
4
|
+
import { SessionPayload } from "../interfaces/token-payload.interface";
|
|
5
|
+
export interface UserRegisteredEventPayload {
|
|
6
|
+
user: User;
|
|
7
|
+
tenantId?: string;
|
|
8
|
+
input: SignupRequestDto;
|
|
9
|
+
provider: BaseAuthProvider;
|
|
10
|
+
session: SessionPayload;
|
|
11
|
+
tokens: AuthTokensResponseDto;
|
|
12
|
+
isRequiresMfa: boolean;
|
|
13
|
+
}
|
|
14
|
+
export declare class UserRegisteredEvent {
|
|
15
|
+
readonly payload: UserRegisteredEventPayload;
|
|
16
|
+
constructor(payload: UserRegisteredEventPayload);
|
|
17
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.UserRegisteredEvent = void 0;
|
|
4
|
+
class UserRegisteredEvent {
|
|
5
|
+
constructor(payload) {
|
|
6
|
+
this.payload = payload;
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
exports.UserRegisteredEvent = UserRegisteredEvent;
|
|
10
|
+
//# sourceMappingURL=user-registered.event.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"user-registered.event.js","sourceRoot":"","sources":["../../../../../../packages/nest-auth/src/lib/events/user-registered.event.ts"],"names":[],"mappings":";;;AAgBA,MAAa,mBAAmB;IAC5B,YACoB,OAAmC;QAAnC,YAAO,GAAP,OAAO,CAA4B;IACnD,CAAC;CACR;AAJD,kDAIC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { User } from "../entities/user.entity";
|
|
2
|
+
export interface UserUpdatedEventPayload {
|
|
3
|
+
user: User;
|
|
4
|
+
tenantId?: string;
|
|
5
|
+
updatedFields: string[];
|
|
6
|
+
}
|
|
7
|
+
export declare class UserUpdatedEvent {
|
|
8
|
+
readonly payload: UserUpdatedEventPayload;
|
|
9
|
+
constructor(payload: UserUpdatedEventPayload);
|
|
10
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.UserUpdatedEvent = void 0;
|
|
4
|
+
class UserUpdatedEvent {
|
|
5
|
+
constructor(payload) {
|
|
6
|
+
this.payload = payload;
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
exports.UserUpdatedEvent = UserUpdatedEvent;
|
|
10
|
+
//# sourceMappingURL=user-updated.event.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"user-updated.event.js","sourceRoot":"","sources":["../../../../../../packages/nest-auth/src/lib/events/user-updated.event.ts"],"names":[],"mappings":";;;AAQA,MAAa,gBAAgB;IACzB,YACoB,OAAgC;QAAhC,YAAO,GAAP,OAAO,CAAyB;IAChD,CAAC;CACR;AAJD,4CAIC"}
|
|
@@ -1,18 +1,21 @@
|
|
|
1
|
-
import { ExecutionContext } from '@nestjs/common';
|
|
1
|
+
import { CanActivate, ExecutionContext } from '@nestjs/common';
|
|
2
2
|
import { Reflector } from '@nestjs/core';
|
|
3
3
|
import { JwtService } from '../services/jwt.service';
|
|
4
4
|
import { AuthService } from '../services/auth.service';
|
|
5
5
|
import { BaseSessionService } from '../services/session/base-session.service';
|
|
6
6
|
import { CookieService } from '../services/cookie.service';
|
|
7
|
-
|
|
7
|
+
import { AccessKeyService } from '../services/access-key.service';
|
|
8
|
+
export declare class AuthGuard implements CanActivate {
|
|
9
|
+
private reflector;
|
|
8
10
|
private jwtService;
|
|
9
11
|
private authService;
|
|
10
12
|
private sessionService;
|
|
11
13
|
private cookieService;
|
|
12
|
-
private
|
|
13
|
-
constructor(jwtService: JwtService, authService: AuthService, sessionService: BaseSessionService, cookieService: CookieService,
|
|
14
|
+
private accessKeyService;
|
|
15
|
+
constructor(reflector: Reflector, jwtService: JwtService, authService: AuthService, sessionService: BaseSessionService, cookieService: CookieService, accessKeyService: AccessKeyService);
|
|
14
16
|
canActivate(context: ExecutionContext): Promise<boolean>;
|
|
15
|
-
private
|
|
17
|
+
private handleJwtAuth;
|
|
18
|
+
private handleApiKeyAuth;
|
|
16
19
|
private extractRefreshToken;
|
|
17
20
|
private checkMfa;
|
|
18
21
|
}
|
|
@@ -10,63 +10,89 @@ const jwt_service_1 = require("../services/jwt.service");
|
|
|
10
10
|
const auth_service_1 = require("../services/auth.service");
|
|
11
11
|
const base_session_service_1 = require("../services/session/base-session.service");
|
|
12
12
|
const cookie_service_1 = require("../services/cookie.service");
|
|
13
|
+
const access_key_service_1 = require("../services/access-key.service");
|
|
13
14
|
let AuthGuard = class AuthGuard {
|
|
14
|
-
constructor(jwtService, authService, sessionService, cookieService,
|
|
15
|
+
constructor(reflector, jwtService, authService, sessionService, cookieService, accessKeyService) {
|
|
16
|
+
this.reflector = reflector;
|
|
15
17
|
this.jwtService = jwtService;
|
|
16
18
|
this.authService = authService;
|
|
17
19
|
this.sessionService = sessionService;
|
|
18
20
|
this.cookieService = cookieService;
|
|
19
|
-
this.
|
|
21
|
+
this.accessKeyService = accessKeyService;
|
|
20
22
|
}
|
|
21
23
|
async canActivate(context) {
|
|
22
24
|
const request = context.switchToHttp().getRequest();
|
|
23
25
|
const response = context.switchToHttp().getResponse();
|
|
24
|
-
const
|
|
25
|
-
if (!
|
|
26
|
+
const authHeader = request.headers.authorization;
|
|
27
|
+
if (!authHeader) {
|
|
26
28
|
throw new common_1.UnauthorizedException({
|
|
27
|
-
message: 'No
|
|
28
|
-
code:
|
|
29
|
+
message: 'No authentication provided',
|
|
30
|
+
code: 'NO_AUTH'
|
|
29
31
|
});
|
|
30
32
|
}
|
|
33
|
+
const [type, token] = authHeader.split(' ');
|
|
34
|
+
switch (type.toLowerCase()) {
|
|
35
|
+
case 'bearer':
|
|
36
|
+
return await this.handleJwtAuth(context, request, response, token);
|
|
37
|
+
case 'apikey':
|
|
38
|
+
return await this.handleApiKeyAuth(request, token);
|
|
39
|
+
default:
|
|
40
|
+
throw new common_1.UnauthorizedException({
|
|
41
|
+
message: 'Invalid authentication type',
|
|
42
|
+
code: 'INVALID_AUTH_TYPE'
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
async handleJwtAuth(context, request, response, token) {
|
|
31
47
|
try {
|
|
32
|
-
const payload = await this.jwtService.verifyToken(
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
message: 'Session not found',
|
|
38
|
-
code: auth_constants_1.UNAUTHORIZED_EXCEPTION_CODE
|
|
39
|
-
});
|
|
40
|
-
}
|
|
41
|
-
request.user = payload;
|
|
42
|
-
request.session = session;
|
|
43
|
-
await this.checkMfa(context, payload);
|
|
44
|
-
return true;
|
|
45
|
-
}
|
|
46
|
-
else {
|
|
48
|
+
const payload = await this.jwtService.verifyToken(token);
|
|
49
|
+
request['user'] = payload;
|
|
50
|
+
request['authType'] = 'jwt';
|
|
51
|
+
const session = await this.sessionService.getSession(payload.sessionId);
|
|
52
|
+
if (!session) {
|
|
47
53
|
throw new common_1.UnauthorizedException({
|
|
48
|
-
message: '
|
|
54
|
+
message: 'Session not found',
|
|
49
55
|
code: auth_constants_1.UNAUTHORIZED_EXCEPTION_CODE
|
|
50
56
|
});
|
|
51
57
|
}
|
|
58
|
+
request['session'] = session;
|
|
59
|
+
await this.checkMfa(context, payload);
|
|
60
|
+
return true;
|
|
52
61
|
}
|
|
53
62
|
catch (error) {
|
|
54
63
|
const refreshToken = this.extractRefreshToken(request);
|
|
64
|
+
if (!refreshToken) {
|
|
65
|
+
throw new common_1.UnauthorizedException({
|
|
66
|
+
message: 'Invalid token',
|
|
67
|
+
code: auth_constants_1.UNAUTHORIZED_EXCEPTION_CODE
|
|
68
|
+
});
|
|
69
|
+
}
|
|
55
70
|
const newSession = await this.authService.refreshToken(refreshToken);
|
|
56
71
|
this.cookieService.setTokens(response, newSession.accessToken, newSession.refreshToken);
|
|
57
72
|
return true;
|
|
58
73
|
}
|
|
59
74
|
}
|
|
60
|
-
|
|
61
|
-
const
|
|
62
|
-
if (
|
|
63
|
-
|
|
75
|
+
async handleApiKeyAuth(request, token) {
|
|
76
|
+
const [publicKey, privateKey] = token.split('.');
|
|
77
|
+
if (!publicKey || !privateKey) {
|
|
78
|
+
throw new common_1.UnauthorizedException({
|
|
79
|
+
message: 'Invalid API key format',
|
|
80
|
+
code: 'INVALID_API_KEY_FORMAT'
|
|
81
|
+
});
|
|
64
82
|
}
|
|
65
|
-
const
|
|
66
|
-
if (
|
|
67
|
-
|
|
83
|
+
const isValid = await this.accessKeyService.validateAccessKey(publicKey, privateKey);
|
|
84
|
+
if (!isValid) {
|
|
85
|
+
throw new common_1.UnauthorizedException({
|
|
86
|
+
message: 'Invalid API key',
|
|
87
|
+
code: 'INVALID_API_KEY'
|
|
88
|
+
});
|
|
68
89
|
}
|
|
69
|
-
|
|
90
|
+
const accessKey = await this.accessKeyService.getAccessKey(publicKey);
|
|
91
|
+
await this.accessKeyService.updateAccessKeyLastUsed(publicKey);
|
|
92
|
+
request['user'] = accessKey.user;
|
|
93
|
+
request['accessKey'] = accessKey;
|
|
94
|
+
request['authType'] = 'api-key';
|
|
95
|
+
return true;
|
|
70
96
|
}
|
|
71
97
|
extractRefreshToken(request) {
|
|
72
98
|
const tokenFromCookie = request.cookies?.[auth_constants_1.REFRESH_TOKEN_COOKIE_NAME];
|
|
@@ -97,10 +123,11 @@ let AuthGuard = class AuthGuard {
|
|
|
97
123
|
exports.AuthGuard = AuthGuard;
|
|
98
124
|
exports.AuthGuard = AuthGuard = tslib_1.__decorate([
|
|
99
125
|
(0, common_1.Injectable)(),
|
|
100
|
-
tslib_1.__metadata("design:paramtypes", [
|
|
126
|
+
tslib_1.__metadata("design:paramtypes", [core_1.Reflector,
|
|
127
|
+
jwt_service_1.JwtService,
|
|
101
128
|
auth_service_1.AuthService,
|
|
102
129
|
base_session_service_1.BaseSessionService,
|
|
103
130
|
cookie_service_1.CookieService,
|
|
104
|
-
|
|
131
|
+
access_key_service_1.AccessKeyService])
|
|
105
132
|
], AuthGuard);
|
|
106
133
|
//# sourceMappingURL=auth.guard.js.map
|