@ofeklabs/horizon-auth 1.0.7 → 1.0.8
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/README.md +56 -1
- package/dist/auth/auth.controller.d.ts +9 -2
- package/dist/auth/auth.controller.js +39 -2
- package/dist/auth/auth.controller.js.map +1 -1
- package/dist/auth/auth.service.d.ts +6 -1
- package/dist/auth/auth.service.js +90 -9
- package/dist/auth/auth.service.js.map +1 -1
- package/dist/auth/dto/password-reset.dto.d.ts +10 -1
- package/dist/auth/dto/password-reset.dto.js +32 -1
- package/dist/auth/dto/password-reset.dto.js.map +1 -1
- package/dist/auth/services/email.service.d.ts +6 -0
- package/dist/auth/services/email.service.js +126 -0
- package/dist/auth/services/email.service.js.map +1 -1
- package/dist/lib/horizon-auth-config.interface.d.ts +14 -0
- package/dist/lib/horizon-auth.module.js +49 -0
- package/dist/lib/horizon-auth.module.js.map +1 -1
- package/dist/push-tokens/push-token.service.d.ts +3 -3
- package/dist/social-auth/social-auth.service.d.ts +7 -0
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/dist/users/users.service.d.ts +19 -1
- package/dist/users/users.service.js +172 -9
- package/dist/users/users.service.js.map +1 -1
- package/package.json +1 -1
- package/prisma/migrations/add_otp_fields_for_dual_verification.sql +14 -0
- package/prisma/schema.prisma +36 -20
|
@@ -41,6 +41,34 @@ let EmailService = EmailService_1 = class EmailService {
|
|
|
41
41
|
const html = this.generateEmailVerificationHtml(verificationLink);
|
|
42
42
|
await this.sendEmail(email, subject, html);
|
|
43
43
|
}
|
|
44
|
+
async sendOtpEmail(to, otp, expiryMinutes) {
|
|
45
|
+
if (!this.emailConfig) {
|
|
46
|
+
console.log(`Email verification OTP for ${to}: ${otp} (expires in ${expiryMinutes} minutes)`);
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
const subject = 'Verify Your Email Address';
|
|
50
|
+
const html = this.generateOtpEmailHtml(otp, expiryMinutes);
|
|
51
|
+
await this.sendEmail(to, subject, html);
|
|
52
|
+
}
|
|
53
|
+
async sendCombinedVerificationEmail(to, otp, token, expiryMinutes) {
|
|
54
|
+
if (!this.emailConfig) {
|
|
55
|
+
console.log(`Email verification for ${to}:\n OTP: ${otp}\n Token: ${token}\n (expires in ${expiryMinutes} minutes)`);
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
const verificationLink = `${this.getBaseUrl()}/verify-email?token=${token}`;
|
|
59
|
+
const subject = 'Verify Your Email Address';
|
|
60
|
+
const html = this.generateCombinedVerificationEmailHtml(otp, verificationLink, expiryMinutes);
|
|
61
|
+
await this.sendEmail(to, subject, html);
|
|
62
|
+
}
|
|
63
|
+
async sendPasswordResetOtpEmail(to, otp, expiryMinutes) {
|
|
64
|
+
if (!this.emailConfig) {
|
|
65
|
+
console.log(`Password reset OTP for ${to}: ${otp} (expires in ${expiryMinutes} minutes)`);
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
const subject = 'Password Reset Request';
|
|
69
|
+
const html = this.generatePasswordResetOtpEmailHtml(otp, expiryMinutes);
|
|
70
|
+
await this.sendEmail(to, subject, html);
|
|
71
|
+
}
|
|
44
72
|
async sendEmail(to, subject, html) {
|
|
45
73
|
if (!this.emailConfig) {
|
|
46
74
|
throw new Error('Email configuration is not provided');
|
|
@@ -158,6 +186,104 @@ let EmailService = EmailService_1 = class EmailService {
|
|
|
158
186
|
</html>
|
|
159
187
|
`;
|
|
160
188
|
}
|
|
189
|
+
generateOtpEmailHtml(otp, expiryMinutes) {
|
|
190
|
+
return `
|
|
191
|
+
<!DOCTYPE html>
|
|
192
|
+
<html>
|
|
193
|
+
<head>
|
|
194
|
+
<meta charset="utf-8">
|
|
195
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
196
|
+
<title>Verify Your Email Address</title>
|
|
197
|
+
</head>
|
|
198
|
+
<body style="font-family: Arial, sans-serif; line-height: 1.6; color: #333; max-width: 600px; margin: 0 auto; padding: 20px;">
|
|
199
|
+
<div style="background-color: #f4f4f4; padding: 20px; border-radius: 5px;">
|
|
200
|
+
<h2 style="color: #333; margin-top: 0;">Verify Your Email Address</h2>
|
|
201
|
+
<p>Thank you for registering! Please use the verification code below to verify your email address:</p>
|
|
202
|
+
<div style="text-align: center; margin: 30px 0;">
|
|
203
|
+
<div style="background-color: #fff; border: 2px solid #28a745; border-radius: 8px; padding: 20px; display: inline-block;">
|
|
204
|
+
<div style="font-size: 32px; font-weight: bold; letter-spacing: 8px; color: #28a745;">${otp}</div>
|
|
205
|
+
</div>
|
|
206
|
+
</div>
|
|
207
|
+
<p style="text-align: center; font-size: 16px; color: #666;">Enter this code to verify your email</p>
|
|
208
|
+
<p style="color: #666; font-size: 14px; margin-top: 30px;">This code will expire in ${expiryMinutes} minutes.</p>
|
|
209
|
+
<p style="color: #666; font-size: 14px;">If you didn't create an account, please ignore this email.</p>
|
|
210
|
+
</div>
|
|
211
|
+
</body>
|
|
212
|
+
</html>
|
|
213
|
+
`;
|
|
214
|
+
}
|
|
215
|
+
generateCombinedVerificationEmailHtml(otp, verificationLink, expiryMinutes) {
|
|
216
|
+
return `
|
|
217
|
+
<!DOCTYPE html>
|
|
218
|
+
<html>
|
|
219
|
+
<head>
|
|
220
|
+
<meta charset="utf-8">
|
|
221
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
222
|
+
<title>Verify Your Email Address</title>
|
|
223
|
+
</head>
|
|
224
|
+
<body style="font-family: Arial, sans-serif; line-height: 1.6; color: #333; max-width: 600px; margin: 0 auto; padding: 20px;">
|
|
225
|
+
<div style="background-color: #f4f4f4; padding: 20px; border-radius: 5px;">
|
|
226
|
+
<h2 style="color: #333; margin-top: 0;">Verify Your Email Address</h2>
|
|
227
|
+
<p>Thank you for registering! You can verify your email address using either of the two methods below:</p>
|
|
228
|
+
|
|
229
|
+
<!-- Option 1: Verification Code -->
|
|
230
|
+
<div style="background-color: #fff; border-radius: 8px; padding: 20px; margin: 20px 0;">
|
|
231
|
+
<h3 style="color: #333; margin-top: 0; font-size: 18px;">Option 1: Enter Verification Code</h3>
|
|
232
|
+
<p style="margin: 10px 0;">Use this code in the verification form:</p>
|
|
233
|
+
<div style="text-align: center; margin: 20px 0;">
|
|
234
|
+
<div style="background-color: #f8f9fa; border: 2px solid #28a745; border-radius: 8px; padding: 15px; display: inline-block;">
|
|
235
|
+
<div style="font-size: 28px; font-weight: bold; letter-spacing: 6px; color: #28a745;">${otp}</div>
|
|
236
|
+
</div>
|
|
237
|
+
</div>
|
|
238
|
+
</div>
|
|
239
|
+
|
|
240
|
+
<!-- Divider -->
|
|
241
|
+
<div style="text-align: center; margin: 30px 0; color: #999; font-weight: bold;">OR</div>
|
|
242
|
+
|
|
243
|
+
<!-- Option 2: Magic Link -->
|
|
244
|
+
<div style="background-color: #fff; border-radius: 8px; padding: 20px; margin: 20px 0;">
|
|
245
|
+
<h3 style="color: #333; margin-top: 0; font-size: 18px;">Option 2: Click Verification Link</h3>
|
|
246
|
+
<p style="margin: 10px 0;">Click the button below to verify instantly:</p>
|
|
247
|
+
<div style="text-align: center; margin: 20px 0;">
|
|
248
|
+
<a href="${verificationLink}" style="background-color: #28a745; color: white; padding: 12px 30px; text-decoration: none; border-radius: 5px; display: inline-block; font-weight: bold;">Verify Email</a>
|
|
249
|
+
</div>
|
|
250
|
+
<p style="font-size: 14px; color: #666; margin: 10px 0;">Or copy and paste this link into your browser:</p>
|
|
251
|
+
<p style="word-break: break-all; color: #28a745; font-size: 12px;">${verificationLink}</p>
|
|
252
|
+
</div>
|
|
253
|
+
|
|
254
|
+
<p style="color: #666; font-size: 14px; margin-top: 30px; text-align: center;">Both methods will expire in ${expiryMinutes} minutes.</p>
|
|
255
|
+
<p style="color: #666; font-size: 14px; text-align: center;">If you didn't create an account, please ignore this email.</p>
|
|
256
|
+
</div>
|
|
257
|
+
</body>
|
|
258
|
+
</html>
|
|
259
|
+
`;
|
|
260
|
+
}
|
|
261
|
+
generatePasswordResetOtpEmailHtml(otp, expiryMinutes) {
|
|
262
|
+
return `
|
|
263
|
+
<!DOCTYPE html>
|
|
264
|
+
<html>
|
|
265
|
+
<head>
|
|
266
|
+
<meta charset="utf-8">
|
|
267
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
268
|
+
<title>Password Reset Request</title>
|
|
269
|
+
</head>
|
|
270
|
+
<body style="font-family: Arial, sans-serif; line-height: 1.6; color: #333; max-width: 600px; margin: 0 auto; padding: 20px;">
|
|
271
|
+
<div style="background-color: #f4f4f4; padding: 20px; border-radius: 5px;">
|
|
272
|
+
<h2 style="color: #333; margin-top: 0;">Password Reset Request</h2>
|
|
273
|
+
<p>You requested to reset your password. Please use the verification code below to proceed:</p>
|
|
274
|
+
<div style="text-align: center; margin: 30px 0;">
|
|
275
|
+
<div style="background-color: #fff; border: 2px solid #007bff; border-radius: 8px; padding: 20px; display: inline-block;">
|
|
276
|
+
<div style="font-size: 32px; font-weight: bold; letter-spacing: 8px; color: #007bff;">${otp}</div>
|
|
277
|
+
</div>
|
|
278
|
+
</div>
|
|
279
|
+
<p style="text-align: center; font-size: 16px; color: #666;">Enter this code to reset your password</p>
|
|
280
|
+
<p style="color: #666; font-size: 14px; margin-top: 30px;">This code will expire in ${expiryMinutes} minutes.</p>
|
|
281
|
+
<p style="color: #666; font-size: 14px;">If you didn't request this password reset, please ignore this email.</p>
|
|
282
|
+
</div>
|
|
283
|
+
</body>
|
|
284
|
+
</html>
|
|
285
|
+
`;
|
|
286
|
+
}
|
|
161
287
|
};
|
|
162
288
|
exports.EmailService = EmailService;
|
|
163
289
|
exports.EmailService = EmailService = EmailService_1 = __decorate([
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"email.service.js","sourceRoot":"","sources":["../../../src/auth/services/email.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAA4D;AAIrD,IAAM,YAAY,oBAAlB,MAAM,YAAY;IAIvB,YACiC,MAA0C;QAAzB,WAAM,GAAN,MAAM,CAAmB;QAJ1D,WAAM,GAAG,IAAI,eAAM,CAAC,cAAY,CAAC,IAAI,CAAC,CAAC;QAMtD,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC;IAClC,CAAC;IAOD,KAAK,CAAC,sBAAsB,CAAC,KAAa,EAAE,UAAkB;QAC5D,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YAEtB,OAAO,CAAC,GAAG,CAAC,4BAA4B,KAAK,KAAK,UAAU,EAAE,CAAC,CAAC;YAChE,OAAO;QACT,CAAC;QAED,MAAM,SAAS,GAAG,GAAG,IAAI,CAAC,UAAU,EAAE,yBAAyB,UAAU,EAAE,CAAC;QAC5E,MAAM,OAAO,GAAG,wBAAwB,CAAC;QACzC,MAAM,IAAI,GAAG,IAAI,CAAC,8BAA8B,CAAC,SAAS,CAAC,CAAC;QAE5D,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;IAC7C,CAAC;IAOD,KAAK,CAAC,0BAA0B,CAAC,KAAa,EAAE,iBAAyB;QACvE,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YAEtB,OAAO,CAAC,GAAG,CAAC,gCAAgC,KAAK,KAAK,iBAAiB,EAAE,CAAC,CAAC;YAC3E,OAAO;QACT,CAAC;QAED,MAAM,gBAAgB,GAAG,GAAG,IAAI,CAAC,UAAU,EAAE,uBAAuB,iBAAiB,EAAE,CAAC;QACxF,MAAM,OAAO,GAAG,2BAA2B,CAAC;QAC5C,MAAM,IAAI,GAAG,IAAI,CAAC,6BAA6B,CAAC,gBAAgB,CAAC,CAAC;QAElE,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;IAC7C,CAAC;
|
|
1
|
+
{"version":3,"file":"email.service.js","sourceRoot":"","sources":["../../../src/auth/services/email.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,15 @@
|
|
|
1
|
+
export interface EmailVerificationConfig {
|
|
2
|
+
method: 'otp' | 'magic-link' | 'both';
|
|
3
|
+
otpLength?: number;
|
|
4
|
+
otpExpiry?: number;
|
|
5
|
+
tokenExpiry?: number;
|
|
6
|
+
}
|
|
7
|
+
export interface PasswordResetConfig {
|
|
8
|
+
method: 'otp' | 'magic-link' | 'both';
|
|
9
|
+
otpLength?: number;
|
|
10
|
+
otpExpiry?: number;
|
|
11
|
+
tokenExpiry?: number;
|
|
12
|
+
}
|
|
1
13
|
export interface HorizonAuthConfig {
|
|
2
14
|
ssoMode?: boolean;
|
|
3
15
|
authServiceUrl?: string;
|
|
@@ -50,6 +62,8 @@ export interface HorizonAuthConfig {
|
|
|
50
62
|
from: string;
|
|
51
63
|
customSender?: (to: string, subject: string, html: string) => Promise<void>;
|
|
52
64
|
};
|
|
65
|
+
emailVerification?: EmailVerificationConfig;
|
|
66
|
+
passwordReset?: PasswordResetConfig;
|
|
53
67
|
security?: {
|
|
54
68
|
bcryptMigration?: boolean;
|
|
55
69
|
cookieSecure?: boolean;
|
|
@@ -92,6 +92,28 @@ let HorizonAuthModule = HorizonAuthModule_1 = class HorizonAuthModule {
|
|
|
92
92
|
if (!config.jwt.privateKey.includes('BEGIN') || !config.jwt.publicKey.includes('BEGIN')) {
|
|
93
93
|
throw new Error('HorizonAuth: JWT keys must be in PEM format');
|
|
94
94
|
}
|
|
95
|
+
if (config.emailVerification) {
|
|
96
|
+
const validMethods = ['otp', 'magic-link', 'both'];
|
|
97
|
+
if (!validMethods.includes(config.emailVerification.method)) {
|
|
98
|
+
throw new Error('HorizonAuth: emailVerification.method must be one of: otp, magic-link, both');
|
|
99
|
+
}
|
|
100
|
+
if (config.emailVerification.otpLength !== undefined) {
|
|
101
|
+
if (config.emailVerification.otpLength < 4 || config.emailVerification.otpLength > 8) {
|
|
102
|
+
throw new Error('HorizonAuth: emailVerification.otpLength must be between 4 and 8');
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
if (config.passwordReset) {
|
|
107
|
+
const validMethods = ['otp', 'magic-link', 'both'];
|
|
108
|
+
if (!validMethods.includes(config.passwordReset.method)) {
|
|
109
|
+
throw new Error('HorizonAuth: passwordReset.method must be one of: otp, magic-link, both');
|
|
110
|
+
}
|
|
111
|
+
if (config.passwordReset.otpLength !== undefined) {
|
|
112
|
+
if (config.passwordReset.otpLength < 4 || config.passwordReset.otpLength > 8) {
|
|
113
|
+
throw new Error('HorizonAuth: passwordReset.otpLength must be between 4 and 8');
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
}
|
|
95
117
|
}
|
|
96
118
|
static applyDefaults(config) {
|
|
97
119
|
return {
|
|
@@ -121,6 +143,33 @@ let HorizonAuthModule = HorizonAuthModule_1 = class HorizonAuthModule {
|
|
|
121
143
|
register: config.rateLimit?.register || { limit: 3, ttl: 60 },
|
|
122
144
|
passwordReset: config.rateLimit?.passwordReset || { limit: 3, ttl: 3600 },
|
|
123
145
|
},
|
|
146
|
+
emailVerification: config.emailVerification ? {
|
|
147
|
+
method: config.emailVerification.method || 'otp',
|
|
148
|
+
otpLength: config.emailVerification.otpLength || 6,
|
|
149
|
+
otpExpiry: config.emailVerification.otpExpiry || 10,
|
|
150
|
+
tokenExpiry: config.emailVerification.tokenExpiry || 24,
|
|
151
|
+
} : {
|
|
152
|
+
method: 'otp',
|
|
153
|
+
otpLength: 6,
|
|
154
|
+
otpExpiry: 10,
|
|
155
|
+
tokenExpiry: 24,
|
|
156
|
+
},
|
|
157
|
+
passwordReset: config.passwordReset ? {
|
|
158
|
+
method: config.passwordReset.method || config.emailVerification?.method || 'otp',
|
|
159
|
+
otpLength: config.passwordReset.otpLength || config.emailVerification?.otpLength || 6,
|
|
160
|
+
otpExpiry: config.passwordReset.otpExpiry || config.emailVerification?.otpExpiry || 10,
|
|
161
|
+
tokenExpiry: config.passwordReset.tokenExpiry || config.emailVerification?.tokenExpiry || 24,
|
|
162
|
+
} : config.emailVerification ? {
|
|
163
|
+
method: config.emailVerification.method || 'otp',
|
|
164
|
+
otpLength: config.emailVerification.otpLength || 6,
|
|
165
|
+
otpExpiry: config.emailVerification.otpExpiry || 10,
|
|
166
|
+
tokenExpiry: config.emailVerification.tokenExpiry || 24,
|
|
167
|
+
} : {
|
|
168
|
+
method: 'otp',
|
|
169
|
+
otpLength: 6,
|
|
170
|
+
otpExpiry: 10,
|
|
171
|
+
tokenExpiry: 24,
|
|
172
|
+
},
|
|
124
173
|
security: {
|
|
125
174
|
bcryptMigration: config.security?.bcryptMigration || false,
|
|
126
175
|
cookieSecure: config.security?.cookieSecure ?? (process.env.NODE_ENV === 'production'),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"horizon-auth.module.js","sourceRoot":"","sources":["../../src/lib/horizon-auth.module.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"horizon-auth.module.js","sourceRoot":"","sources":["../../src/lib/horizon-auth.module.ts"],"names":[],"mappings":";;;;;;;;;;AAAA,2CAAyE;AACzE,uCAAyC;AAEzC,qDAAiD;AACjD,wDAAoD;AACpD,wDAAoD;AACpD,kEAA6D;AAwDtD,IAAM,iBAAiB,yBAAvB,MAAM,iBAAiB;IAY5B,MAAM,CAAC,OAAO,CAAC,MAAyB;QAEtC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAG5B,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QAE/C,MAAM,SAAS,GAAe;YAC5B;gBACE,OAAO,EAAE,qBAAqB;gBAC9B,QAAQ,EAAE,WAAW;aACtB;SACF,CAAC;QAGF,IAAI,WAAW,CAAC,MAAM,EAAE,qBAAqB,EAAE,CAAC;YAC9C,SAAS,CAAC,IAAI,CAAC;gBACb,OAAO,EAAE,gBAAS;gBAClB,QAAQ,EAAE,6BAAY;aACvB,CAAC,CAAC;QACL,CAAC;QAGD,IAAI,WAAW,CAAC,OAAO,EAAE,CAAC;YACxB,OAAO;gBACL,MAAM,EAAE,mBAAiB;gBACzB,OAAO,EAAE;oBACP,wBAAU,CAAC,UAAU,EAAE;iBACxB;gBACD,SAAS;gBACT,OAAO,EAAE,CAAC,qBAAqB,EAAE,wBAAU,CAAC;aAC7C,CAAC;QACJ,CAAC;QAKD,OAAO;YACL,MAAM,EAAE,mBAAiB;YACzB,OAAO,EAAE;gBACP,0BAAW,CAAC,OAAO,CAAC,WAAW,CAAC;gBAChC,wBAAU,CAAC,WAAW,CAAC,WAAW,CAAC;gBACnC,0BAAW;aACZ;YACD,SAAS;YACT,OAAO,EAAE,CAAC,qBAAqB,EAAE,wBAAU,CAAC;SAC7C,CAAC;IACJ,CAAC;IAaD,MAAM,CAAC,YAAY,CAAC,OAGnB;QACC,MAAM,SAAS,GAAe;YAC5B;gBACE,OAAO,EAAE,qBAAqB;gBAC9B,UAAU,EAAE,KAAK,EAAE,GAAG,IAAW,EAAE,EAAE;oBACnC,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,CAAC;oBACjD,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;oBAC5B,OAAO,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;gBACpC,CAAC;gBACD,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,EAAE;aAC7B;SACF,CAAC;QAIF,OAAO;YACL,MAAM,EAAE,mBAAiB;YACzB,OAAO,EAAE,CAAC,wBAAU,CAAC,WAAW,EAAE,EAAE,0BAAW,CAAC;YAChD,SAAS;YACT,OAAO,EAAE,CAAC,qBAAqB,EAAE,wBAAU,CAAC;SAC7C,CAAC;IACJ,CAAC;IAMO,MAAM,CAAC,cAAc,CAAC,MAAyB;QAErD,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YAEnB,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,SAAS,EAAE,CAAC;gBAC3B,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;YACvE,CAAC;YAED,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;gBAC3B,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;YACxE,CAAC;YAGD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC5C,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;YACvE,CAAC;YAED,OAAO;QACT,CAAC;QAID,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC;YAC/C,MAAM,IAAI,KAAK,CAAC,yEAAyE,CAAC,CAAC;QAC7F,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,UAAU,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,SAAS,EAAE,CAAC;YACtD,MAAM,IAAI,KAAK,CAAC,oGAAoG,CAAC,CAAC;QACxH,CAAC;QAGD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YACxF,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;QACjE,CAAC;QAGD,IAAI,MAAM,CAAC,iBAAiB,EAAE,CAAC;YAC7B,MAAM,YAAY,GAAG,CAAC,KAAK,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC;YACnD,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC5D,MAAM,IAAI,KAAK,CAAC,6EAA6E,CAAC,CAAC;YACjG,CAAC;YAED,IAAI,MAAM,CAAC,iBAAiB,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;gBACrD,IAAI,MAAM,CAAC,iBAAiB,CAAC,SAAS,GAAG,CAAC,IAAI,MAAM,CAAC,iBAAiB,CAAC,SAAS,GAAG,CAAC,EAAE,CAAC;oBACrF,MAAM,IAAI,KAAK,CAAC,kEAAkE,CAAC,CAAC;gBACtF,CAAC;YACH,CAAC;QACH,CAAC;QAGD,IAAI,MAAM,CAAC,aAAa,EAAE,CAAC;YACzB,MAAM,YAAY,GAAG,CAAC,KAAK,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC;YACnD,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC;gBACxD,MAAM,IAAI,KAAK,CAAC,yEAAyE,CAAC,CAAC;YAC7F,CAAC;YAED,IAAI,MAAM,CAAC,aAAa,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;gBACjD,IAAI,MAAM,CAAC,aAAa,CAAC,SAAS,GAAG,CAAC,IAAI,MAAM,CAAC,aAAa,CAAC,SAAS,GAAG,CAAC,EAAE,CAAC;oBAC7E,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAC;gBAClF,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAOO,MAAM,CAAC,aAAa,CAAC,MAAyB;QACpD,OAAO;YACL,GAAG,MAAM;YACT,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,KAAK;YAChC,GAAG,EAAE;gBACH,GAAG,MAAM,CAAC,GAAG;gBACb,iBAAiB,EAAE,MAAM,CAAC,GAAG,CAAC,iBAAiB,IAAI,KAAK;gBACxD,kBAAkB,EAAE,MAAM,CAAC,GAAG,CAAC,kBAAkB,IAAI,IAAI;gBACzD,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,IAAI,cAAc;gBAC3C,QAAQ,EAAE,MAAM,CAAC,GAAG,CAAC,QAAQ,IAAI,aAAa;gBAC9C,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,oBAAoB;aAC5C;YACD,MAAM,EAAE;gBACN,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,IAAI,MAAM,CAAC,QAAQ,EAAE,YAAY;gBAC9D,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,IAAI,MAAM,CAAC,QAAQ,EAAE,YAAY,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,CAAC;gBACzG,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,IAAI,KAAK;aAC3C;YACD,WAAW,EAAE;gBACX,OAAO,EAAE,MAAM,CAAC,WAAW,EAAE,OAAO,IAAI,KAAK;gBAC7C,iBAAiB,EAAE,MAAM,CAAC,WAAW,EAAE,iBAAiB,IAAI,QAAQ;gBACpE,eAAe,EAAE,MAAM,CAAC,WAAW,EAAE,eAAe,IAAI,SAAS;gBACjE,GAAG,MAAM,CAAC,WAAW;aACtB;YACD,SAAS,EAAE;gBACT,KAAK,EAAE,MAAM,CAAC,SAAS,EAAE,KAAK,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE;gBACvD,QAAQ,EAAE,MAAM,CAAC,SAAS,EAAE,QAAQ,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE;gBAC7D,aAAa,EAAE,MAAM,CAAC,SAAS,EAAE,aAAa,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE;aAC1E;YACD,iBAAiB,EAAE,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC;gBAC5C,MAAM,EAAE,MAAM,CAAC,iBAAiB,CAAC,MAAM,IAAI,KAAK;gBAChD,SAAS,EAAE,MAAM,CAAC,iBAAiB,CAAC,SAAS,IAAI,CAAC;gBAClD,SAAS,EAAE,MAAM,CAAC,iBAAiB,CAAC,SAAS,IAAI,EAAE;gBACnD,WAAW,EAAE,MAAM,CAAC,iBAAiB,CAAC,WAAW,IAAI,EAAE;aACxD,CAAC,CAAC,CAAC;gBACF,MAAM,EAAE,KAAK;gBACb,SAAS,EAAE,CAAC;gBACZ,SAAS,EAAE,EAAE;gBACb,WAAW,EAAE,EAAE;aAChB;YACD,aAAa,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC;gBACpC,MAAM,EAAE,MAAM,CAAC,aAAa,CAAC,MAAM,IAAI,MAAM,CAAC,iBAAiB,EAAE,MAAM,IAAI,KAAK;gBAChF,SAAS,EAAE,MAAM,CAAC,aAAa,CAAC,SAAS,IAAI,MAAM,CAAC,iBAAiB,EAAE,SAAS,IAAI,CAAC;gBACrF,SAAS,EAAE,MAAM,CAAC,aAAa,CAAC,SAAS,IAAI,MAAM,CAAC,iBAAiB,EAAE,SAAS,IAAI,EAAE;gBACtF,WAAW,EAAE,MAAM,CAAC,aAAa,CAAC,WAAW,IAAI,MAAM,CAAC,iBAAiB,EAAE,WAAW,IAAI,EAAE;aAC7F,CAAC,CAAC,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC;gBAC7B,MAAM,EAAE,MAAM,CAAC,iBAAiB,CAAC,MAAM,IAAI,KAAK;gBAChD,SAAS,EAAE,MAAM,CAAC,iBAAiB,CAAC,SAAS,IAAI,CAAC;gBAClD,SAAS,EAAE,MAAM,CAAC,iBAAiB,CAAC,SAAS,IAAI,EAAE;gBACnD,WAAW,EAAE,MAAM,CAAC,iBAAiB,CAAC,WAAW,IAAI,EAAE;aACxD,CAAC,CAAC,CAAC;gBACF,MAAM,EAAE,KAAK;gBACb,SAAS,EAAE,CAAC;gBACZ,SAAS,EAAE,EAAE;gBACb,WAAW,EAAE,EAAE;aAChB;YACD,QAAQ,EAAE;gBACR,eAAe,EAAE,MAAM,CAAC,QAAQ,EAAE,eAAe,IAAI,KAAK;gBAC1D,YAAY,EAAE,MAAM,CAAC,QAAQ,EAAE,YAAY,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,CAAC;gBACtF,GAAG,MAAM,CAAC,QAAQ;aACnB;YACD,MAAM,EAAE;gBACN,qBAAqB,EAAE,MAAM,CAAC,MAAM,EAAE,qBAAqB,IAAI,KAAK;aACrE;SACF,CAAC;IACJ,CAAC;CACF,CAAA;AA5OY,8CAAiB;4BAAjB,iBAAiB;IAF7B,IAAA,eAAM,GAAE;IACR,IAAA,eAAM,EAAC,EAAE,CAAC;GACE,iBAAiB,CA4O7B"}
|
|
@@ -12,8 +12,8 @@ export declare class PushTokenService {
|
|
|
12
12
|
id: string;
|
|
13
13
|
createdAt: Date;
|
|
14
14
|
updatedAt: Date;
|
|
15
|
-
userId: string;
|
|
16
15
|
token: string;
|
|
16
|
+
userId: string;
|
|
17
17
|
deviceId: string;
|
|
18
18
|
tokenType: string;
|
|
19
19
|
active: boolean;
|
|
@@ -22,8 +22,8 @@ export declare class PushTokenService {
|
|
|
22
22
|
id: string;
|
|
23
23
|
createdAt: Date;
|
|
24
24
|
updatedAt: Date;
|
|
25
|
-
userId: string;
|
|
26
25
|
token: string;
|
|
26
|
+
userId: string;
|
|
27
27
|
deviceId: string;
|
|
28
28
|
tokenType: string;
|
|
29
29
|
active: boolean;
|
|
@@ -41,8 +41,8 @@ export declare class PushTokenService {
|
|
|
41
41
|
id: string;
|
|
42
42
|
createdAt: Date;
|
|
43
43
|
updatedAt: Date;
|
|
44
|
-
userId: string;
|
|
45
44
|
token: string;
|
|
45
|
+
userId: string;
|
|
46
46
|
deviceId: string;
|
|
47
47
|
tokenType: string;
|
|
48
48
|
active: boolean;
|
|
@@ -28,7 +28,14 @@ export declare class SocialAuthService {
|
|
|
28
28
|
fullName: string | null;
|
|
29
29
|
passwordHash: string | null;
|
|
30
30
|
emailVerified: boolean;
|
|
31
|
+
emailVerificationOtp: string | null;
|
|
32
|
+
emailVerificationSentAt: Date | null;
|
|
33
|
+
emailVerificationExpiresAt: Date | null;
|
|
34
|
+
emailVerificationAttempts: number;
|
|
31
35
|
emailVerifyToken: string | null;
|
|
36
|
+
passwordResetOtp: string | null;
|
|
37
|
+
passwordResetOtpExpiresAt: Date | null;
|
|
38
|
+
passwordResetOtpAttempts: number;
|
|
32
39
|
resetToken: string | null;
|
|
33
40
|
resetTokenExpiry: Date | null;
|
|
34
41
|
tenantId: string;
|