@ackplus/nest-auth 0.0.23

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.
Files changed (186) hide show
  1. package/README.md +226 -0
  2. package/package.json +51 -0
  3. package/src/index.d.ts +11 -0
  4. package/src/index.js +15 -0
  5. package/src/index.js.map +1 -0
  6. package/src/lib/auth.constants.d.ts +17 -0
  7. package/src/lib/auth.constants.js +21 -0
  8. package/src/lib/auth.constants.js.map +1 -0
  9. package/src/lib/controllers/auth.controller.d.ts +26 -0
  10. package/src/lib/controllers/auth.controller.js +214 -0
  11. package/src/lib/controllers/auth.controller.js.map +1 -0
  12. package/src/lib/controllers/mfa.controller.d.ts +23 -0
  13. package/src/lib/controllers/mfa.controller.js +132 -0
  14. package/src/lib/controllers/mfa.controller.js.map +1 -0
  15. package/src/lib/decorators/skip-mfa.decorator.d.ts +2 -0
  16. package/src/lib/decorators/skip-mfa.decorator.js +8 -0
  17. package/src/lib/decorators/skip-mfa.decorator.js.map +1 -0
  18. package/src/lib/dto/index.d.ts +12 -0
  19. package/src/lib/dto/index.js +16 -0
  20. package/src/lib/dto/index.js.map +1 -0
  21. package/src/lib/dto/requests/forgot-password.request.dto.d.ts +5 -0
  22. package/src/lib/dto/requests/forgot-password.request.dto.js +30 -0
  23. package/src/lib/dto/requests/forgot-password.request.dto.js.map +1 -0
  24. package/src/lib/dto/requests/login.request.dto.d.ts +6 -0
  25. package/src/lib/dto/requests/login.request.dto.js +34 -0
  26. package/src/lib/dto/requests/login.request.dto.js.map +1 -0
  27. package/src/lib/dto/requests/refresh-token.request.dto.d.ts +3 -0
  28. package/src/lib/dto/requests/refresh-token.request.dto.js +15 -0
  29. package/src/lib/dto/requests/refresh-token.request.dto.js.map +1 -0
  30. package/src/lib/dto/requests/reset-password.request.dto.d.ts +7 -0
  31. package/src/lib/dto/requests/reset-password.request.dto.js +42 -0
  32. package/src/lib/dto/requests/reset-password.request.dto.js.map +1 -0
  33. package/src/lib/dto/requests/send-mfa-code.request.dto.d.ts +4 -0
  34. package/src/lib/dto/requests/send-mfa-code.request.dto.js +16 -0
  35. package/src/lib/dto/requests/send-mfa-code.request.dto.js.map +1 -0
  36. package/src/lib/dto/requests/signup.request.dto.d.ts +6 -0
  37. package/src/lib/dto/requests/signup.request.dto.js +37 -0
  38. package/src/lib/dto/requests/signup.request.dto.js.map +1 -0
  39. package/src/lib/dto/requests/social-login.request.dto.d.ts +3 -0
  40. package/src/lib/dto/requests/social-login.request.dto.js +16 -0
  41. package/src/lib/dto/requests/social-login.request.dto.js.map +1 -0
  42. package/src/lib/dto/requests/update-user.dto.d.ts +5 -0
  43. package/src/lib/dto/requests/update-user.dto.js +24 -0
  44. package/src/lib/dto/requests/update-user.dto.js.map +1 -0
  45. package/src/lib/dto/requests/verify-2fa.request.dto.d.ts +5 -0
  46. package/src/lib/dto/requests/verify-2fa.request.dto.js +21 -0
  47. package/src/lib/dto/requests/verify-2fa.request.dto.js.map +1 -0
  48. package/src/lib/dto/requests/verify-totp-setup.request.dto.d.ts +4 -0
  49. package/src/lib/dto/requests/verify-totp-setup.request.dto.js +20 -0
  50. package/src/lib/dto/requests/verify-totp-setup.request.dto.js.map +1 -0
  51. package/src/lib/dto/responses/auth.response.dto.d.ts +16 -0
  52. package/src/lib/dto/responses/auth.response.dto.js +55 -0
  53. package/src/lib/dto/responses/auth.response.dto.js.map +1 -0
  54. package/src/lib/dto/responses/device-info.response.dto.d.ts +6 -0
  55. package/src/lib/dto/responses/device-info.response.dto.js +25 -0
  56. package/src/lib/dto/responses/device-info.response.dto.js.map +1 -0
  57. package/src/lib/dto/responses/message.response.dto.d.ts +3 -0
  58. package/src/lib/dto/responses/message.response.dto.js +13 -0
  59. package/src/lib/dto/responses/message.response.dto.js.map +1 -0
  60. package/src/lib/entities/auth-identity.entity.d.ts +11 -0
  61. package/src/lib/entities/auth-identity.entity.js +47 -0
  62. package/src/lib/entities/auth-identity.entity.js.map +1 -0
  63. package/src/lib/entities/index.d.ts +10 -0
  64. package/src/lib/entities/index.js +26 -0
  65. package/src/lib/entities/index.js.map +1 -0
  66. package/src/lib/entities/mfa-secret.entity.d.ts +12 -0
  67. package/src/lib/entities/mfa-secret.entity.js +51 -0
  68. package/src/lib/entities/mfa-secret.entity.js.map +1 -0
  69. package/src/lib/entities/otp.entity.d.ts +16 -0
  70. package/src/lib/entities/otp.entity.js +52 -0
  71. package/src/lib/entities/otp.entity.js.map +1 -0
  72. package/src/lib/entities/permission.entity.d.ts +9 -0
  73. package/src/lib/entities/permission.entity.js +37 -0
  74. package/src/lib/entities/permission.entity.js.map +1 -0
  75. package/src/lib/entities/role-permission.entity.d.ts +8 -0
  76. package/src/lib/entities/role-permission.entity.js +30 -0
  77. package/src/lib/entities/role-permission.entity.js.map +1 -0
  78. package/src/lib/entities/role.entity.d.ts +11 -0
  79. package/src/lib/entities/role.entity.js +42 -0
  80. package/src/lib/entities/role.entity.js.map +1 -0
  81. package/src/lib/entities/session.entity.d.ts +16 -0
  82. package/src/lib/entities/session.entity.js +63 -0
  83. package/src/lib/entities/session.entity.js.map +1 -0
  84. package/src/lib/entities/tenant.entity.d.ts +10 -0
  85. package/src/lib/entities/tenant.entity.js +41 -0
  86. package/src/lib/entities/tenant.entity.js.map +1 -0
  87. package/src/lib/entities/user-role.entity.d.ts +13 -0
  88. package/src/lib/entities/user-role.entity.js +47 -0
  89. package/src/lib/entities/user-role.entity.js.map +1 -0
  90. package/src/lib/entities/user.entity.d.ts +38 -0
  91. package/src/lib/entities/user.entity.js +155 -0
  92. package/src/lib/entities/user.entity.js.map +1 -0
  93. package/src/lib/guards/auth.guard.d.ts +18 -0
  94. package/src/lib/guards/auth.guard.js +106 -0
  95. package/src/lib/guards/auth.guard.js.map +1 -0
  96. package/src/lib/interceptors/token.interceptor.d.ts +10 -0
  97. package/src/lib/interceptors/token.interceptor.js +41 -0
  98. package/src/lib/interceptors/token.interceptor.js.map +1 -0
  99. package/src/lib/interfaces/auth-module-options.interface.d.ts +51 -0
  100. package/src/lib/interfaces/auth-module-options.interface.js +3 -0
  101. package/src/lib/interfaces/auth-module-options.interface.js.map +1 -0
  102. package/src/lib/interfaces/mfa-options.interface.d.ts +25 -0
  103. package/src/lib/interfaces/mfa-options.interface.js +10 -0
  104. package/src/lib/interfaces/mfa-options.interface.js.map +1 -0
  105. package/src/lib/interfaces/session-options.interface.d.ts +12 -0
  106. package/src/lib/interfaces/session-options.interface.js +9 -0
  107. package/src/lib/interfaces/session-options.interface.js.map +1 -0
  108. package/src/lib/interfaces/token-payload.interface.d.ts +39 -0
  109. package/src/lib/interfaces/token-payload.interface.js +3 -0
  110. package/src/lib/interfaces/token-payload.interface.js.map +1 -0
  111. package/src/lib/migrations/1746242659133-migration.d.ts +6 -0
  112. package/src/lib/migrations/1746242659133-migration.js +66 -0
  113. package/src/lib/migrations/1746242659133-migration.js.map +1 -0
  114. package/src/lib/migrations/1746244352713-migration.d.ts +6 -0
  115. package/src/lib/migrations/1746244352713-migration.js +16 -0
  116. package/src/lib/migrations/1746244352713-migration.js.map +1 -0
  117. package/src/lib/nest-auth.module.d.ts +13 -0
  118. package/src/lib/nest-auth.module.js +247 -0
  119. package/src/lib/nest-auth.module.js.map +1 -0
  120. package/src/lib/providers/apple-auth.provider.d.ts +23 -0
  121. package/src/lib/providers/apple-auth.provider.js +61 -0
  122. package/src/lib/providers/apple-auth.provider.js.map +1 -0
  123. package/src/lib/providers/base-auth.provider.d.ts +24 -0
  124. package/src/lib/providers/base-auth.provider.js +54 -0
  125. package/src/lib/providers/base-auth.provider.js.map +1 -0
  126. package/src/lib/providers/email-auth.provider.d.ts +21 -0
  127. package/src/lib/providers/email-auth.provider.js +45 -0
  128. package/src/lib/providers/email-auth.provider.js.map +1 -0
  129. package/src/lib/providers/facebook-auth.provider.d.ts +23 -0
  130. package/src/lib/providers/facebook-auth.provider.js +61 -0
  131. package/src/lib/providers/facebook-auth.provider.js.map +1 -0
  132. package/src/lib/providers/google-auth.provider.d.ts +26 -0
  133. package/src/lib/providers/google-auth.provider.js +63 -0
  134. package/src/lib/providers/google-auth.provider.js.map +1 -0
  135. package/src/lib/providers/index.d.ts +7 -0
  136. package/src/lib/providers/index.js +16 -0
  137. package/src/lib/providers/index.js.map +1 -0
  138. package/src/lib/providers/jwt-auth.provider.d.ts +38 -0
  139. package/src/lib/providers/jwt-auth.provider.js +54 -0
  140. package/src/lib/providers/jwt-auth.provider.js.map +1 -0
  141. package/src/lib/providers/phone-auth.provider.d.ts +22 -0
  142. package/src/lib/providers/phone-auth.provider.js +48 -0
  143. package/src/lib/providers/phone-auth.provider.js.map +1 -0
  144. package/src/lib/request-context/request-context.d.ts +22 -0
  145. package/src/lib/request-context/request-context.js +108 -0
  146. package/src/lib/request-context/request-context.js.map +1 -0
  147. package/src/lib/request-context/request-context.middleware.d.ts +4 -0
  148. package/src/lib/request-context/request-context.middleware.js +16 -0
  149. package/src/lib/request-context/request-context.middleware.js.map +1 -0
  150. package/src/lib/services/auth-migration-service.d.ts +22 -0
  151. package/src/lib/services/auth-migration-service.js +125 -0
  152. package/src/lib/services/auth-migration-service.js.map +1 -0
  153. package/src/lib/services/auth-provider-registry.service.d.ts +25 -0
  154. package/src/lib/services/auth-provider-registry.service.js +72 -0
  155. package/src/lib/services/auth-provider-registry.service.js.map +1 -0
  156. package/src/lib/services/auth.service.d.ts +45 -0
  157. package/src/lib/services/auth.service.js +344 -0
  158. package/src/lib/services/auth.service.js.map +1 -0
  159. package/src/lib/services/cookie.service.d.ts +10 -0
  160. package/src/lib/services/cookie.service.js +43 -0
  161. package/src/lib/services/cookie.service.js.map +1 -0
  162. package/src/lib/services/jwt.service.d.ts +15 -0
  163. package/src/lib/services/jwt.service.js +93 -0
  164. package/src/lib/services/jwt.service.js.map +1 -0
  165. package/src/lib/services/mfa.service.d.ts +40 -0
  166. package/src/lib/services/mfa.service.js +254 -0
  167. package/src/lib/services/mfa.service.js.map +1 -0
  168. package/src/lib/services/session/base-session.service.d.ts +23 -0
  169. package/src/lib/services/session/base-session.service.js +64 -0
  170. package/src/lib/services/session/base-session.service.js.map +1 -0
  171. package/src/lib/services/session/database-session.service.d.ts +19 -0
  172. package/src/lib/services/session/database-session.service.js +55 -0
  173. package/src/lib/services/session/database-session.service.js.map +1 -0
  174. package/src/lib/services/session/redis-session.service.d.ts +22 -0
  175. package/src/lib/services/session/redis-session.service.js +120 -0
  176. package/src/lib/services/session/redis-session.service.js.map +1 -0
  177. package/src/lib/utils/database.utils.d.ts +2 -0
  178. package/src/lib/utils/database.utils.js +8 -0
  179. package/src/lib/utils/database.utils.js.map +1 -0
  180. package/src/lib/utils/otp.d.ts +1 -0
  181. package/src/lib/utils/otp.js +7 -0
  182. package/src/lib/utils/otp.js.map +1 -0
  183. package/src/typeorm.config.d.ts +2 -0
  184. package/src/typeorm.config.js +18 -0
  185. package/src/typeorm.config.js.map +1 -0
  186. package/tsconfig.tsbuildinfo +1 -0
package/README.md ADDED
@@ -0,0 +1,226 @@
1
+ # Nest Auth
2
+
3
+ A comprehensive authentication module for NestJS applications.
4
+
5
+ ## Table of Contents
6
+
7
+ - [Installation](#installation)
8
+ - [Quick Start](#quick-start)
9
+ - [Configuration](#configuration)
10
+ - [Database Setup](#database-setup)
11
+ - [Testing](#testing)
12
+ - [Authentication Providers](#authentication-providers)
13
+ - [API Documentation](#api-documentation)
14
+ - [Contributing](#contributing)
15
+ - [License](#license)
16
+
17
+ ## Installation
18
+
19
+ ```bash
20
+ yarn add @ackplus/nest-auth
21
+ ```
22
+
23
+ ## Quick Start
24
+
25
+ ```typescript
26
+ import { NestAuthModule } from '@ackplus/nest-auth';
27
+
28
+ @Module({
29
+ imports: [
30
+ NestAuthModule.forRoot({
31
+ jwt: {
32
+ secret: 'your-secret-key',
33
+ },
34
+ emailAuth: {
35
+ enabled: true,
36
+ },
37
+ // ... other options
38
+ }),
39
+ ],
40
+ })
41
+ export class AppModule {}
42
+ ```
43
+
44
+ ## Configuration
45
+
46
+ ### Database Configuration
47
+
48
+ The module supports both PostgreSQL and SQLite databases. Configure your database connection using the `DATABASE_URL` environment variable:
49
+
50
+ ```bash
51
+ # For PostgreSQL
52
+ DATABASE_URL=postgresql://user:password@localhost:5432/dbname
53
+
54
+ # For SQLite
55
+ DATABASE_URL=:memory: # For in-memory database
56
+ DATABASE_URL=./database.sqlite # For file-based database
57
+ ```
58
+
59
+ ### Environment Variables
60
+
61
+ | Variable | Description | Default |
62
+ |----------|-------------|---------|
63
+ | `DATABASE_URL` | Database connection URL | `:memory:` |
64
+ | `NODE_ENV` | Application environment | `development` |
65
+
66
+ ### Module Options
67
+
68
+ ```typescript
69
+ interface AuthModuleOptions {
70
+ jwt: {
71
+ secret: string;
72
+ expiresIn?: string;
73
+ };
74
+ emailAuth?: {
75
+ enabled: boolean;
76
+ // ... other email auth options
77
+ };
78
+ phoneAuth?: {
79
+ enabled: boolean;
80
+ // ... other phone auth options
81
+ };
82
+ // ... other options
83
+ }
84
+ ```
85
+
86
+ ## Database Setup
87
+
88
+ ### PostgreSQL
89
+
90
+ 1. Create a new database:
91
+ ```sql
92
+ CREATE DATABASE your_database;
93
+ ```
94
+
95
+ 2. Run migrations:
96
+ ```bash
97
+ yarn typeorm migration:run -d src/typeorm.config.ts
98
+ ```
99
+
100
+ ### SQLite
101
+
102
+ No setup required. The database will be created automatically.
103
+
104
+ ## Testing
105
+
106
+ ### Local Development
107
+
108
+ 1. For PostgreSQL:
109
+ ```bash
110
+ DATABASE_URL=postgresql://user:password@localhost:5432/testdb yarn test
111
+ ```
112
+
113
+ 2. For SQLite:
114
+ ```bash
115
+ DATABASE_URL=:memory: yarn test
116
+ ```
117
+
118
+ ### CI/CD (GitHub Actions)
119
+
120
+ The tests run automatically in GitHub Actions using SQLite for faster execution. No additional setup required.
121
+
122
+ ## Authentication Providers
123
+
124
+ ### Email Authentication
125
+
126
+ ```typescript
127
+ @Post('login')
128
+ async login(@Body() loginDto: LoginRequestDto) {
129
+ return this.authService.login({
130
+ providerId: 'email',
131
+ credentials: {
132
+ email: loginDto.email,
133
+ password: loginDto.password,
134
+ },
135
+ });
136
+ }
137
+ ```
138
+
139
+ ### Phone Authentication
140
+
141
+ ```typescript
142
+ @Post('login')
143
+ async login(@Body() loginDto: LoginRequestDto) {
144
+ return this.authService.login({
145
+ providerId: 'phone',
146
+ credentials: {
147
+ phone: loginDto.phone,
148
+ password: loginDto.password,
149
+ },
150
+ });
151
+ }
152
+ ```
153
+
154
+ ## API Documentation
155
+
156
+ ### Authentication Endpoints
157
+
158
+ | Endpoint | Method | Description |
159
+ |----------|--------|-------------|
160
+ | `/auth/login` | POST | Login with credentials |
161
+ | `/auth/register` | POST | Register new user |
162
+ | `/auth/refresh` | POST | Refresh access token |
163
+ | `/auth/logout` | POST | Logout user |
164
+
165
+ ### Request/Response Examples
166
+
167
+ #### Login Request
168
+ ```json
169
+ {
170
+ "providerId": "email",
171
+ "credentials": {
172
+ "email": "user@example.com",
173
+ "password": "password123"
174
+ }
175
+ }
176
+ ```
177
+
178
+ #### Login Response
179
+ ```json
180
+ {
181
+ "accessToken": "eyJhbGciOiJIUzI1NiIs...",
182
+ "refreshToken": "eyJhbGciOiJIUzI1NiIs...",
183
+ "isRequiresMfa": false
184
+ }
185
+ ```
186
+
187
+ ## Contributing
188
+
189
+ 1. Fork the repository
190
+ 2. Create your feature branch (`git checkout -b feature/amazing-feature`)
191
+ 3. Commit your changes (`git commit -m 'Add some amazing feature'`)
192
+ 4. Push to the branch (`git push origin feature/amazing-feature`)
193
+ 5. Open a Pull Request
194
+
195
+ ### Development Setup
196
+
197
+ 1. Clone the repository
198
+ 2. Install dependencies:
199
+ ```bash
200
+ yarn install
201
+ ```
202
+
203
+ 3. Set up the database:
204
+ ```bash
205
+ # For PostgreSQL
206
+ DATABASE_URL=postgresql://user:password@localhost:5432/testdb
207
+
208
+ # For SQLite
209
+ DATABASE_URL=:memory:
210
+ ```
211
+
212
+ 4. Run tests:
213
+ ```bash
214
+ yarn test
215
+ ```
216
+
217
+ ### Testing Guidelines
218
+
219
+ - Write tests for all new features
220
+ - Ensure tests pass in both PostgreSQL and SQLite
221
+ - Follow the existing test patterns
222
+ - Use appropriate test fixtures
223
+
224
+ ## License
225
+
226
+ This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
package/package.json ADDED
@@ -0,0 +1,51 @@
1
+ {
2
+ "name": "@ackplus/nest-auth",
3
+ "version": "0.0.23",
4
+ "type": "commonjs",
5
+ "main": "./src/index.js",
6
+ "types": "./src/index.d.ts",
7
+ "license": "MIT",
8
+ "repository": {
9
+ "type": "git",
10
+ "url": "https://github.com/ack-solutions/packages.git"
11
+ },
12
+ "publishConfig": {
13
+ "access": "public"
14
+ },
15
+ "homepage": "https://github.com/ack-solutions/packages.git#readme",
16
+ "dependencies": {
17
+ "tslib": "^2.3.0",
18
+ "@nestjs/common": "^10.4.5",
19
+ "@nestjs/typeorm": "^10.0.2",
20
+ "@nestjs/swagger": "^7.4.2",
21
+ "typeorm": "^0.3.20",
22
+ "deepmerge": "4.3.1",
23
+ "class-transformer": "^0.5.1",
24
+ "class-validator": "^0.14.1",
25
+ "pluralize": "8.0.0",
26
+ "lodash": "^4.17.21",
27
+ "rxjs": "^7.8.0",
28
+ "bcrypt": "^5.1.0",
29
+ "passport": "^0.6.0",
30
+ "passport-jwt": "^4.0.1",
31
+ "uuid": "^9.0.0",
32
+ "google-auth-library": "^9.0.0",
33
+ "fb": "^2.0.0",
34
+ "apple-auth": "^1.0.0",
35
+ "speakeasy": "^2.0.0",
36
+ "qrcode": "^1.5.3"
37
+ },
38
+ "devDependencies": {
39
+ "@nestjs/testing": "^10.0.0",
40
+ "@types/bcrypt": "^5.0.0",
41
+ "@types/jest": "^29.0.0",
42
+ "@types/node": "^20.0.0",
43
+ "@types/passport-jwt": "^3.0.8",
44
+ "@types/uuid": "^9.0.0",
45
+ "@types/speakeasy": "^2.0.0",
46
+ "@types/qrcode": "^1.5.5",
47
+ "jest": "^29.0.0",
48
+ "ts-jest": "^29.0.0",
49
+ "typescript": "^5.0.0"
50
+ }
51
+ }
package/src/index.d.ts ADDED
@@ -0,0 +1,11 @@
1
+ export * from './lib/nest-auth.module';
2
+ export * from './lib/auth.constants';
3
+ export * from './lib/services/mfa.service';
4
+ export * from './lib/services/auth.service';
5
+ export * from './lib/guards/auth.guard';
6
+ export * from './lib/decorators/skip-mfa.decorator';
7
+ export * from './lib/interfaces/auth-module-options.interface';
8
+ export * from './lib/interfaces/mfa-options.interface';
9
+ export * from './lib/dto';
10
+ export * from './lib/entities';
11
+ export * from './lib/providers';
package/src/index.js ADDED
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./lib/nest-auth.module"), exports);
5
+ tslib_1.__exportStar(require("./lib/auth.constants"), exports);
6
+ tslib_1.__exportStar(require("./lib/services/mfa.service"), exports);
7
+ tslib_1.__exportStar(require("./lib/services/auth.service"), exports);
8
+ tslib_1.__exportStar(require("./lib/guards/auth.guard"), exports);
9
+ tslib_1.__exportStar(require("./lib/decorators/skip-mfa.decorator"), exports);
10
+ tslib_1.__exportStar(require("./lib/interfaces/auth-module-options.interface"), exports);
11
+ tslib_1.__exportStar(require("./lib/interfaces/mfa-options.interface"), exports);
12
+ tslib_1.__exportStar(require("./lib/dto"), exports);
13
+ tslib_1.__exportStar(require("./lib/entities"), exports);
14
+ tslib_1.__exportStar(require("./lib/providers"), exports);
15
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../packages/nest-auth/src/index.ts"],"names":[],"mappings":";;;AAAA,iEAAuC;AAEvC,+DAAqC;AAGrC,qEAA2C;AAC3C,sEAA4C;AAG5C,kEAAwC;AAGxC,8EAAoD;AAGpD,yFAA+D;AAC/D,iFAAuD;AAGvD,oDAA0B;AAG1B,yDAA+B;AAG/B,0DAAgC"}
@@ -0,0 +1,17 @@
1
+ export declare const AUTH_MODULE_OPTIONS = "NEST_AUTH_AUTH_MODULE_OPTIONS";
2
+ export declare const JWT_AUTH_PROVIDER = "jwt";
3
+ export declare const GOOGLE_AUTH_PROVIDER = "google";
4
+ export declare const FACEBOOK_AUTH_PROVIDER = "facebook";
5
+ export declare const APPLE_AUTH_PROVIDER = "apple";
6
+ export declare const EMAIL_AUTH_PROVIDER = "email";
7
+ export declare const PHONE_AUTH_PROVIDER = "phone";
8
+ export declare const ENABLED_AUTH_PROVIDERS = "NEST_AUTH_ENABLED_AUTH_PROVIDERS";
9
+ export declare const USER_NOT_FOUND_EXCEPTION_CODE = "USER_NOT_FOUND";
10
+ export declare const UNAUTHORIZED_EXCEPTION_CODE = "UNAUTHORIZED";
11
+ export declare const INVALID_MFA_EXCEPTION_CODE = "INVALID_MFA";
12
+ export declare const INVALID_REFRESH_TOKEN_EXCEPTION_CODE = "INVALID_REFRESH_TOKEN";
13
+ export declare const SESSION_NOT_FOUND_ERROR = "SESSION_NOT_FOUND";
14
+ export declare const REFRESH_TOKEN_INVALID = "REFRESH_TOKEN_INVALID";
15
+ export declare const REFRESH_TOKEN_EXPIRED = "REFRESH_TOKEN_EXPIRED";
16
+ export declare const ACCESS_TOKEN_COOKIE_NAME = "accessToken";
17
+ export declare const REFRESH_TOKEN_COOKIE_NAME = "refreshToken";
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.REFRESH_TOKEN_COOKIE_NAME = exports.ACCESS_TOKEN_COOKIE_NAME = exports.REFRESH_TOKEN_EXPIRED = exports.REFRESH_TOKEN_INVALID = exports.SESSION_NOT_FOUND_ERROR = exports.INVALID_REFRESH_TOKEN_EXCEPTION_CODE = exports.INVALID_MFA_EXCEPTION_CODE = exports.UNAUTHORIZED_EXCEPTION_CODE = exports.USER_NOT_FOUND_EXCEPTION_CODE = exports.ENABLED_AUTH_PROVIDERS = exports.PHONE_AUTH_PROVIDER = exports.EMAIL_AUTH_PROVIDER = exports.APPLE_AUTH_PROVIDER = exports.FACEBOOK_AUTH_PROVIDER = exports.GOOGLE_AUTH_PROVIDER = exports.JWT_AUTH_PROVIDER = exports.AUTH_MODULE_OPTIONS = void 0;
4
+ exports.AUTH_MODULE_OPTIONS = 'NEST_AUTH_AUTH_MODULE_OPTIONS';
5
+ exports.JWT_AUTH_PROVIDER = 'jwt';
6
+ exports.GOOGLE_AUTH_PROVIDER = 'google';
7
+ exports.FACEBOOK_AUTH_PROVIDER = 'facebook';
8
+ exports.APPLE_AUTH_PROVIDER = 'apple';
9
+ exports.EMAIL_AUTH_PROVIDER = 'email';
10
+ exports.PHONE_AUTH_PROVIDER = 'phone';
11
+ exports.ENABLED_AUTH_PROVIDERS = 'NEST_AUTH_ENABLED_AUTH_PROVIDERS';
12
+ exports.USER_NOT_FOUND_EXCEPTION_CODE = 'USER_NOT_FOUND';
13
+ exports.UNAUTHORIZED_EXCEPTION_CODE = 'UNAUTHORIZED';
14
+ exports.INVALID_MFA_EXCEPTION_CODE = 'INVALID_MFA';
15
+ exports.INVALID_REFRESH_TOKEN_EXCEPTION_CODE = 'INVALID_REFRESH_TOKEN';
16
+ exports.SESSION_NOT_FOUND_ERROR = 'SESSION_NOT_FOUND';
17
+ exports.REFRESH_TOKEN_INVALID = 'REFRESH_TOKEN_INVALID';
18
+ exports.REFRESH_TOKEN_EXPIRED = 'REFRESH_TOKEN_EXPIRED';
19
+ exports.ACCESS_TOKEN_COOKIE_NAME = 'accessToken';
20
+ exports.REFRESH_TOKEN_COOKIE_NAME = 'refreshToken';
21
+ //# sourceMappingURL=auth.constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.constants.js","sourceRoot":"","sources":["../../../../../packages/nest-auth/src/lib/auth.constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,mBAAmB,GAAG,+BAA+B,CAAC;AAGtD,QAAA,iBAAiB,GAAG,KAAK,CAAC;AAC1B,QAAA,oBAAoB,GAAG,QAAQ,CAAC;AAChC,QAAA,sBAAsB,GAAG,UAAU,CAAC;AACpC,QAAA,mBAAmB,GAAG,OAAO,CAAC;AAC9B,QAAA,mBAAmB,GAAG,OAAO,CAAC;AAC9B,QAAA,mBAAmB,GAAG,OAAO,CAAC;AAG9B,QAAA,sBAAsB,GAAG,kCAAkC,CAAC;AAI5D,QAAA,6BAA6B,GAAG,gBAAgB,CAAC;AACjD,QAAA,2BAA2B,GAAG,cAAc,CAAC;AAC7C,QAAA,0BAA0B,GAAG,aAAa,CAAC;AAC3C,QAAA,oCAAoC,GAAG,uBAAuB,CAAC;AAC/D,QAAA,uBAAuB,GAAG,mBAAmB,CAAC;AAE9C,QAAA,qBAAqB,GAAG,uBAAuB,CAAC;AAChD,QAAA,qBAAqB,GAAG,uBAAuB,CAAC;AAIhD,QAAA,wBAAwB,GAAG,aAAa,CAAC;AACzC,QAAA,yBAAyB,GAAG,cAAc,CAAC"}
@@ -0,0 +1,26 @@
1
+ import { AuthService } from '../services/auth.service';
2
+ import { SignupRequestDto, LoginRequestDto, ResetPasswordRequestDto, ForgotPasswordRequestDto, MessageResponseDto, DeviceInfoDto } from '../dto';
3
+ import { MFAMethodEnum } from '../interfaces/mfa-options.interface';
4
+ import { Verify2faRequestDto } from '../dto/requests/verify-2fa.request.dto';
5
+ import { RefreshTokenRequestDto } from '../dto/requests/refresh-token.request.dto';
6
+ import { Response } from 'express';
7
+ import { CookieService } from '../services/cookie.service';
8
+ export declare class AuthController {
9
+ private readonly authService;
10
+ private readonly cookieService;
11
+ constructor(authService: AuthService, cookieService: CookieService);
12
+ signup(input: SignupRequestDto, res: Response): Promise<void>;
13
+ login(input: LoginRequestDto, res: Response): Promise<void>;
14
+ refreshToken(input: RefreshTokenRequestDto, res: Response): Promise<void>;
15
+ send2faCode(method: MFAMethodEnum): Promise<{
16
+ message: string;
17
+ }>;
18
+ verify2fa(input: Verify2faRequestDto, res: Response): Promise<void>;
19
+ logout(res: Response): Promise<void>;
20
+ logoutAll(): Promise<MessageResponseDto>;
21
+ forgotPassword(input: ForgotPasswordRequestDto): Promise<MessageResponseDto>;
22
+ resetPassword(input: ResetPasswordRequestDto): Promise<MessageResponseDto>;
23
+ getUser(): Promise<import("../entities/user.entity").User>;
24
+ listDevices(): Promise<DeviceInfoDto[]>;
25
+ deleteDevice(deviceId: string): Promise<MessageResponseDto>;
26
+ }
@@ -0,0 +1,214 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AuthController = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const common_1 = require("@nestjs/common");
6
+ const auth_service_1 = require("../services/auth.service");
7
+ const auth_guard_1 = require("../guards/auth.guard");
8
+ const dto_1 = require("../dto");
9
+ const skip_mfa_decorator_1 = require("../decorators/skip-mfa.decorator");
10
+ const request_context_1 = require("../request-context/request-context");
11
+ const mfa_options_interface_1 = require("../interfaces/mfa-options.interface");
12
+ const verify_2fa_request_dto_1 = require("../dto/requests/verify-2fa.request.dto");
13
+ const refresh_token_request_dto_1 = require("../dto/requests/refresh-token.request.dto");
14
+ const swagger_1 = require("@nestjs/swagger");
15
+ const swagger_2 = require("@nestjs/swagger");
16
+ const cookie_service_1 = require("../services/cookie.service");
17
+ let AuthController = class AuthController {
18
+ constructor(authService, cookieService) {
19
+ this.authService = authService;
20
+ this.cookieService = cookieService;
21
+ }
22
+ async signup(input, res) {
23
+ const response = await this.authService.signup(input);
24
+ this.cookieService.setTokens(res, response.accessToken, response.refreshToken);
25
+ res.status(200).json(response);
26
+ }
27
+ async login(input, res) {
28
+ const response = await this.authService.login(input);
29
+ this.cookieService.setTokens(res, response.accessToken, response.refreshToken);
30
+ res.status(200).json(response);
31
+ }
32
+ async refreshToken(input, res) {
33
+ const response = await this.authService.refreshToken(input.refreshToken);
34
+ this.cookieService.setTokens(res, response.accessToken, response.refreshToken);
35
+ res.status(200).json(response);
36
+ }
37
+ async send2faCode(method) {
38
+ const user = request_context_1.RequestContext.currentUser();
39
+ await this.authService.send2faCode(user.id, method);
40
+ return { message: '2FA code sent successfully' };
41
+ }
42
+ async verify2fa(input, res) {
43
+ const response = await this.authService.verify2fa(input);
44
+ this.cookieService.setTokens(res, response.accessToken, response.refreshToken);
45
+ res.status(200).json(response);
46
+ }
47
+ async logout(res) {
48
+ await this.authService.logout();
49
+ this.cookieService.clearCookies(res);
50
+ res.status(200).json({ message: 'Logged out successfully' });
51
+ }
52
+ async logoutAll() {
53
+ const user = request_context_1.RequestContext.currentUser();
54
+ await this.authService.logoutAll(user.id);
55
+ return { message: 'Logged out from all devices successfully' };
56
+ }
57
+ async forgotPassword(input) {
58
+ await this.authService.forgotPassword(input);
59
+ return { message: 'If the account exists, a password reset code has been sent' };
60
+ }
61
+ async resetPassword(input) {
62
+ await this.authService.resetPassword(input);
63
+ return { message: 'Password reset successfully' };
64
+ }
65
+ async getUser() {
66
+ return await this.authService.getUser();
67
+ }
68
+ async listDevices() {
69
+ const user = request_context_1.RequestContext.currentUser();
70
+ return this.authService.listDevices(user.id);
71
+ }
72
+ async deleteDevice(deviceId) {
73
+ const user = request_context_1.RequestContext.currentUser();
74
+ return this.authService.deleteDevice(user.id, deviceId);
75
+ }
76
+ };
77
+ exports.AuthController = AuthController;
78
+ tslib_1.__decorate([
79
+ (0, swagger_2.ApiOperation)({ summary: 'Signup' }),
80
+ (0, swagger_1.ApiResponse)({ status: 200, type: dto_1.AuthResponseDto }),
81
+ (0, common_1.HttpCode)(200),
82
+ (0, common_1.Post)('signup'),
83
+ tslib_1.__param(0, (0, common_1.Body)()),
84
+ tslib_1.__param(1, (0, common_1.Res)()),
85
+ tslib_1.__metadata("design:type", Function),
86
+ tslib_1.__metadata("design:paramtypes", [dto_1.SignupRequestDto, Object]),
87
+ tslib_1.__metadata("design:returntype", Promise)
88
+ ], AuthController.prototype, "signup", null);
89
+ tslib_1.__decorate([
90
+ (0, swagger_2.ApiOperation)({ summary: 'Login' }),
91
+ (0, swagger_1.ApiResponse)({ status: 200, type: dto_1.AuthResponseDto }),
92
+ (0, common_1.HttpCode)(200),
93
+ (0, common_1.Post)('login'),
94
+ tslib_1.__param(0, (0, common_1.Body)()),
95
+ tslib_1.__param(1, (0, common_1.Res)()),
96
+ tslib_1.__metadata("design:type", Function),
97
+ tslib_1.__metadata("design:paramtypes", [dto_1.LoginRequestDto, Object]),
98
+ tslib_1.__metadata("design:returntype", Promise)
99
+ ], AuthController.prototype, "login", null);
100
+ tslib_1.__decorate([
101
+ (0, swagger_2.ApiOperation)({ summary: 'Refresh Token' }),
102
+ (0, swagger_1.ApiResponse)({ status: 200, type: dto_1.AuthResponseDto }),
103
+ (0, common_1.HttpCode)(200),
104
+ (0, common_1.Post)('refresh-token'),
105
+ tslib_1.__param(0, (0, common_1.Body)()),
106
+ tslib_1.__param(1, (0, common_1.Res)()),
107
+ tslib_1.__metadata("design:type", Function),
108
+ tslib_1.__metadata("design:paramtypes", [refresh_token_request_dto_1.RefreshTokenRequestDto, Object]),
109
+ tslib_1.__metadata("design:returntype", Promise)
110
+ ], AuthController.prototype, "refreshToken", null);
111
+ tslib_1.__decorate([
112
+ (0, swagger_2.ApiOperation)({ summary: 'Send 2FA Code' }),
113
+ (0, swagger_1.ApiResponse)({ status: 200, type: dto_1.MessageResponseDto }),
114
+ (0, common_1.HttpCode)(200),
115
+ (0, common_1.Post)('send-2fa-code'),
116
+ (0, skip_mfa_decorator_1.SkipMfa)(),
117
+ (0, common_1.UseGuards)(auth_guard_1.AuthGuard),
118
+ tslib_1.__param(0, (0, common_1.Body)('method')),
119
+ tslib_1.__metadata("design:type", Function),
120
+ tslib_1.__metadata("design:paramtypes", [String]),
121
+ tslib_1.__metadata("design:returntype", Promise)
122
+ ], AuthController.prototype, "send2faCode", null);
123
+ tslib_1.__decorate([
124
+ (0, swagger_2.ApiOperation)({ summary: 'Verify 2FA' }),
125
+ (0, swagger_1.ApiResponse)({ status: 200, type: dto_1.Verify2faResponseDto }),
126
+ (0, common_1.HttpCode)(200),
127
+ (0, common_1.Post)('verify-2fa'),
128
+ (0, skip_mfa_decorator_1.SkipMfa)(),
129
+ (0, common_1.UseGuards)(auth_guard_1.AuthGuard),
130
+ tslib_1.__param(0, (0, common_1.Body)()),
131
+ tslib_1.__param(1, (0, common_1.Res)()),
132
+ tslib_1.__metadata("design:type", Function),
133
+ tslib_1.__metadata("design:paramtypes", [verify_2fa_request_dto_1.Verify2faRequestDto, Object]),
134
+ tslib_1.__metadata("design:returntype", Promise)
135
+ ], AuthController.prototype, "verify2fa", null);
136
+ tslib_1.__decorate([
137
+ (0, swagger_2.ApiOperation)({ summary: 'Logout' }),
138
+ (0, swagger_1.ApiResponse)({ status: 200, type: dto_1.MessageResponseDto }),
139
+ (0, common_1.HttpCode)(200),
140
+ (0, common_1.Post)('logout'),
141
+ (0, skip_mfa_decorator_1.SkipMfa)(),
142
+ (0, common_1.UseGuards)(auth_guard_1.AuthGuard),
143
+ tslib_1.__param(0, (0, common_1.Res)()),
144
+ tslib_1.__metadata("design:type", Function),
145
+ tslib_1.__metadata("design:paramtypes", [Object]),
146
+ tslib_1.__metadata("design:returntype", Promise)
147
+ ], AuthController.prototype, "logout", null);
148
+ tslib_1.__decorate([
149
+ (0, swagger_2.ApiOperation)({ summary: 'Logout All' }),
150
+ (0, swagger_1.ApiResponse)({ status: 200, type: dto_1.MessageResponseDto }),
151
+ (0, common_1.HttpCode)(200),
152
+ (0, common_1.Post)('logout-all'),
153
+ (0, skip_mfa_decorator_1.SkipMfa)(),
154
+ (0, common_1.UseGuards)(auth_guard_1.AuthGuard),
155
+ tslib_1.__metadata("design:type", Function),
156
+ tslib_1.__metadata("design:paramtypes", []),
157
+ tslib_1.__metadata("design:returntype", Promise)
158
+ ], AuthController.prototype, "logoutAll", null);
159
+ tslib_1.__decorate([
160
+ (0, swagger_2.ApiOperation)({ summary: 'Forgot Password' }),
161
+ (0, swagger_1.ApiResponse)({ status: 200, type: dto_1.MessageResponseDto }),
162
+ (0, common_1.HttpCode)(200),
163
+ (0, common_1.Post)('forgot-password'),
164
+ (0, skip_mfa_decorator_1.SkipMfa)(),
165
+ tslib_1.__param(0, (0, common_1.Body)()),
166
+ tslib_1.__metadata("design:type", Function),
167
+ tslib_1.__metadata("design:paramtypes", [dto_1.ForgotPasswordRequestDto]),
168
+ tslib_1.__metadata("design:returntype", Promise)
169
+ ], AuthController.prototype, "forgotPassword", null);
170
+ tslib_1.__decorate([
171
+ (0, swagger_2.ApiOperation)({ summary: 'Reset Password' }),
172
+ (0, swagger_1.ApiResponse)({ status: 200, type: dto_1.MessageResponseDto }),
173
+ (0, common_1.HttpCode)(200),
174
+ (0, common_1.Post)('reset-password'),
175
+ (0, skip_mfa_decorator_1.SkipMfa)(),
176
+ tslib_1.__param(0, (0, common_1.Body)()),
177
+ tslib_1.__metadata("design:type", Function),
178
+ tslib_1.__metadata("design:paramtypes", [dto_1.ResetPasswordRequestDto]),
179
+ tslib_1.__metadata("design:returntype", Promise)
180
+ ], AuthController.prototype, "resetPassword", null);
181
+ tslib_1.__decorate([
182
+ (0, swagger_2.ApiOperation)({ summary: 'Get Logged In User' }),
183
+ (0, swagger_1.ApiResponse)({ status: 200, type: dto_1.UserResponseDto }),
184
+ (0, common_1.UseGuards)(auth_guard_1.AuthGuard),
185
+ (0, common_1.Get)('user'),
186
+ tslib_1.__metadata("design:type", Function),
187
+ tslib_1.__metadata("design:paramtypes", []),
188
+ tslib_1.__metadata("design:returntype", Promise)
189
+ ], AuthController.prototype, "getUser", null);
190
+ tslib_1.__decorate([
191
+ (0, swagger_2.ApiOperation)({ summary: 'List Devices' }),
192
+ (0, swagger_1.ApiResponse)({ status: 200, type: dto_1.DeviceInfoDto }),
193
+ (0, common_1.UseGuards)(auth_guard_1.AuthGuard),
194
+ (0, common_1.Get)('devices'),
195
+ tslib_1.__metadata("design:type", Function),
196
+ tslib_1.__metadata("design:paramtypes", []),
197
+ tslib_1.__metadata("design:returntype", Promise)
198
+ ], AuthController.prototype, "listDevices", null);
199
+ tslib_1.__decorate([
200
+ (0, swagger_2.ApiOperation)({ summary: 'Delete Device' }),
201
+ (0, swagger_1.ApiResponse)({ status: 200, type: dto_1.MessageResponseDto }),
202
+ (0, common_1.UseGuards)(auth_guard_1.AuthGuard),
203
+ (0, common_1.Delete)('devices/:deviceId'),
204
+ tslib_1.__param(0, (0, common_1.Param)('deviceId')),
205
+ tslib_1.__metadata("design:type", Function),
206
+ tslib_1.__metadata("design:paramtypes", [String]),
207
+ tslib_1.__metadata("design:returntype", Promise)
208
+ ], AuthController.prototype, "deleteDevice", null);
209
+ exports.AuthController = AuthController = tslib_1.__decorate([
210
+ (0, common_1.Controller)('auth'),
211
+ tslib_1.__metadata("design:paramtypes", [auth_service_1.AuthService,
212
+ cookie_service_1.CookieService])
213
+ ], AuthController);
214
+ //# sourceMappingURL=auth.controller.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.controller.js","sourceRoot":"","sources":["../../../../../../packages/nest-auth/src/lib/controllers/auth.controller.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ import { MfaService } from '../services/mfa.service';
2
+ import { SendMfaCodeRequestDto } from '../dto/requests/send-mfa-code.request.dto';
3
+ import { VerifyTotpSetupRequestDto } from '../dto/requests/verify-totp-setup.request.dto';
4
+ export declare class MfaController {
5
+ private readonly mfaService;
6
+ constructor(mfaService: MfaService);
7
+ sendMfaCode(input: SendMfaCodeRequestDto): Promise<{
8
+ message: string;
9
+ }>;
10
+ setupTotp(): Promise<{
11
+ secret: string;
12
+ qrCode: string;
13
+ }>;
14
+ verifyTotpSetup(input: VerifyTotpSetupRequestDto): Promise<{
15
+ message: string;
16
+ }>;
17
+ generateRecoveryCodes(): Promise<{
18
+ code: string;
19
+ }>;
20
+ resetTotp(code: string): Promise<{
21
+ message: string;
22
+ }>;
23
+ }