@vynelix/nestjs-multi-auth 0.3.2 → 1.0.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/CHANGELOG.md +14 -0
- package/README.md +309 -18
- package/dist/auth/auth.controller.d.ts +3 -2
- package/dist/auth/auth.controller.js +32 -5
- package/dist/auth/auth.controller.js.map +1 -1
- package/dist/auth/auth.module.js +116 -68
- package/dist/auth/auth.module.js.map +1 -1
- package/dist/auth/auth.service.d.ts +52 -25
- package/dist/auth/auth.service.js +238 -327
- package/dist/auth/auth.service.js.map +1 -1
- package/dist/auth/core/auth-mapper.d.ts +1 -1
- package/dist/auth/core/database-otp.provider.d.ts +12 -0
- package/dist/auth/core/database-otp.provider.js +122 -0
- package/dist/auth/core/database-otp.provider.js.map +1 -0
- package/dist/auth/dto/requests/magic-link.dto.d.ts +1 -0
- package/dist/auth/dto/requests/magic-link.dto.js +6 -0
- package/dist/auth/dto/requests/magic-link.dto.js.map +1 -1
- package/dist/auth/dto/requests/mfa.dto.d.ts +5 -1
- package/dist/auth/dto/requests/mfa.dto.js +29 -8
- package/dist/auth/dto/requests/mfa.dto.js.map +1 -1
- package/dist/auth/enums/identifier-type.enum.d.ts +11 -0
- package/dist/auth/enums/identifier-type.enum.js +17 -0
- package/dist/auth/enums/identifier-type.enum.js.map +1 -0
- package/dist/auth/enums/mfa-type.enum.d.ts +5 -0
- package/dist/auth/enums/mfa-type.enum.js +10 -0
- package/dist/auth/enums/mfa-type.enum.js.map +1 -0
- package/dist/auth/enums/otp-purpose.enum.d.ts +8 -0
- package/dist/auth/enums/otp-purpose.enum.js +13 -0
- package/dist/auth/enums/otp-purpose.enum.js.map +1 -0
- package/dist/auth/enums/session-event.enum.d.ts +7 -0
- package/dist/auth/enums/session-event.enum.js +12 -0
- package/dist/auth/enums/session-event.enum.js.map +1 -0
- package/dist/auth/interfaces/auth-module-options.interface.d.ts +36 -1
- package/dist/auth/interfaces/auth-notification-provider.interface.d.ts +7 -1
- package/dist/auth/interfaces/auth-otp-provider.interface.d.ts +60 -0
- package/dist/auth/interfaces/auth-otp-provider.interface.js +7 -0
- package/dist/auth/interfaces/auth-otp-provider.interface.js.map +1 -0
- package/dist/auth/interfaces/models.interface.d.ts +91 -0
- package/dist/auth/interfaces/models.interface.js +3 -0
- package/dist/auth/interfaces/models.interface.js.map +1 -0
- package/dist/auth/interfaces/oauth-strategy.interface.d.ts +2 -2
- package/dist/auth/interfaces/repositories.interface.d.ts +70 -0
- package/dist/auth/interfaces/repositories.interface.js +3 -0
- package/dist/auth/interfaces/repositories.interface.js.map +1 -0
- package/dist/auth/interfaces/repository-tokens.d.ts +7 -0
- package/dist/auth/interfaces/repository-tokens.js +11 -0
- package/dist/auth/interfaces/repository-tokens.js.map +1 -0
- package/dist/auth/interfaces/signup-event-body.interface.d.ts +1 -1
- package/dist/auth/strategies/local-auth.strategy.d.ts +3 -5
- package/dist/auth/strategies/local-auth.strategy.js +64 -99
- package/dist/auth/strategies/local-auth.strategy.js.map +1 -1
- package/dist/auth/strategies/oauth/apple.strategy.d.ts +4 -6
- package/dist/auth/strategies/oauth/apple.strategy.js +57 -70
- package/dist/auth/strategies/oauth/apple.strategy.js.map +1 -1
- package/dist/auth/strategies/oauth/facebook.strategy.d.ts +4 -6
- package/dist/auth/strategies/oauth/facebook.strategy.js +58 -71
- package/dist/auth/strategies/oauth/facebook.strategy.js.map +1 -1
- package/dist/auth/strategies/oauth/google.strategy.d.ts +4 -6
- package/dist/auth/strategies/oauth/google.strategy.js +84 -155
- package/dist/auth/strategies/oauth/google.strategy.js.map +1 -1
- package/dist/auth/strategies/oauth/oauth.strategy.d.ts +2 -2
- package/dist/database/prisma/prisma-auth.adapter.d.ts +11 -0
- package/dist/database/prisma/prisma-auth.adapter.js +64 -0
- package/dist/database/prisma/prisma-auth.adapter.js.map +1 -0
- package/dist/database/prisma/repositories/auth-identifier.repository.d.ts +16 -0
- package/dist/database/prisma/repositories/auth-identifier.repository.js +41 -0
- package/dist/database/prisma/repositories/auth-identifier.repository.js.map +1 -0
- package/dist/database/prisma/repositories/auth.repository.d.ts +19 -0
- package/dist/database/prisma/repositories/auth.repository.js +49 -0
- package/dist/database/prisma/repositories/auth.repository.js.map +1 -0
- package/dist/database/prisma/repositories/index.d.ts +7 -0
- package/dist/database/prisma/repositories/index.js +24 -0
- package/dist/database/prisma/repositories/index.js.map +1 -0
- package/dist/database/prisma/repositories/mfa-method.repository.d.ts +11 -0
- package/dist/database/prisma/repositories/mfa-method.repository.js +33 -0
- package/dist/database/prisma/repositories/mfa-method.repository.js.map +1 -0
- package/dist/database/prisma/repositories/oauth-provider.repository.d.ts +14 -0
- package/dist/database/prisma/repositories/oauth-provider.repository.js +39 -0
- package/dist/database/prisma/repositories/oauth-provider.repository.js.map +1 -0
- package/dist/database/prisma/repositories/otp-token.repository.d.ts +13 -0
- package/dist/database/prisma/repositories/otp-token.repository.js +52 -0
- package/dist/database/prisma/repositories/otp-token.repository.js.map +1 -0
- package/dist/database/prisma/repositories/session-log.repository.d.ts +12 -0
- package/dist/database/prisma/repositories/session-log.repository.js +42 -0
- package/dist/database/prisma/repositories/session-log.repository.js.map +1 -0
- package/dist/database/prisma/repositories/session.repository.d.ts +16 -0
- package/dist/database/prisma/repositories/session.repository.js +41 -0
- package/dist/database/prisma/repositories/session.repository.js.map +1 -0
- package/dist/database/typeorm/entities/auth-identify.entity.d.ts +23 -0
- package/dist/database/typeorm/entities/auth-identify.entity.js +61 -0
- package/dist/database/typeorm/entities/auth-identify.entity.js.map +1 -0
- package/dist/database/typeorm/entities/auth.entity.d.ts +45 -0
- package/dist/database/typeorm/entities/auth.entity.js +129 -0
- package/dist/database/typeorm/entities/auth.entity.js.map +1 -0
- package/dist/database/typeorm/entities/base.entity.d.ts +7 -0
- package/dist/database/typeorm/entities/base.entity.js +44 -0
- package/dist/database/typeorm/entities/base.entity.js.map +1 -0
- package/dist/database/typeorm/entities/entities.d.ts +7 -0
- package/dist/database/typeorm/entities/entities.js +18 -0
- package/dist/database/typeorm/entities/entities.js.map +1 -0
- package/dist/database/typeorm/entities/mfa-method.entity.d.ts +10 -0
- package/dist/database/typeorm/entities/mfa-method.entity.js +47 -0
- package/dist/database/typeorm/entities/mfa-method.entity.js.map +1 -0
- package/dist/database/typeorm/entities/oauth-provider.entity.d.ts +38 -0
- package/dist/database/typeorm/entities/oauth-provider.entity.js +88 -0
- package/dist/database/typeorm/entities/oauth-provider.entity.js.map +1 -0
- package/dist/database/typeorm/entities/otp-token.entity.d.ts +15 -0
- package/dist/database/typeorm/entities/otp-token.entity.js +53 -0
- package/dist/database/typeorm/entities/otp-token.entity.js.map +1 -0
- package/dist/database/typeorm/entities/session.entity.d.ts +21 -0
- package/dist/database/typeorm/entities/session.entity.js +71 -0
- package/dist/database/typeorm/entities/session.entity.js.map +1 -0
- package/dist/database/typeorm/entities/session_log.entity.d.ts +25 -0
- package/dist/database/typeorm/entities/session_log.entity.js +78 -0
- package/dist/database/typeorm/entities/session_log.entity.js.map +1 -0
- package/dist/database/typeorm/migrations/auth-entities.d.ts +7 -0
- package/dist/database/typeorm/migrations/auth-entities.js +18 -0
- package/dist/database/typeorm/migrations/auth-entities.js.map +1 -0
- package/dist/database/typeorm/migrations/auth-schema.initializer.d.ts +9 -0
- package/dist/database/typeorm/migrations/auth-schema.initializer.js +36 -0
- package/dist/database/typeorm/migrations/auth-schema.initializer.js.map +1 -0
- package/dist/database/typeorm/migrations/auth.migration.v1.d.ts +12 -0
- package/dist/database/typeorm/migrations/auth.migration.v1.js +157 -0
- package/dist/database/typeorm/migrations/auth.migration.v1.js.map +1 -0
- package/dist/database/typeorm/migrations/auth.migration.v2.d.ts +8 -0
- package/dist/database/typeorm/migrations/auth.migration.v2.js +23 -0
- package/dist/database/typeorm/migrations/auth.migration.v2.js.map +1 -0
- package/dist/database/typeorm/migrations/auth.migrations.d.ts +2 -0
- package/dist/database/typeorm/migrations/auth.migrations.js +10 -0
- package/dist/database/typeorm/migrations/auth.migrations.js.map +1 -0
- package/dist/database/typeorm/migrations/migration.service.d.ts +9 -0
- package/dist/database/typeorm/migrations/migration.service.js +75 -0
- package/dist/database/typeorm/migrations/migration.service.js.map +1 -0
- package/dist/database/typeorm/repositories/auth-identifier.repository.d.ts +18 -0
- package/dist/database/typeorm/repositories/auth-identifier.repository.js +64 -0
- package/dist/database/typeorm/repositories/auth-identifier.repository.js.map +1 -0
- package/dist/database/typeorm/repositories/auth.repository.d.ts +21 -0
- package/dist/database/typeorm/repositories/auth.repository.js +71 -0
- package/dist/database/typeorm/repositories/auth.repository.js.map +1 -0
- package/dist/database/typeorm/repositories/index.d.ts +7 -0
- package/dist/database/typeorm/repositories/index.js +24 -0
- package/dist/database/typeorm/repositories/index.js.map +1 -0
- package/dist/database/typeorm/repositories/mfa-method.repository.d.ts +13 -0
- package/dist/database/typeorm/repositories/mfa-method.repository.js +46 -0
- package/dist/database/typeorm/repositories/mfa-method.repository.js.map +1 -0
- package/dist/database/typeorm/repositories/oauth-provider.repository.d.ts +16 -0
- package/dist/database/typeorm/repositories/oauth-provider.repository.js +52 -0
- package/dist/database/typeorm/repositories/oauth-provider.repository.js.map +1 -0
- package/dist/database/typeorm/repositories/otp-token.repository.d.ts +13 -0
- package/dist/database/typeorm/repositories/otp-token.repository.js +52 -0
- package/dist/database/typeorm/repositories/otp-token.repository.js.map +1 -0
- package/dist/database/typeorm/repositories/session-log.repository.d.ts +12 -0
- package/dist/database/typeorm/repositories/session-log.repository.js +47 -0
- package/dist/database/typeorm/repositories/session-log.repository.js.map +1 -0
- package/dist/database/typeorm/repositories/session.repository.d.ts +18 -0
- package/dist/database/typeorm/repositories/session.repository.js +84 -0
- package/dist/database/typeorm/repositories/session.repository.js.map +1 -0
- package/dist/database/typeorm/typeorm-auth.adapter.d.ts +2 -0
- package/dist/database/typeorm/typeorm-auth.adapter.js +50 -0
- package/dist/database/typeorm/typeorm-auth.adapter.js.map +1 -0
- package/dist/index.d.ts +11 -9
- package/dist/index.js +18 -10
- package/dist/index.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/fix-imports.js +46 -0
- package/fix-syntax.js +66 -0
- package/package.json +22 -20
- package/patch-local-specs.js +52 -0
- package/patch-oauth-specs.js +41 -0
- package/patch-specs.js +36 -0
- package/prompts/database_adapter.md +157 -0
- package/prompts/otp_provider.md +292 -0
- package/scratch/create-prisma-repos-final.js +139 -0
- package/scratch/create-prisma-repos.js +280 -0
- package/scratch/fix-events-spec.js +12 -0
- package/scratch/fix-imports.js +53 -0
- package/scratch/fix-prisma-interfaces.js +41 -0
- package/scratch/fix-prisma-interfaces2.js +36 -0
- package/scratch/fix-prisma-interfaces3.js +26 -0
- package/scratch/fix-prisma.js +28 -0
- package/scratch/fix-test-imports.js +51 -0
- package/scratch/fix-tests-advanced.js +68 -0
- package/scratch/fix-tests-advanced2.js +23 -0
- package/scratch/fix-tests-concrete.js +40 -0
- package/scratch/fix-tests-final.js +35 -0
- package/scratch/fix-tests-final2.js +28 -0
- package/scratch/fix-tests-final3.js +26 -0
- package/scratch/fix-tests-methods.js +40 -0
- package/scratch/fix-tests-proxy.js +67 -0
- package/scratch/fix-tests-types.js +24 -0
- package/scratch/rewrite-tests.js +110 -0
- package/tsc_errors.txt +60 -0
- package/tsc_errors2.txt +93 -0
- package/tmp-cv-test/package-lock.json +0 -250
- package/tmp-cv-test/package.json +0 -17
- package/tmp-cv-test/test.ts +0 -11
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,17 @@
|
|
|
1
|
+
# v1.0.1
|
|
2
|
+
## Changes
|
|
3
|
+
1. Changed the source of identifier from `USER_INPUT` to `LOCAL`
|
|
4
|
+
|
|
5
|
+
# v1.0.0
|
|
6
|
+
## Features & Testing Enhancements
|
|
7
|
+
1. **Granular OTP Providers Map**: Introduced `otpProviders` in `AuthModuleOptions` to allow specifying different OTP backend implementations per identifier type (e.g., Twilio Verify for phone and `DatabaseOtpProvider` for email), eliminating the need for custom routing classes.
|
|
8
|
+
2. **MFA Complete Flow**: Added `POST /auth/mfa/verify` endpoint to allow users to submit TOTP codes and receive session tokens after an `mfaRequired` login response.
|
|
9
|
+
3. **Test Accounts**: Added granular `testAccounts` configuration for OTPs to facilitate secure, targeted app store reviews and automated E2E testing without triggering notifications.
|
|
10
|
+
4. **Debug Mode OTP**: Enhanced `debugMode` in `AuthModuleOptions` to support a static `defaultOtp` for bypassing delivery logic during local development.
|
|
11
|
+
|
|
12
|
+
## Breaking Changes
|
|
13
|
+
1. **Database Adapters**: Added support for TypeORM, Prisma, and Custom Adapters.
|
|
14
|
+
|
|
1
15
|
# v0.3.2
|
|
2
16
|
## Patch Session Logs Method Signature
|
|
3
17
|
Made namespace optional
|
package/README.md
CHANGED
|
@@ -71,7 +71,12 @@ npm install nestjs-multi-auth
|
|
|
71
71
|
Ensure you have the required peer dependencies installed in your NestJS project:
|
|
72
72
|
|
|
73
73
|
```bash
|
|
74
|
-
npm install @nestjs/passport @nestjs/jwt passport passport-jwt class-validator bcrypt
|
|
74
|
+
npm install @nestjs/passport @nestjs/jwt passport passport-jwt class-validator bcrypt
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
If you are using the default **TypeORM** adapter, also install:
|
|
78
|
+
```bash
|
|
79
|
+
npm install typeorm @nestjs/typeorm
|
|
75
80
|
```
|
|
76
81
|
|
|
77
82
|
#### Optional Dependencies
|
|
@@ -82,11 +87,13 @@ npm install @nestjs/event-emitter
|
|
|
82
87
|
|
|
83
88
|
```typescript
|
|
84
89
|
import { Module } from '@nestjs/common';
|
|
85
|
-
import { AuthModule, AuthStrategy } from 'nestjs-multi-auth';
|
|
90
|
+
import { AuthModule, AuthStrategy, TypeOrmAuthAdapter } from 'nestjs-multi-auth';
|
|
86
91
|
|
|
87
92
|
@Module({
|
|
88
93
|
imports: [
|
|
94
|
+
// Register the AuthModule with your chosen adapter
|
|
89
95
|
AuthModule.register({
|
|
96
|
+
adapter: TypeOrmAuthAdapter,
|
|
90
97
|
jwtSecret: process.env.JWT_SECRET,
|
|
91
98
|
jwtRefreshSecret: process.env.JWT_REFRESH_SECRET,
|
|
92
99
|
}),
|
|
@@ -114,7 +121,7 @@ Use `AuthModule.forRootAsync()` when your configuration depends on other provide
|
|
|
114
121
|
```typescript
|
|
115
122
|
import { Module } from '@nestjs/common';
|
|
116
123
|
import { ConfigModule, ConfigService } from '@nestjs/config';
|
|
117
|
-
import { AuthModule } from 'nestjs-multi-auth';
|
|
124
|
+
import { AuthModule, TypeOrmAuthAdapter } from 'nestjs-multi-auth';
|
|
118
125
|
|
|
119
126
|
@Module({
|
|
120
127
|
imports: [
|
|
@@ -123,6 +130,7 @@ import { AuthModule } from 'nestjs-multi-auth';
|
|
|
123
130
|
imports: [ConfigModule],
|
|
124
131
|
inject: [ConfigService],
|
|
125
132
|
useFactory: async (config: ConfigService) => ({
|
|
133
|
+
adapter: TypeOrmAuthAdapter,
|
|
126
134
|
jwtSecret: config.get('JWT_SECRET'),
|
|
127
135
|
jwtRefreshSecret: config.get('JWT_REFRESH_SECRET'),
|
|
128
136
|
appName: config.get('APP_NAME'),
|
|
@@ -181,8 +189,6 @@ import type { AuthCredential } from 'nestjs-multi-auth';
|
|
|
181
189
|
// AuthCredential = { uid: string; sessionId: string }
|
|
182
190
|
```
|
|
183
191
|
|
|
184
|
-
---
|
|
185
|
-
|
|
186
192
|
## Identity Verification (OTPs) & MFA
|
|
187
193
|
|
|
188
194
|
The library includes a pluggable verification system to confirm identities via Email or Phone. OTPs are triggered in the following scenarios:
|
|
@@ -199,24 +205,259 @@ If a user authenticates via a non-verifiable method (like a **USERNAME**), the s
|
|
|
199
205
|
- Prioritizes verified **EMAIL** or **PHONE** numbers for delivery.
|
|
200
206
|
- Marks all identifiers for the current auth method as verified once the OTP is confirmed.
|
|
201
207
|
|
|
208
|
+
### OTP Providers
|
|
209
|
+
|
|
210
|
+
The library uses a two-layer system to manage OTPs:
|
|
211
|
+
|
|
212
|
+
| Layer | Responsibility |
|
|
213
|
+
|---|---|
|
|
214
|
+
| **OTP Provider** (`otpProvider`) | Generates, stores, and verifies OTP codes. |
|
|
215
|
+
| **Notification Provider** (`notificationProvider`) | Delivers OTP codes to the user (SMS, email, etc.). |
|
|
216
|
+
|
|
217
|
+
#### Built-in: `DatabaseOtpProvider` (Default)
|
|
218
|
+
|
|
219
|
+
By default, the library uses the `DatabaseOtpProvider`, which stores hashed OTP codes in your database. You do **not** need to configure anything to use it — it works out of the box with whichever database adapter you register.
|
|
220
|
+
|
|
221
|
+
It supports two special bypass modes that are useful during development and testing:
|
|
222
|
+
|
|
223
|
+
**Debug Mode** — Use a static OTP for all identifiers. Useful during local development to avoid sending real notifications.
|
|
224
|
+
|
|
225
|
+
```typescript
|
|
226
|
+
AuthModule.register({
|
|
227
|
+
adapter: TypeOrmAuthAdapter,
|
|
228
|
+
debugMode: true,
|
|
229
|
+
defaultOtp: '111111', // Every OTP request will use this code
|
|
230
|
+
// ...
|
|
231
|
+
})
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
> [!WARNING]
|
|
235
|
+
> Never enable `debugMode` in production. It disables real OTP generation for all users.
|
|
236
|
+
|
|
237
|
+
**Test Accounts** — Assign static OTPs to specific identifiers. Ideal for app store review automation or E2E tests, without affecting real users.
|
|
238
|
+
|
|
239
|
+
```typescript
|
|
240
|
+
AuthModule.register({
|
|
241
|
+
adapter: TypeOrmAuthAdapter,
|
|
242
|
+
testAccounts: [
|
|
243
|
+
{ identifier: '+15550000000', otp: '000000' },
|
|
244
|
+
{ identifier: 'reviewer@apple.com', otp: '123456' },
|
|
245
|
+
],
|
|
246
|
+
// ...
|
|
247
|
+
})
|
|
248
|
+
```
|
|
249
|
+
|
|
250
|
+
When a test account identifier requests an OTP, the static code is used and the notification provider is **skipped entirely** (no SMS or email is sent).
|
|
251
|
+
|
|
252
|
+
#### Custom OTP Provider
|
|
253
|
+
|
|
254
|
+
If you need to integrate a third-party OTP service (e.g. Twilio Verify, Firebase Phone Auth, Vonage), implement the `AuthOtpProvider` interface and register it via the `otpProvider` option.
|
|
255
|
+
|
|
256
|
+
**Step 1: Implement `AuthOtpProvider`**
|
|
257
|
+
|
|
258
|
+
```typescript
|
|
259
|
+
import {
|
|
260
|
+
AuthOtpProvider,
|
|
261
|
+
IssueOtpRequest,
|
|
262
|
+
IssueOtpResult,
|
|
263
|
+
VerifyOtpRequest,
|
|
264
|
+
VerifyOtpResult,
|
|
265
|
+
ResendOtpRequest,
|
|
266
|
+
ResendOtpResult,
|
|
267
|
+
} from 'nestjs-multi-auth';
|
|
268
|
+
|
|
269
|
+
@Injectable()
|
|
270
|
+
export class TwilioOtpProvider implements AuthOtpProvider {
|
|
271
|
+
constructor(private readonly twilioClient: TwilioClient) {}
|
|
272
|
+
|
|
273
|
+
async issue(request: IssueOtpRequest): Promise<IssueOtpResult> {
|
|
274
|
+
await this.twilioClient.verify.v2
|
|
275
|
+
.services(process.env.TWILIO_SERVICE_SID)
|
|
276
|
+
.verifications.create({ to: request.identifier, channel: request.identifierType });
|
|
277
|
+
|
|
278
|
+
// Return handledDelivery: true to tell the library NOT to call
|
|
279
|
+
// notificationProvider.sendVerificationCode() — Twilio already sent it.
|
|
280
|
+
return { handledDelivery: true };
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
async verify(request: VerifyOtpRequest): Promise<VerifyOtpResult> {
|
|
284
|
+
const check = await this.twilioClient.verify.v2
|
|
285
|
+
.services(process.env.TWILIO_SERVICE_SID)
|
|
286
|
+
.verificationChecks.create({ to: request.uid, code: request.code });
|
|
287
|
+
|
|
288
|
+
return { success: check.status === 'approved' };
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
// Optional — implement only if you want to support /auth/resend-verification
|
|
292
|
+
async resend(request: ResendOtpRequest): Promise<ResendOtpResult> {
|
|
293
|
+
await this.twilioClient.verify.v2
|
|
294
|
+
.services(process.env.TWILIO_SERVICE_SID)
|
|
295
|
+
.verifications.create({ to: request.uid, channel: 'sms' });
|
|
296
|
+
|
|
297
|
+
return { handledDelivery: true };
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
```
|
|
301
|
+
|
|
302
|
+
> [!NOTE]
|
|
303
|
+
> When `handledDelivery` is `true`, the library will skip calling `notificationProvider.sendVerificationCode()`. Return `handledDelivery: false` (and include `code`) if you still want the library to dispatch the notification.
|
|
304
|
+
|
|
305
|
+
**Step 2: Register in `AuthModule`**
|
|
306
|
+
|
|
307
|
+
Pass your custom class to the `otpProvider` option. Also ensure the module that provides your service (e.g. `TwilioModule`) is listed in `imports`:
|
|
308
|
+
|
|
309
|
+
```typescript
|
|
310
|
+
AuthModule.register({
|
|
311
|
+
adapter: TypeOrmAuthAdapter,
|
|
312
|
+
otpProvider: TwilioOtpProvider,
|
|
313
|
+
imports: [TwilioModule], // provides TwilioClient
|
|
314
|
+
// notificationProvider is optional when handledDelivery is always true
|
|
315
|
+
})
|
|
316
|
+
```
|
|
317
|
+
|
|
318
|
+
#### Routing by Identifier Type (Email + Phone)
|
|
319
|
+
|
|
320
|
+
There are two strategies depending on how much control you need. Choose the one that fits your stack:
|
|
321
|
+
|
|
322
|
+
---
|
|
323
|
+
|
|
324
|
+
**Option A — Recommended for most cases: Keep `DatabaseOtpProvider`, route delivery in `notificationProvider`**
|
|
325
|
+
|
|
326
|
+
When your app uses both email and phone auth, the simplest approach is to keep the built-in `DatabaseOtpProvider` (which handles generation, storage, and verification for you) and only implement routing logic in your `notificationProvider`. The `sendVerificationCode` method always receives a `type: 'email' | 'phone'` field you can use to dispatch via the right channel:
|
|
327
|
+
|
|
328
|
+
```typescript
|
|
329
|
+
@Injectable()
|
|
330
|
+
export class MyNotificationProvider implements AuthNotificationProvider {
|
|
331
|
+
constructor(
|
|
332
|
+
private readonly mailer: MailerService,
|
|
333
|
+
private readonly sms: SmsService,
|
|
334
|
+
) {}
|
|
335
|
+
|
|
336
|
+
async sendVerificationCode(request: { to: string; code: string; type: 'email' | 'phone' }) {
|
|
337
|
+
if (request.type === 'phone') {
|
|
338
|
+
await this.sms.send(request.to, `Your code: ${request.code}`);
|
|
339
|
+
} else {
|
|
340
|
+
await this.mailer.send({ to: request.to, subject: 'Your Code', text: `Code: ${request.code}` });
|
|
341
|
+
}
|
|
342
|
+
}
|
|
343
|
+
}
|
|
344
|
+
```
|
|
345
|
+
|
|
346
|
+
```typescript
|
|
347
|
+
// No otpProvider needed — DatabaseOtpProvider is the default
|
|
348
|
+
AuthModule.register({
|
|
349
|
+
adapter: TypeOrmAuthAdapter,
|
|
350
|
+
notificationProvider: MyNotificationProvider,
|
|
351
|
+
imports: [MailerModule, SmsModule],
|
|
352
|
+
})
|
|
353
|
+
```
|
|
354
|
+
|
|
355
|
+
This is the recommended approach when you manage delivery yourself (e.g. Twilio Programmable SMS + SendGrid) but don't need an external service to own the verification lifecycle.
|
|
356
|
+
|
|
357
|
+
---
|
|
358
|
+
|
|
359
|
+
**Option B — Fully custom: Use an external verification service per channel**
|
|
360
|
+
|
|
361
|
+
Some services like **Twilio Verify** or **Firebase Phone Auth** own the entire OTP lifecycle (they generate, store, and verify the code on their servers). If you want to use such a service for phone auth, you can split your OTP providers using the `otpProviders` configuration map.
|
|
362
|
+
|
|
363
|
+
With this approach, you create a focused `TwilioOtpProvider` that only handles phone, and let the library fall back to the built-in `DatabaseOtpProvider` for email.
|
|
364
|
+
|
|
365
|
+
```typescript
|
|
366
|
+
@Injectable()
|
|
367
|
+
export class TwilioOtpProvider implements AuthOtpProvider {
|
|
368
|
+
constructor(private readonly twilioClient: TwilioClient) {}
|
|
369
|
+
|
|
370
|
+
async issue(request: IssueOtpRequest): Promise<IssueOtpResult> {
|
|
371
|
+
await this.twilioClient.verify.v2
|
|
372
|
+
.services(process.env.TWILIO_SERVICE_SID)
|
|
373
|
+
.verifications.create({ to: request.identifier, channel: 'sms' });
|
|
374
|
+
|
|
375
|
+
return { handledDelivery: true }; // Twilio handles the SMS delivery
|
|
376
|
+
}
|
|
377
|
+
|
|
378
|
+
async verify(request: VerifyOtpRequest): Promise<VerifyOtpResult> {
|
|
379
|
+
const check = await this.twilioClient.verify.v2
|
|
380
|
+
.services(process.env.TWILIO_SERVICE_SID)
|
|
381
|
+
.verificationChecks.create({ to: request.uid, code: request.code });
|
|
382
|
+
|
|
383
|
+
if (check.status === 'approved') return { success: true };
|
|
384
|
+
return { success: false };
|
|
385
|
+
}
|
|
386
|
+
}
|
|
387
|
+
```
|
|
388
|
+
|
|
389
|
+
#### Responsibility Split: `otpProviders` vs `notificationProvider`
|
|
390
|
+
|
|
391
|
+
These two providers have **distinct, non-overlapping responsibilities**. A service like Twilio Verify only replaces the OTP lifecycle — it does **not** handle magic links or security alerts:
|
|
392
|
+
|
|
393
|
+
| Notification | Handled by |
|
|
394
|
+
|---|---|
|
|
395
|
+
| OTP issue / verify / resend (login, signup, verification) | `otpProviders.phone` or `otpProviders.email` |
|
|
396
|
+
| OTP code delivery (when `handledDelivery: false`) | `notificationProvider.sendVerificationCode()` |
|
|
397
|
+
| Magic link emails | `notificationProvider.sendMagicLink()` |
|
|
398
|
+
| Password-changed security alerts | `notificationProvider.sendPasswordChangedNotification()` |
|
|
399
|
+
|
|
400
|
+
You will almost always configure the **granular `otpProviders` map** alongside your `notificationProvider`:
|
|
401
|
+
|
|
402
|
+
```typescript
|
|
403
|
+
AuthModule.register({
|
|
404
|
+
adapter: TypeOrmAuthAdapter,
|
|
405
|
+
|
|
406
|
+
// Route OTP lifecycle dynamically per channel
|
|
407
|
+
otpProviders: {
|
|
408
|
+
phone: TwilioOtpProvider, // Twilio Verify owns phone auth
|
|
409
|
+
email: DatabaseOtpProvider, // Built-in database owns email auth
|
|
410
|
+
},
|
|
411
|
+
|
|
412
|
+
// Owns magic links & security alerts
|
|
413
|
+
notificationProvider: MyNotificationProvider,
|
|
414
|
+
|
|
415
|
+
imports: [TwilioModule, MailerModule],
|
|
416
|
+
})
|
|
417
|
+
```
|
|
418
|
+
|
|
419
|
+
#### `AuthOtpProvider` Interface Reference
|
|
420
|
+
|
|
421
|
+
| Method | Required | Description |
|
|
422
|
+
|---|:---:|---|
|
|
423
|
+
| `issue(request)` | ✅ | Generate and dispatch a new OTP. `request.identifierType` is `'email'` or `'phone'`. |
|
|
424
|
+
| `verify(request)` | ✅ | Validate a submitted OTP code. |
|
|
425
|
+
| `resend(request)` | - | Re-send an OTP (powers `POST /auth/resend-verification`). |
|
|
426
|
+
|
|
202
427
|
### 1. Implement `AuthNotificationProvider`
|
|
203
428
|
|
|
204
|
-
Create a service to deliver
|
|
429
|
+
Create a service to deliver verification codes and other security notifications. The `type` field in `sendVerificationCode` is always `'email'` or `'phone'`, allowing you to route to the correct transport:
|
|
205
430
|
|
|
206
431
|
```typescript
|
|
207
432
|
import { AuthNotificationProvider } from 'nestjs-multi-auth';
|
|
208
|
-
import { NotifycService } from 'notifyc-nestjs';
|
|
209
433
|
|
|
210
434
|
@Injectable()
|
|
211
435
|
export class MyNotificationProvider implements AuthNotificationProvider {
|
|
212
|
-
constructor(
|
|
436
|
+
constructor(
|
|
437
|
+
private readonly mailer: MailerService,
|
|
438
|
+
private readonly sms: SmsService,
|
|
439
|
+
) {}
|
|
440
|
+
|
|
441
|
+
// Called when otpProvider returns handledDelivery: false
|
|
442
|
+
async sendVerificationCode(request: { to: string; code: string; type: 'email' | 'phone'; purpose?: string; expiresAt?: Date }) {
|
|
443
|
+
if (request.type === 'phone') {
|
|
444
|
+
await this.sms.send(request.to, `Your code: ${request.code}`);
|
|
445
|
+
} else {
|
|
446
|
+
await this.mailer.send({ to: request.to, subject: 'Your Code', text: `Code: ${request.code}` });
|
|
447
|
+
}
|
|
448
|
+
}
|
|
213
449
|
|
|
214
|
-
|
|
215
|
-
|
|
450
|
+
// Optional — powers Magic Link login
|
|
451
|
+
async sendMagicLink(to: string, link: string) {
|
|
452
|
+
await this.mailer.send({ to, subject: 'Your login link', html: `<a href="${link}">Log in</a>` });
|
|
453
|
+
}
|
|
454
|
+
|
|
455
|
+
// Optional — triggers on PATCH /auth/password
|
|
456
|
+
async sendPasswordChangedNotification(to: string, context: { ip: string; userAgent: string; secureAccountLink: string }) {
|
|
457
|
+
await this.mailer.send({
|
|
216
458
|
to,
|
|
217
|
-
subject: 'Your
|
|
218
|
-
|
|
219
|
-
transport: type === 'email' ? 'SMTP' : 'SMS',
|
|
459
|
+
subject: 'Your password was changed',
|
|
460
|
+
html: `<p>Changed from IP <strong>${context.ip}</strong>. <a href="${context.secureAccountLink}">Secure account</a>.</p>`,
|
|
220
461
|
});
|
|
221
462
|
}
|
|
222
463
|
}
|
|
@@ -230,8 +471,8 @@ AuthModule.register({
|
|
|
230
471
|
notificationProvider: MyNotificationProvider,
|
|
231
472
|
verificationRequired: true, // If true, login is blocked until verified
|
|
232
473
|
|
|
233
|
-
// Pass the
|
|
234
|
-
imports: [
|
|
474
|
+
// Pass the modules that provide your services
|
|
475
|
+
imports: [MailerModule, SmsModule],
|
|
235
476
|
})
|
|
236
477
|
```
|
|
237
478
|
|
|
@@ -527,6 +768,7 @@ The library automatically mounts the following endpoints under the `/auth` prefi
|
|
|
527
768
|
| `POST` | `/auth/link` | ✅ | `SignupDto` | Link a new auth method to the current account. |
|
|
528
769
|
| `POST` | `/auth/mfa/enroll` | ✅ | `EnrollMfaDto` | Begin TOTP MFA enrollment. |
|
|
529
770
|
| `POST` | `/auth/mfa/activate` | ✅ | `ActivateMfaDto` | Confirm TOTP setup with a live code. |
|
|
771
|
+
| `POST` | `/auth/mfa/verify` | - | `VerifyMfaLoginDto` | Submit TOTP code to complete MFA login and receive session tokens. |
|
|
530
772
|
| `GET` | `/auth` | Optional | — | List all auth identities (admin/debug). |
|
|
531
773
|
| `GET` | `/auth/me` | ✅ | — | View current identity details. |
|
|
532
774
|
| `GET` | `/auth/me/methods` | ✅ | — | View all auth methods for the current user. |
|
|
@@ -631,6 +873,14 @@ Used to finalize MFA activation (`/auth/mfa/activate`).
|
|
|
631
873
|
| `type` | `MfaType` | ✅ | The type of MFA to activate. |
|
|
632
874
|
| `code` | `string` | ✅ | The 6-digit code from the authenticator app. |
|
|
633
875
|
|
|
876
|
+
### `VerifyMfaLoginDto`
|
|
877
|
+
Used to submit an MFA code during login (`/auth/mfa/verify`).
|
|
878
|
+
|
|
879
|
+
| Field | Type | Required | Description |
|
|
880
|
+
|---|---|---|---|
|
|
881
|
+
| `uid` | `string` | ✅ | The unique identity ID. |
|
|
882
|
+
| `code` | `string` | ✅ | The 6-digit code from the authenticator app. |
|
|
883
|
+
|
|
634
884
|
---
|
|
635
885
|
|
|
636
886
|
## Enumerations (Enums)
|
|
@@ -775,6 +1025,7 @@ All options for `AuthModule.register()` / `AuthModule.forRootAsync()`:
|
|
|
775
1025
|
| `defaultOtp` | `string` | — | A static OTP value to use when `debugMode` is enabled. |
|
|
776
1026
|
| `forceVerificationOnGoogleSignup` | `boolean` | `false` | Force OTP validation for Google OAuth during signup, bypassing Google's `email_verified`. |
|
|
777
1027
|
| `forceVerificationOnGoogleLogin` | `boolean` | `false` | Force OTP validation for Google OAuth during login if not already verified. |
|
|
1028
|
+
| `testAccounts` | `TestAccount[]` | — | Array of `{ identifier: string, otp: string }` to bypass OTP delivery for app review/testing. |
|
|
778
1029
|
|
|
779
1030
|
---
|
|
780
1031
|
## Advanced Config
|
|
@@ -863,11 +1114,51 @@ If you are getting 401 errors on routes marked with `@Public()`, ensure that the
|
|
|
863
1114
|
|
|
864
1115
|
---
|
|
865
1116
|
|
|
866
|
-
##
|
|
1117
|
+
## Database Adapters
|
|
1118
|
+
|
|
1119
|
+
Because this library is completely decoupled from your user schema, it manages its own internal tables (`Auth`, `Session`, `MfaMethod`, `OtpToken`, `OAuthProvider`, `AuthIdentifier`). These entities use an opaque `uid: string` to identify users.
|
|
1120
|
+
|
|
1121
|
+
You can use the provided **TypeORM** or **Prisma** adapters, or build your own **custom adapter** to manage these tables.
|
|
1122
|
+
|
|
1123
|
+
### TypeORM (Default)
|
|
1124
|
+
The library provides the `TypeOrmAuthAdapter` which automatically registers the necessary entities.
|
|
867
1125
|
|
|
868
|
-
|
|
1126
|
+
1. Register `TypeOrmAuthAdapter` inside the `AuthModule`:
|
|
1127
|
+
```typescript
|
|
1128
|
+
import { TypeOrmAuthAdapter, AuthModule } from 'nestjs-multi-auth';
|
|
1129
|
+
|
|
1130
|
+
@Module({
|
|
1131
|
+
imports: [
|
|
1132
|
+
AuthModule.register({
|
|
1133
|
+
adapter: TypeOrmAuthAdapter,
|
|
1134
|
+
/* options */
|
|
1135
|
+
})
|
|
1136
|
+
]
|
|
1137
|
+
})
|
|
1138
|
+
export class AppModule {}
|
|
1139
|
+
```
|
|
1140
|
+
2. You must have `@nestjs/typeorm` and `TypeOrmModule.forRoot()` configured in your application. Ensure that `autoLoadEntities: true` is enabled so the adapter's entities are automatically picked up.
|
|
1141
|
+
|
|
1142
|
+
### Prisma
|
|
1143
|
+
The library provides full "Bring Your Own Prisma" support.
|
|
869
1144
|
|
|
870
|
-
|
|
1145
|
+
1. **Copy the Schema**: First, copy the library's required [schema.prisma models](https://github.com/IsaiahTek/nestjs-multi-auth/blob/main/src/database/prisma/schema.prisma) into your own `schema.prisma` file and run `npx prisma generate` & `npx prisma db push` (or `migrate dev`).
|
|
1146
|
+
2. **Register the Adapter**: Import the `PrismaAuthAdapter` and pass it to the `adapter` option.
|
|
1147
|
+
|
|
1148
|
+
```typescript
|
|
1149
|
+
import { PrismaAuthAdapter, AuthModule } from 'nestjs-multi-auth';
|
|
1150
|
+
import { PrismaService } from './prisma.service'; // Your custom Prisma client wrapper
|
|
1151
|
+
|
|
1152
|
+
@Module({
|
|
1153
|
+
imports: [
|
|
1154
|
+
AuthModule.register({
|
|
1155
|
+
adapter: PrismaAuthAdapter.register({ prismaServiceToken: PrismaService }),
|
|
1156
|
+
/* options */
|
|
1157
|
+
})
|
|
1158
|
+
]
|
|
1159
|
+
})
|
|
1160
|
+
export class AppModule {}
|
|
1161
|
+
```
|
|
871
1162
|
|
|
872
1163
|
---
|
|
873
1164
|
|
|
@@ -2,7 +2,7 @@ import { AuthService } from './auth.service';
|
|
|
2
2
|
import { LoginDto } from './dto/requests/login.dto';
|
|
3
3
|
import { SignupDto } from './dto/requests/signup.dto';
|
|
4
4
|
import { VerifyDto, ResendVerificationDto } from './dto/requests/verify.dto';
|
|
5
|
-
import { EnrollMfaDto, ActivateMfaDto } from './dto/requests/mfa.dto';
|
|
5
|
+
import { EnrollMfaDto, ActivateMfaDto, VerifyMfaLoginDto } from './dto/requests/mfa.dto';
|
|
6
6
|
import { RefreshTokenDto } from './dto/requests/refresh-token.dto';
|
|
7
7
|
import { ForgotPasswordDto } from './dto/requests/forgot-password.dto';
|
|
8
8
|
import { ResetPasswordDto } from './dto/requests/reset-password.dto';
|
|
@@ -41,7 +41,7 @@ export declare class AuthController {
|
|
|
41
41
|
requestMagicLink(dto: MagicLinkRequestDto): Promise<{
|
|
42
42
|
message: string;
|
|
43
43
|
}>;
|
|
44
|
-
verifyMagicLink(token: string, res: Response, req: Request): Promise<any>;
|
|
44
|
+
verifyMagicLink(token: string, email: string, res: Response, req: Request): Promise<any>;
|
|
45
45
|
link(dto: SignupDto, req: any, res: Response): Promise<any>;
|
|
46
46
|
refresh(req: Request, res: Response, dto: RefreshTokenDto): Promise<{
|
|
47
47
|
message: string;
|
|
@@ -60,6 +60,7 @@ export declare class AuthController {
|
|
|
60
60
|
activateMfa(req: any, dto: ActivateMfaDto): Promise<{
|
|
61
61
|
message: string;
|
|
62
62
|
}>;
|
|
63
|
+
verifyMfa(dto: VerifyMfaLoginDto, res: Response, req: Request): Promise<any>;
|
|
63
64
|
logout(req: Request, res: Response, dto: RefreshTokenDto): Promise<{
|
|
64
65
|
message: string;
|
|
65
66
|
}>;
|
|
@@ -150,9 +150,9 @@ let AuthController = class AuthController {
|
|
|
150
150
|
async requestMagicLink(dto) {
|
|
151
151
|
return this.authService.requestMagicLink(dto);
|
|
152
152
|
}
|
|
153
|
-
async verifyMagicLink(token, res, req) {
|
|
153
|
+
async verifyMagicLink(token, email, res, req) {
|
|
154
154
|
const namespace = this.authContext.getNamespace(req);
|
|
155
|
-
const result = await this.authService.verifyMagicLink({ dto: { token }, userAgent: req.headers['user-agent'], ip: req.ip, namespace });
|
|
155
|
+
const result = await this.authService.verifyMagicLink({ dto: { token, email }, userAgent: req.headers['user-agent'], ip: req.ip, namespace });
|
|
156
156
|
const transports = this.getTransports();
|
|
157
157
|
if (result.tokens) {
|
|
158
158
|
if (transports.includes(auth_type_enum_1.AuthTransport.COOKIE) || transports.includes(auth_type_enum_1.AuthTransport.BOTH)) {
|
|
@@ -224,6 +224,21 @@ let AuthController = class AuthController {
|
|
|
224
224
|
async activateMfa(req, dto) {
|
|
225
225
|
return this.authService.activateMfa(req.user.uid, dto.type, dto.code);
|
|
226
226
|
}
|
|
227
|
+
async verifyMfa(dto, res, req) {
|
|
228
|
+
const namespace = this.authContext.getNamespace(req);
|
|
229
|
+
const result = await this.authService.mfaLogin(dto.uid, dto.code, req.headers['user-agent'], req.ip, namespace);
|
|
230
|
+
const transports = this.getTransports();
|
|
231
|
+
if (result.tokens) {
|
|
232
|
+
if (transports.includes(auth_type_enum_1.AuthTransport.COOKIE) || transports.includes(auth_type_enum_1.AuthTransport.BOTH)) {
|
|
233
|
+
this.setCookies(res, req, result.tokens.accessToken, result.tokens.refreshToken);
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
const response = { message: result.message, auth: result.auth };
|
|
237
|
+
if (result.tokens && (transports.includes(auth_type_enum_1.AuthTransport.BEARER) || transports.includes(auth_type_enum_1.AuthTransport.BOTH))) {
|
|
238
|
+
response.tokens = result.tokens;
|
|
239
|
+
}
|
|
240
|
+
return response;
|
|
241
|
+
}
|
|
227
242
|
async logout(req, res, dto) {
|
|
228
243
|
const cookies = this.authContext.get(req);
|
|
229
244
|
let token = req.cookies?.[cookies.refreshTokenName] || dto.refreshToken;
|
|
@@ -355,10 +370,11 @@ __decorate([
|
|
|
355
370
|
(0, public_decorator_1.Public)(),
|
|
356
371
|
(0, swagger_1.ApiOperation)({ summary: 'Verify magic link and login' }),
|
|
357
372
|
__param(0, (0, common_2.Query)('token')),
|
|
358
|
-
__param(1, (0,
|
|
359
|
-
__param(2, (0, common_1.
|
|
373
|
+
__param(1, (0, common_2.Query)('email')),
|
|
374
|
+
__param(2, (0, common_1.Res)({ passthrough: true })),
|
|
375
|
+
__param(3, (0, common_1.Req)()),
|
|
360
376
|
__metadata("design:type", Function),
|
|
361
|
-
__metadata("design:paramtypes", [String, Object, Object]),
|
|
377
|
+
__metadata("design:paramtypes", [String, String, Object, Object]),
|
|
362
378
|
__metadata("design:returntype", Promise)
|
|
363
379
|
], AuthController.prototype, "verifyMagicLink", null);
|
|
364
380
|
__decorate([
|
|
@@ -400,6 +416,17 @@ __decorate([
|
|
|
400
416
|
__metadata("design:paramtypes", [Object, mfa_dto_1.ActivateMfaDto]),
|
|
401
417
|
__metadata("design:returntype", Promise)
|
|
402
418
|
], AuthController.prototype, "activateMfa", null);
|
|
419
|
+
__decorate([
|
|
420
|
+
(0, common_1.Post)('mfa/verify'),
|
|
421
|
+
(0, public_decorator_1.Public)(),
|
|
422
|
+
(0, swagger_1.ApiOperation)({ summary: 'Verify MFA code to complete login' }),
|
|
423
|
+
__param(0, (0, common_1.Body)()),
|
|
424
|
+
__param(1, (0, common_1.Res)({ passthrough: true })),
|
|
425
|
+
__param(2, (0, common_1.Req)()),
|
|
426
|
+
__metadata("design:type", Function),
|
|
427
|
+
__metadata("design:paramtypes", [mfa_dto_1.VerifyMfaLoginDto, Object, Object]),
|
|
428
|
+
__metadata("design:returntype", Promise)
|
|
429
|
+
], AuthController.prototype, "verifyMfa", null);
|
|
403
430
|
__decorate([
|
|
404
431
|
(0, common_1.Post)('logout'),
|
|
405
432
|
(0, swagger_1.ApiOperation)({ summary: 'User logout' }),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.controller.js","sourceRoot":"","sources":["../../src/auth/auth.controller.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"auth.controller.js","sourceRoot":"","sources":["../../src/auth/auth.controller.ts"],"names":[],"mappings":"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"}
|