@flusys/nestjs-auth 1.0.0-beta → 1.1.0-beta
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/cjs/config/auth.constants.js +4 -0
- package/cjs/controllers/authentication.controller.js +167 -5
- package/cjs/controllers/user.controller.js +151 -0
- package/cjs/dtos/authentication.dto.js +106 -3
- package/cjs/entities/index.js +5 -1
- package/cjs/entities/pending-registration.entity.js +125 -0
- package/cjs/entities/user-token.entity.js +129 -0
- package/cjs/interfaces/auth-email-provider.interface.js +45 -0
- package/cjs/interfaces/index.js +2 -0
- package/cjs/interfaces/user-enricher.interface.js +4 -0
- package/cjs/modules/auth.module.js +8 -2
- package/cjs/services/auth-config.service.js +4 -0
- package/cjs/services/auth-datasource.provider.js +4 -2
- package/cjs/services/auth-email.service.js +452 -0
- package/cjs/services/authentication.service.js +156 -37
- package/cjs/services/index.js +1 -0
- package/cjs/services/user.service.js +147 -11
- package/config/auth.constants.d.ts +1 -0
- package/controllers/authentication.controller.d.ts +13 -9
- package/controllers/user.controller.d.ts +27 -0
- package/dtos/authentication.dto.d.ts +21 -3
- package/dtos/user.dto.d.ts +1 -0
- package/entities/index.d.ts +7 -3
- package/entities/pending-registration.entity.d.ts +17 -0
- package/entities/user-token.entity.d.ts +15 -0
- package/fesm/config/auth.constants.js +11 -0
- package/fesm/controllers/authentication.controller.js +168 -6
- package/fesm/controllers/user.controller.js +151 -0
- package/fesm/dtos/authentication.dto.js +92 -3
- package/fesm/entities/index.js +7 -1
- package/fesm/entities/pending-registration.entity.js +115 -0
- package/fesm/entities/user-token.entity.js +113 -0
- package/fesm/interfaces/auth-email-provider.interface.js +38 -0
- package/fesm/interfaces/authentication.interface.js +1 -1
- package/fesm/interfaces/index.js +2 -0
- package/fesm/interfaces/user-enricher.interface.js +26 -0
- package/fesm/modules/auth.module.js +9 -3
- package/fesm/services/auth-config.service.js +4 -0
- package/fesm/services/auth-datasource.provider.js +4 -2
- package/fesm/services/auth-email.service.js +401 -0
- package/fesm/services/authentication.service.js +156 -37
- package/fesm/services/index.js +1 -0
- package/fesm/services/user.service.js +149 -13
- package/interfaces/auth-email-provider.interface.d.ts +6 -0
- package/interfaces/auth-module-options.interface.d.ts +4 -1
- package/interfaces/authentication.interface.d.ts +14 -0
- package/interfaces/index.d.ts +2 -0
- package/interfaces/user-enricher.interface.d.ts +67 -0
- package/interfaces/user.interface.d.ts +1 -0
- package/package.json +3 -3
- package/services/auth-config.service.d.ts +1 -0
- package/services/auth-email.service.d.ts +50 -0
- package/services/authentication.service.d.ts +16 -4
- package/services/index.d.ts +1 -0
- package/services/user.service.d.ts +16 -3
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
Object.defineProperty(exports, "PendingRegistration", {
|
|
6
|
+
enumerable: true,
|
|
7
|
+
get: function() {
|
|
8
|
+
return PendingRegistration;
|
|
9
|
+
}
|
|
10
|
+
});
|
|
11
|
+
const _typeorm = require("typeorm");
|
|
12
|
+
function _define_property(obj, key, value) {
|
|
13
|
+
if (key in obj) {
|
|
14
|
+
Object.defineProperty(obj, key, {
|
|
15
|
+
value: value,
|
|
16
|
+
enumerable: true,
|
|
17
|
+
configurable: true,
|
|
18
|
+
writable: true
|
|
19
|
+
});
|
|
20
|
+
} else {
|
|
21
|
+
obj[key] = value;
|
|
22
|
+
}
|
|
23
|
+
return obj;
|
|
24
|
+
}
|
|
25
|
+
function _ts_decorate(decorators, target, key, desc) {
|
|
26
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
27
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
28
|
+
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;
|
|
29
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
30
|
+
}
|
|
31
|
+
function _ts_metadata(k, v) {
|
|
32
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
33
|
+
}
|
|
34
|
+
let PendingRegistration = class PendingRegistration {
|
|
35
|
+
constructor(){
|
|
36
|
+
_define_property(this, "id", void 0);
|
|
37
|
+
_define_property(this, "email", void 0);
|
|
38
|
+
_define_property(this, "name", void 0);
|
|
39
|
+
_define_property(this, "phone", void 0);
|
|
40
|
+
_define_property(this, "passwordHash", void 0);
|
|
41
|
+
_define_property(this, "token", void 0);
|
|
42
|
+
_define_property(this, "expiresAt", void 0);
|
|
43
|
+
_define_property(this, "companyData", void 0);
|
|
44
|
+
_define_property(this, "createdAt", void 0);
|
|
45
|
+
}
|
|
46
|
+
};
|
|
47
|
+
_ts_decorate([
|
|
48
|
+
(0, _typeorm.PrimaryGeneratedColumn)('uuid'),
|
|
49
|
+
_ts_metadata("design:type", String)
|
|
50
|
+
], PendingRegistration.prototype, "id", void 0);
|
|
51
|
+
_ts_decorate([
|
|
52
|
+
(0, _typeorm.Column)({
|
|
53
|
+
type: 'varchar',
|
|
54
|
+
length: 255
|
|
55
|
+
}),
|
|
56
|
+
_ts_metadata("design:type", String)
|
|
57
|
+
], PendingRegistration.prototype, "email", void 0);
|
|
58
|
+
_ts_decorate([
|
|
59
|
+
(0, _typeorm.Column)({
|
|
60
|
+
type: 'varchar',
|
|
61
|
+
length: 255,
|
|
62
|
+
nullable: true
|
|
63
|
+
}),
|
|
64
|
+
_ts_metadata("design:type", Object)
|
|
65
|
+
], PendingRegistration.prototype, "name", void 0);
|
|
66
|
+
_ts_decorate([
|
|
67
|
+
(0, _typeorm.Column)({
|
|
68
|
+
type: 'varchar',
|
|
69
|
+
length: 255,
|
|
70
|
+
nullable: true
|
|
71
|
+
}),
|
|
72
|
+
_ts_metadata("design:type", Object)
|
|
73
|
+
], PendingRegistration.prototype, "phone", void 0);
|
|
74
|
+
_ts_decorate([
|
|
75
|
+
(0, _typeorm.Column)({
|
|
76
|
+
type: 'text',
|
|
77
|
+
name: 'passwordHash'
|
|
78
|
+
}),
|
|
79
|
+
_ts_metadata("design:type", String)
|
|
80
|
+
], PendingRegistration.prototype, "passwordHash", void 0);
|
|
81
|
+
_ts_decorate([
|
|
82
|
+
(0, _typeorm.Column)({
|
|
83
|
+
type: 'varchar',
|
|
84
|
+
length: 64
|
|
85
|
+
}),
|
|
86
|
+
_ts_metadata("design:type", String)
|
|
87
|
+
], PendingRegistration.prototype, "token", void 0);
|
|
88
|
+
_ts_decorate([
|
|
89
|
+
(0, _typeorm.Column)({
|
|
90
|
+
type: 'timestamp',
|
|
91
|
+
name: 'expires_at'
|
|
92
|
+
}),
|
|
93
|
+
_ts_metadata("design:type", typeof Date === "undefined" ? Object : Date)
|
|
94
|
+
], PendingRegistration.prototype, "expiresAt", void 0);
|
|
95
|
+
_ts_decorate([
|
|
96
|
+
(0, _typeorm.Column)({
|
|
97
|
+
type: 'json',
|
|
98
|
+
nullable: true,
|
|
99
|
+
name: 'company_data'
|
|
100
|
+
}),
|
|
101
|
+
_ts_metadata("design:type", Object)
|
|
102
|
+
], PendingRegistration.prototype, "companyData", void 0);
|
|
103
|
+
_ts_decorate([
|
|
104
|
+
(0, _typeorm.CreateDateColumn)({
|
|
105
|
+
type: 'timestamp',
|
|
106
|
+
name: 'created_at'
|
|
107
|
+
}),
|
|
108
|
+
_ts_metadata("design:type", typeof Date === "undefined" ? Object : Date)
|
|
109
|
+
], PendingRegistration.prototype, "createdAt", void 0);
|
|
110
|
+
PendingRegistration = _ts_decorate([
|
|
111
|
+
(0, _typeorm.Entity)('pending_registrations'),
|
|
112
|
+
(0, _typeorm.Index)('IDX_pending_reg_email', [
|
|
113
|
+
'email'
|
|
114
|
+
], {
|
|
115
|
+
unique: true
|
|
116
|
+
}),
|
|
117
|
+
(0, _typeorm.Index)('IDX_pending_reg_token', [
|
|
118
|
+
'token'
|
|
119
|
+
], {
|
|
120
|
+
unique: true
|
|
121
|
+
}),
|
|
122
|
+
(0, _typeorm.Index)('IDX_pending_reg_expires', [
|
|
123
|
+
'expiresAt'
|
|
124
|
+
])
|
|
125
|
+
], PendingRegistration);
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
|
3
|
+
value: true
|
|
4
|
+
});
|
|
5
|
+
function _export(target, all) {
|
|
6
|
+
for(var name in all)Object.defineProperty(target, name, {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: Object.getOwnPropertyDescriptor(all, name).get
|
|
9
|
+
});
|
|
10
|
+
}
|
|
11
|
+
_export(exports, {
|
|
12
|
+
get TokenType () {
|
|
13
|
+
return TokenType;
|
|
14
|
+
},
|
|
15
|
+
get UserToken () {
|
|
16
|
+
return UserToken;
|
|
17
|
+
}
|
|
18
|
+
});
|
|
19
|
+
const _typeorm = require("typeorm");
|
|
20
|
+
function _define_property(obj, key, value) {
|
|
21
|
+
if (key in obj) {
|
|
22
|
+
Object.defineProperty(obj, key, {
|
|
23
|
+
value: value,
|
|
24
|
+
enumerable: true,
|
|
25
|
+
configurable: true,
|
|
26
|
+
writable: true
|
|
27
|
+
});
|
|
28
|
+
} else {
|
|
29
|
+
obj[key] = value;
|
|
30
|
+
}
|
|
31
|
+
return obj;
|
|
32
|
+
}
|
|
33
|
+
function _ts_decorate(decorators, target, key, desc) {
|
|
34
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
35
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
36
|
+
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;
|
|
37
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
38
|
+
}
|
|
39
|
+
function _ts_metadata(k, v) {
|
|
40
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
41
|
+
}
|
|
42
|
+
var TokenType = /*#__PURE__*/ function(TokenType) {
|
|
43
|
+
TokenType["PASSWORD_RESET"] = "password_reset";
|
|
44
|
+
TokenType["EMAIL_VERIFICATION"] = "email_verification";
|
|
45
|
+
TokenType["EMAIL_CHANGE"] = "email_change";
|
|
46
|
+
return TokenType;
|
|
47
|
+
}({});
|
|
48
|
+
let UserToken = class UserToken {
|
|
49
|
+
constructor(){
|
|
50
|
+
_define_property(this, "id", void 0);
|
|
51
|
+
_define_property(this, "userId", void 0);
|
|
52
|
+
_define_property(this, "type", void 0);
|
|
53
|
+
_define_property(this, "token", void 0);
|
|
54
|
+
_define_property(this, "expiresAt", void 0);
|
|
55
|
+
_define_property(this, "usedAt", void 0);
|
|
56
|
+
_define_property(this, "metadata", void 0);
|
|
57
|
+
_define_property(this, "createdAt", void 0);
|
|
58
|
+
}
|
|
59
|
+
};
|
|
60
|
+
_ts_decorate([
|
|
61
|
+
(0, _typeorm.PrimaryGeneratedColumn)('uuid'),
|
|
62
|
+
_ts_metadata("design:type", String)
|
|
63
|
+
], UserToken.prototype, "id", void 0);
|
|
64
|
+
_ts_decorate([
|
|
65
|
+
(0, _typeorm.Column)({
|
|
66
|
+
type: 'uuid',
|
|
67
|
+
name: 'user_id'
|
|
68
|
+
}),
|
|
69
|
+
_ts_metadata("design:type", String)
|
|
70
|
+
], UserToken.prototype, "userId", void 0);
|
|
71
|
+
_ts_decorate([
|
|
72
|
+
(0, _typeorm.Column)({
|
|
73
|
+
type: 'varchar',
|
|
74
|
+
length: 32
|
|
75
|
+
}),
|
|
76
|
+
_ts_metadata("design:type", String)
|
|
77
|
+
], UserToken.prototype, "type", void 0);
|
|
78
|
+
_ts_decorate([
|
|
79
|
+
(0, _typeorm.Column)({
|
|
80
|
+
type: 'varchar',
|
|
81
|
+
length: 64
|
|
82
|
+
}),
|
|
83
|
+
_ts_metadata("design:type", String)
|
|
84
|
+
], UserToken.prototype, "token", void 0);
|
|
85
|
+
_ts_decorate([
|
|
86
|
+
(0, _typeorm.Column)({
|
|
87
|
+
type: 'timestamp',
|
|
88
|
+
name: 'expires_at'
|
|
89
|
+
}),
|
|
90
|
+
_ts_metadata("design:type", typeof Date === "undefined" ? Object : Date)
|
|
91
|
+
], UserToken.prototype, "expiresAt", void 0);
|
|
92
|
+
_ts_decorate([
|
|
93
|
+
(0, _typeorm.Column)({
|
|
94
|
+
type: 'timestamp',
|
|
95
|
+
name: 'used_at',
|
|
96
|
+
nullable: true
|
|
97
|
+
}),
|
|
98
|
+
_ts_metadata("design:type", Object)
|
|
99
|
+
], UserToken.prototype, "usedAt", void 0);
|
|
100
|
+
_ts_decorate([
|
|
101
|
+
(0, _typeorm.Column)({
|
|
102
|
+
type: 'varchar',
|
|
103
|
+
length: 255,
|
|
104
|
+
nullable: true
|
|
105
|
+
}),
|
|
106
|
+
_ts_metadata("design:type", Object)
|
|
107
|
+
], UserToken.prototype, "metadata", void 0);
|
|
108
|
+
_ts_decorate([
|
|
109
|
+
(0, _typeorm.CreateDateColumn)({
|
|
110
|
+
type: 'timestamp',
|
|
111
|
+
name: 'created_at'
|
|
112
|
+
}),
|
|
113
|
+
_ts_metadata("design:type", typeof Date === "undefined" ? Object : Date)
|
|
114
|
+
], UserToken.prototype, "createdAt", void 0);
|
|
115
|
+
UserToken = _ts_decorate([
|
|
116
|
+
(0, _typeorm.Entity)('user_tokens'),
|
|
117
|
+
(0, _typeorm.Index)('IDX_user_token_token', [
|
|
118
|
+
'token'
|
|
119
|
+
], {
|
|
120
|
+
unique: true
|
|
121
|
+
}),
|
|
122
|
+
(0, _typeorm.Index)('IDX_user_token_user_type', [
|
|
123
|
+
'userId',
|
|
124
|
+
'type'
|
|
125
|
+
]),
|
|
126
|
+
(0, _typeorm.Index)('IDX_user_token_expires', [
|
|
127
|
+
'expiresAt'
|
|
128
|
+
])
|
|
129
|
+
], UserToken);
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Auth Email Provider Interface
|
|
3
|
+
*
|
|
4
|
+
* This interface defines the contract for email sending in the auth module.
|
|
5
|
+
* It allows auth to work independently of the email module.
|
|
6
|
+
*
|
|
7
|
+
* To use email features in auth:
|
|
8
|
+
* 1. Provide AUTH_EMAIL_PROVIDER in your app module
|
|
9
|
+
* 2. Implement IAuthEmailProvider using EmailSendService from nestjs-email
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* ```typescript
|
|
13
|
+
* // In app.module.ts or a provider file
|
|
14
|
+
* {
|
|
15
|
+
* provide: AUTH_EMAIL_PROVIDER,
|
|
16
|
+
* useFactory: (emailSendService: EmailSendService) => ({
|
|
17
|
+
* sendPasswordResetEmail: async (email, token, resetUrl) => {
|
|
18
|
+
* await emailSendService.sendTemplateEmail({
|
|
19
|
+
* templateSlug: 'password-reset',
|
|
20
|
+
* to: email,
|
|
21
|
+
* variables: { resetUrl, token },
|
|
22
|
+
* });
|
|
23
|
+
* },
|
|
24
|
+
* sendVerificationEmail: async (email, token, verifyUrl) => {
|
|
25
|
+
* await emailSendService.sendTemplateEmail({
|
|
26
|
+
* templateSlug: 'email-verification',
|
|
27
|
+
* to: email,
|
|
28
|
+
* variables: { verifyUrl, token },
|
|
29
|
+
* });
|
|
30
|
+
* },
|
|
31
|
+
* }),
|
|
32
|
+
* inject: [EmailSendService],
|
|
33
|
+
* }
|
|
34
|
+
* ```
|
|
35
|
+
*/ "use strict";
|
|
36
|
+
Object.defineProperty(exports, "__esModule", {
|
|
37
|
+
value: true
|
|
38
|
+
});
|
|
39
|
+
Object.defineProperty(exports, "AUTH_EMAIL_PROVIDER", {
|
|
40
|
+
enumerable: true,
|
|
41
|
+
get: function() {
|
|
42
|
+
return AUTH_EMAIL_PROVIDER;
|
|
43
|
+
}
|
|
44
|
+
});
|
|
45
|
+
const AUTH_EMAIL_PROVIDER = 'AUTH_EMAIL_PROVIDER';
|
package/cjs/interfaces/index.js
CHANGED
|
@@ -3,9 +3,11 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
3
3
|
value: true
|
|
4
4
|
});
|
|
5
5
|
_export_star(require("./authentication.interface"), exports);
|
|
6
|
+
_export_star(require("./auth-email-provider.interface"), exports);
|
|
6
7
|
_export_star(require("./company-branch.interface"), exports);
|
|
7
8
|
_export_star(require("./company.interface"), exports);
|
|
8
9
|
_export_star(require("./user.interface"), exports);
|
|
10
|
+
_export_star(require("./user-enricher.interface"), exports);
|
|
9
11
|
_export_star(require("./auth-module-options.interface"), exports);
|
|
10
12
|
function _export_star(from, to) {
|
|
11
13
|
Object.keys(from).forEach(function(k) {
|
|
@@ -34,7 +34,7 @@ let AuthModule = class AuthModule {
|
|
|
34
34
|
return this.buildDynamicModule(options);
|
|
35
35
|
}
|
|
36
36
|
static forRootAsync(asyncOptions) {
|
|
37
|
-
const { global = false, includeController = true, bootstrapAppConfig: { enableCompanyFeature } = {}, imports: externalImports = [] } = asyncOptions;
|
|
37
|
+
const { global = false, includeController = true, bootstrapAppConfig: { enableCompanyFeature } = {}, imports: externalImports = [], providers: additionalProviders = [] } = asyncOptions;
|
|
38
38
|
const asyncProviders = this.createAsyncProviders(asyncOptions);
|
|
39
39
|
// Build imports
|
|
40
40
|
const imports = [
|
|
@@ -61,6 +61,7 @@ let AuthModule = class AuthModule {
|
|
|
61
61
|
// Build providers
|
|
62
62
|
const providers = [
|
|
63
63
|
...asyncProviders,
|
|
64
|
+
...additionalProviders,
|
|
64
65
|
// Config & Infrastructure
|
|
65
66
|
_authconfigservice.AuthConfigService,
|
|
66
67
|
_authdatasourceprovider.AuthDataSourceProvider,
|
|
@@ -68,6 +69,7 @@ let AuthModule = class AuthModule {
|
|
|
68
69
|
_jwtstrategy.JwtStrategy,
|
|
69
70
|
_guards.JwtAuthGuard,
|
|
70
71
|
_services.AuthenticationService,
|
|
72
|
+
_services.AuthEmailService,
|
|
71
73
|
// Interceptors
|
|
72
74
|
_settokeninterceptor.SetToken,
|
|
73
75
|
_cleartokeninterceptor.ClearToken,
|
|
@@ -87,6 +89,7 @@ let AuthModule = class AuthModule {
|
|
|
87
89
|
_jwtstrategy.JwtStrategy,
|
|
88
90
|
_guards.JwtAuthGuard,
|
|
89
91
|
_services.AuthenticationService,
|
|
92
|
+
_services.AuthEmailService,
|
|
90
93
|
_services.UserService
|
|
91
94
|
];
|
|
92
95
|
if (enableCompanyFeature) {
|
|
@@ -102,7 +105,7 @@ let AuthModule = class AuthModule {
|
|
|
102
105
|
};
|
|
103
106
|
}
|
|
104
107
|
static buildDynamicModule(options) {
|
|
105
|
-
const { bootstrapAppConfig: { enableCompanyFeature } = {}, includeController = true, global = false } = options;
|
|
108
|
+
const { bootstrapAppConfig: { enableCompanyFeature } = {}, includeController = true, global = false, providers: additionalProviders = [] } = options;
|
|
106
109
|
const imports = [
|
|
107
110
|
_passport.PassportModule.register({
|
|
108
111
|
defaultStrategy: 'jwt'
|
|
@@ -128,6 +131,7 @@ let AuthModule = class AuthModule {
|
|
|
128
131
|
provide: _authconstants.AUTH_MODULE_OPTIONS,
|
|
129
132
|
useValue: options
|
|
130
133
|
},
|
|
134
|
+
...additionalProviders,
|
|
131
135
|
// Config & Infrastructure
|
|
132
136
|
_authconfigservice.AuthConfigService,
|
|
133
137
|
_authdatasourceprovider.AuthDataSourceProvider,
|
|
@@ -135,6 +139,7 @@ let AuthModule = class AuthModule {
|
|
|
135
139
|
_jwtstrategy.JwtStrategy,
|
|
136
140
|
_guards.JwtAuthGuard,
|
|
137
141
|
_services.AuthenticationService,
|
|
142
|
+
_services.AuthEmailService,
|
|
138
143
|
// Interceptors
|
|
139
144
|
_settokeninterceptor.SetToken,
|
|
140
145
|
_cleartokeninterceptor.ClearToken,
|
|
@@ -153,6 +158,7 @@ let AuthModule = class AuthModule {
|
|
|
153
158
|
_jwtstrategy.JwtStrategy,
|
|
154
159
|
_guards.JwtAuthGuard,
|
|
155
160
|
_services.AuthenticationService,
|
|
161
|
+
_services.AuthEmailService,
|
|
156
162
|
_services.UserService
|
|
157
163
|
];
|
|
158
164
|
if (enableCompanyFeature) {
|
|
@@ -66,6 +66,10 @@ let AuthConfigService = class AuthConfigService {
|
|
|
66
66
|
/** Get refresh token cookie name */ getRefreshTokenCookieName() {
|
|
67
67
|
return this.config.refreshTokenCookieName ?? 'fsn_refresh_token';
|
|
68
68
|
}
|
|
69
|
+
// Frontend Configuration
|
|
70
|
+
/** Get frontend URL for email links */ getFrontendUrl() {
|
|
71
|
+
return this.config.frontendUrl;
|
|
72
|
+
}
|
|
69
73
|
// Database Configuration
|
|
70
74
|
/** Get default database config */ getDefaultDatabaseConfig() {
|
|
71
75
|
return this.config.defaultDatabaseConfig ?? this.config.tenantDefaultDatabaseConfig;
|
|
@@ -153,9 +153,11 @@ let AuthDataSourceProvider = class AuthDataSourceProvider extends _modules.Multi
|
|
|
153
153
|
// Entity Management
|
|
154
154
|
/** Get auth entities based on company feature flag */ async getAuthEntities(enableCompanyFeature) {
|
|
155
155
|
const enable = enableCompanyFeature ?? this.getEnableCompanyFeature();
|
|
156
|
-
const { Company, CompanyBranch, User, UserCompanyPermission } = await Promise.resolve().then(()=>/*#__PURE__*/ _interop_require_wildcard(require("../entities")));
|
|
156
|
+
const { Company, CompanyBranch, User, UserCompanyPermission, UserToken, PendingRegistration } = await Promise.resolve().then(()=>/*#__PURE__*/ _interop_require_wildcard(require("../entities")));
|
|
157
157
|
const coreEntities = [
|
|
158
|
-
User
|
|
158
|
+
User,
|
|
159
|
+
UserToken,
|
|
160
|
+
PendingRegistration
|
|
159
161
|
];
|
|
160
162
|
const companyEntities = enable ? [
|
|
161
163
|
Company,
|