@ackplus/nest-auth 2.0.0-beta.9 → 2.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/README.md +83 -130
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/lib/admin-console/admin-console.module.js +1 -1
- package/dist/lib/admin-console/admin-console.module.js.map +1 -1
- package/dist/lib/admin-console/controllers/admin-auth.controller.d.ts +3 -3
- package/dist/lib/admin-console/controllers/admin-auth.controller.d.ts.map +1 -1
- package/dist/lib/admin-console/controllers/admin-auth.controller.js +30 -12
- package/dist/lib/admin-console/controllers/admin-auth.controller.js.map +1 -1
- package/dist/lib/admin-console/controllers/admin-console.controller.d.ts +1 -1
- package/dist/lib/admin-console/controllers/admin-console.controller.d.ts.map +1 -1
- package/dist/lib/admin-console/controllers/admin-console.controller.js +19 -9
- package/dist/lib/admin-console/controllers/admin-console.controller.js.map +1 -1
- package/dist/lib/admin-console/controllers/admin-permissions.controller.d.ts.map +1 -1
- package/dist/lib/admin-console/controllers/admin-permissions.controller.js +19 -1
- package/dist/lib/admin-console/controllers/admin-permissions.controller.js.map +1 -1
- package/dist/lib/admin-console/controllers/admin-roles.controller.d.ts.map +1 -1
- package/dist/lib/admin-console/controllers/admin-roles.controller.js +15 -1
- package/dist/lib/admin-console/controllers/admin-roles.controller.js.map +1 -1
- package/dist/lib/admin-console/controllers/admin-tenants.controller.d.ts.map +1 -1
- package/dist/lib/admin-console/controllers/admin-tenants.controller.js +15 -1
- package/dist/lib/admin-console/controllers/admin-tenants.controller.js.map +1 -1
- package/dist/lib/admin-console/controllers/admin-users.controller.d.ts +13 -17
- package/dist/lib/admin-console/controllers/admin-users.controller.d.ts.map +1 -1
- package/dist/lib/admin-console/controllers/admin-users.controller.js +35 -13
- package/dist/lib/admin-console/controllers/admin-users.controller.js.map +1 -1
- package/dist/lib/admin-console/dto/admin-user.dto.d.ts +4 -2
- package/dist/lib/admin-console/dto/admin-user.dto.d.ts.map +1 -1
- package/dist/lib/admin-console/dto/admin-user.dto.js +16 -8
- package/dist/lib/admin-console/dto/admin-user.dto.js.map +1 -1
- package/dist/lib/admin-console/services/admin-console-config.service.d.ts.map +1 -1
- package/dist/lib/admin-console/services/admin-console-config.service.js +10 -4
- package/dist/lib/admin-console/services/admin-console-config.service.js.map +1 -1
- package/dist/lib/admin-console/services/admin-user-management.service.d.ts +1 -1
- package/dist/lib/admin-console/services/admin-user-management.service.d.ts.map +1 -1
- package/dist/lib/admin-console/services/admin-user-management.service.js +1 -1
- package/dist/lib/admin-console/services/admin-user-management.service.js.map +1 -1
- package/dist/lib/admin-console/static/index.html +632 -567
- package/dist/lib/admin-console/static/nest-auth.json +3502 -157
- package/dist/lib/audit/services/audit.service.d.ts +2 -0
- package/dist/lib/audit/services/audit.service.d.ts.map +1 -1
- package/dist/lib/audit/services/audit.service.js +23 -0
- package/dist/lib/audit/services/audit.service.js.map +1 -1
- package/dist/lib/auth/auth.module.d.ts.map +1 -1
- package/dist/lib/auth/auth.module.js +6 -0
- package/dist/lib/auth/auth.module.js.map +1 -1
- package/dist/lib/auth/controllers/auth.controller.d.ts +3 -2
- package/dist/lib/auth/controllers/auth.controller.d.ts.map +1 -1
- package/dist/lib/auth/controllers/auth.controller.js +48 -24
- package/dist/lib/auth/controllers/auth.controller.js.map +1 -1
- package/dist/lib/auth/controllers/mfa.controller.d.ts.map +1 -1
- package/dist/lib/auth/controllers/mfa.controller.js +6 -1
- package/dist/lib/auth/controllers/mfa.controller.js.map +1 -1
- package/dist/lib/auth/dto/credentials/social-credentials.dto.d.ts +2 -0
- package/dist/lib/auth/dto/credentials/social-credentials.dto.d.ts.map +1 -1
- package/dist/lib/auth/dto/credentials/social-credentials.dto.js +28 -0
- package/dist/lib/auth/dto/credentials/social-credentials.dto.js.map +1 -1
- package/dist/lib/auth/dto/requests/verify-2fa.request.dto.d.ts.map +1 -1
- package/dist/lib/auth/dto/requests/verify-2fa.request.dto.js +2 -0
- package/dist/lib/auth/dto/requests/verify-2fa.request.dto.js.map +1 -1
- package/dist/lib/auth/dto/responses/auth.response.dto.d.ts +3 -5
- package/dist/lib/auth/dto/responses/auth.response.dto.d.ts.map +1 -1
- package/dist/lib/auth/dto/responses/auth.response.dto.js +11 -27
- package/dist/lib/auth/dto/responses/auth.response.dto.js.map +1 -1
- package/dist/lib/auth/entities/otp.entity.d.ts +1 -1
- package/dist/lib/auth/entities/otp.entity.d.ts.map +1 -1
- package/dist/lib/auth/entities/otp.entity.js.map +1 -1
- package/dist/lib/auth/entities/trusted-device.entity.d.ts.map +1 -1
- package/dist/lib/auth/entities/trusted-device.entity.js +1 -1
- package/dist/lib/auth/entities/trusted-device.entity.js.map +1 -1
- package/dist/lib/auth/events/login-failed.event.d.ts +15 -0
- package/dist/lib/auth/events/login-failed.event.d.ts.map +1 -0
- package/dist/lib/auth/events/login-failed.event.js +11 -0
- package/dist/lib/auth/events/login-failed.event.js.map +1 -0
- package/dist/lib/auth/events/user-logged-in.event.d.ts +3 -1
- package/dist/lib/auth/events/user-logged-in.event.d.ts.map +1 -1
- package/dist/lib/auth/events/user-logged-in.event.js.map +1 -1
- package/dist/lib/auth/events/user-registered.event.d.ts +2 -1
- package/dist/lib/auth/events/user-registered.event.d.ts.map +1 -1
- package/dist/lib/auth/events/user-registered.event.js.map +1 -1
- package/dist/lib/auth/guards/auth.guard.d.ts.map +1 -1
- package/dist/lib/auth/guards/auth.guard.js +1 -1
- package/dist/lib/auth/guards/auth.guard.js.map +1 -1
- package/dist/lib/auth/interceptors/token-response.interceptor.d.ts.map +1 -1
- package/dist/lib/auth/interceptors/token-response.interceptor.js +4 -3
- package/dist/lib/auth/interceptors/token-response.interceptor.js.map +1 -1
- package/dist/lib/auth/services/auth.service.d.ts +17 -6
- package/dist/lib/auth/services/auth.service.d.ts.map +1 -1
- package/dist/lib/auth/services/auth.service.js +271 -287
- package/dist/lib/auth/services/auth.service.js.map +1 -1
- package/dist/lib/auth/services/logout.service.d.ts +14 -0
- package/dist/lib/auth/services/logout.service.d.ts.map +1 -0
- package/dist/lib/auth/services/logout.service.js +74 -0
- package/dist/lib/auth/services/logout.service.js.map +1 -0
- package/dist/lib/auth/services/mfa.service.d.ts +2 -0
- package/dist/lib/auth/services/mfa.service.d.ts.map +1 -1
- package/dist/lib/auth/services/mfa.service.js +29 -6
- package/dist/lib/auth/services/mfa.service.js.map +1 -1
- package/dist/lib/auth/services/otp-flow.service.d.ts.map +1 -1
- package/dist/lib/auth/services/otp-flow.service.js +1 -2
- package/dist/lib/auth/services/otp-flow.service.js.map +1 -1
- package/dist/lib/auth/services/password.service.d.ts +2 -1
- package/dist/lib/auth/services/password.service.d.ts.map +1 -1
- package/dist/lib/auth/services/password.service.js +19 -6
- package/dist/lib/auth/services/password.service.js.map +1 -1
- package/dist/lib/auth/services/session-token.service.d.ts +37 -0
- package/dist/lib/auth/services/session-token.service.d.ts.map +1 -0
- package/dist/lib/auth/services/session-token.service.js +151 -0
- package/dist/lib/auth/services/session-token.service.js.map +1 -0
- package/dist/lib/auth/services/verification.service.d.ts.map +1 -1
- package/dist/lib/auth/services/verification.service.js +0 -5
- package/dist/lib/auth/services/verification.service.js.map +1 -1
- package/dist/lib/auth.constants.d.ts +15 -0
- package/dist/lib/auth.constants.d.ts.map +1 -1
- package/dist/lib/auth.constants.js +11 -0
- package/dist/lib/auth.constants.js.map +1 -1
- package/dist/lib/core/entities.d.ts +5 -3
- package/dist/lib/core/entities.d.ts.map +1 -1
- package/dist/lib/core/entities.js +5 -2
- package/dist/lib/core/entities.js.map +1 -1
- package/dist/lib/core/index.d.ts +1 -0
- package/dist/lib/core/index.d.ts.map +1 -1
- package/dist/lib/core/index.js +1 -0
- package/dist/lib/core/index.js.map +1 -1
- package/dist/lib/core/interfaces/auth-module-options.interface.d.ts +28 -5
- package/dist/lib/core/interfaces/auth-module-options.interface.d.ts.map +1 -1
- package/dist/lib/core/interfaces/session-options.interface.d.ts +5 -1
- package/dist/lib/core/interfaces/session-options.interface.d.ts.map +1 -1
- package/dist/lib/core/interfaces/session-options.interface.js +1 -0
- package/dist/lib/core/interfaces/session-options.interface.js.map +1 -1
- package/dist/lib/core/interfaces/token-payload.interface.d.ts +3 -1
- package/dist/lib/core/interfaces/token-payload.interface.d.ts.map +1 -1
- package/dist/lib/core/providers/apple-auth.provider.d.ts +13 -7
- package/dist/lib/core/providers/apple-auth.provider.d.ts.map +1 -1
- package/dist/lib/core/providers/apple-auth.provider.js +166 -7
- package/dist/lib/core/providers/apple-auth.provider.js.map +1 -1
- package/dist/lib/core/providers/base-auth.provider.d.ts +2 -0
- package/dist/lib/core/providers/base-auth.provider.d.ts.map +1 -1
- package/dist/lib/core/providers/base-auth.provider.js.map +1 -1
- package/dist/lib/core/providers/email-auth.provider.d.ts.map +1 -1
- package/dist/lib/core/providers/email-auth.provider.js +13 -2
- package/dist/lib/core/providers/email-auth.provider.js.map +1 -1
- package/dist/lib/core/providers/github-auth.provider.d.ts +3 -0
- package/dist/lib/core/providers/github-auth.provider.d.ts.map +1 -1
- package/dist/lib/core/providers/github-auth.provider.js +73 -24
- package/dist/lib/core/providers/github-auth.provider.js.map +1 -1
- package/dist/lib/core/providers/google-auth.provider.d.ts +1 -0
- package/dist/lib/core/providers/google-auth.provider.d.ts.map +1 -1
- package/dist/lib/core/providers/google-auth.provider.js +7 -1
- package/dist/lib/core/providers/google-auth.provider.js.map +1 -1
- package/dist/lib/core/providers/jwt-auth.provider.d.ts +2 -1
- package/dist/lib/core/providers/jwt-auth.provider.d.ts.map +1 -1
- package/dist/lib/core/providers/passwordless-auth.provider.d.ts +3 -1
- package/dist/lib/core/providers/passwordless-auth.provider.d.ts.map +1 -1
- package/dist/lib/core/providers/passwordless-auth.provider.js +11 -1
- package/dist/lib/core/providers/passwordless-auth.provider.js.map +1 -1
- package/dist/lib/core/providers/phone-auth.provider.d.ts.map +1 -1
- package/dist/lib/core/providers/phone-auth.provider.js +13 -2
- package/dist/lib/core/providers/phone-auth.provider.js.map +1 -1
- package/dist/lib/core/services/auth-config.service.d.ts.map +1 -1
- package/dist/lib/core/services/auth-config.service.js +6 -0
- package/dist/lib/core/services/auth-config.service.js.map +1 -1
- package/dist/lib/core/services/jwt.service.d.ts.map +1 -1
- package/dist/lib/core/services/jwt.service.js +10 -5
- package/dist/lib/core/services/jwt.service.js.map +1 -1
- package/dist/lib/core/swagger/api-responses.decorator.d.ts +15 -0
- package/dist/lib/core/swagger/api-responses.decorator.d.ts.map +1 -0
- package/dist/lib/core/swagger/api-responses.decorator.js +57 -0
- package/dist/lib/core/swagger/api-responses.decorator.js.map +1 -0
- package/dist/lib/nest-auth.module.d.ts.map +1 -1
- package/dist/lib/nest-auth.module.js +18 -2
- package/dist/lib/nest-auth.module.js.map +1 -1
- package/dist/lib/permission/events/permission-created.event.d.ts +9 -0
- package/dist/lib/permission/events/permission-created.event.d.ts.map +1 -0
- package/dist/lib/permission/events/permission-created.event.js +11 -0
- package/dist/lib/permission/events/permission-created.event.js.map +1 -0
- package/dist/lib/permission/events/permission-deleted.event.d.ts +9 -0
- package/dist/lib/permission/events/permission-deleted.event.d.ts.map +1 -0
- package/dist/lib/permission/events/permission-deleted.event.js +11 -0
- package/dist/lib/permission/events/permission-deleted.event.js.map +1 -0
- package/dist/lib/permission/events/permission-updated.event.d.ts +10 -0
- package/dist/lib/permission/events/permission-updated.event.d.ts.map +1 -0
- package/dist/lib/permission/events/permission-updated.event.js +11 -0
- package/dist/lib/permission/events/permission-updated.event.js.map +1 -0
- package/dist/lib/permission/index.d.ts +3 -0
- package/dist/lib/permission/index.d.ts.map +1 -1
- package/dist/lib/permission/index.js +3 -0
- package/dist/lib/permission/index.js.map +1 -1
- package/dist/lib/permission/services/permission.service.d.ts +3 -1
- package/dist/lib/permission/services/permission.service.d.ts.map +1 -1
- package/dist/lib/permission/services/permission.service.js +16 -4
- package/dist/lib/permission/services/permission.service.js.map +1 -1
- package/dist/lib/request-context/request-context.d.ts +1 -1
- package/dist/lib/request-context/request-context.d.ts.map +1 -1
- package/dist/lib/request-context/request-context.js +3 -3
- package/dist/lib/request-context/request-context.js.map +1 -1
- package/dist/lib/role/entities/role.entity.d.ts +3 -1
- package/dist/lib/role/entities/role.entity.d.ts.map +1 -1
- package/dist/lib/role/entities/role.entity.js +7 -1
- package/dist/lib/role/entities/role.entity.js.map +1 -1
- package/dist/lib/role/events/role-created.event.d.ts +9 -0
- package/dist/lib/role/events/role-created.event.d.ts.map +1 -0
- package/dist/lib/role/events/role-created.event.js +11 -0
- package/dist/lib/role/events/role-created.event.js.map +1 -0
- package/dist/lib/role/events/role-deleted.event.d.ts +9 -0
- package/dist/lib/role/events/role-deleted.event.d.ts.map +1 -0
- package/dist/lib/role/events/role-deleted.event.js +11 -0
- package/dist/lib/role/events/role-deleted.event.js.map +1 -0
- package/dist/lib/role/events/role-updated.event.d.ts +10 -0
- package/dist/lib/role/events/role-updated.event.d.ts.map +1 -0
- package/dist/lib/role/events/role-updated.event.js +11 -0
- package/dist/lib/role/events/role-updated.event.js.map +1 -0
- package/dist/lib/role/index.d.ts +3 -0
- package/dist/lib/role/index.d.ts.map +1 -1
- package/dist/lib/role/index.js +3 -0
- package/dist/lib/role/index.js.map +1 -1
- package/dist/lib/role/services/role.service.d.ts +3 -1
- package/dist/lib/role/services/role.service.d.ts.map +1 -1
- package/dist/lib/role/services/role.service.js +29 -41
- package/dist/lib/role/services/role.service.js.map +1 -1
- package/dist/lib/role/utils/access-role-resolver.util.d.ts +20 -0
- package/dist/lib/role/utils/access-role-resolver.util.d.ts.map +1 -0
- package/dist/lib/role/utils/access-role-resolver.util.js +63 -0
- package/dist/lib/role/utils/access-role-resolver.util.js.map +1 -0
- package/dist/lib/session/services/session-manager.service.d.ts +8 -3
- package/dist/lib/session/services/session-manager.service.d.ts.map +1 -1
- package/dist/lib/session/services/session-manager.service.js +30 -11
- package/dist/lib/session/services/session-manager.service.js.map +1 -1
- package/dist/lib/session/session.module.d.ts.map +1 -1
- package/dist/lib/session/session.module.js +5 -1
- package/dist/lib/session/session.module.js.map +1 -1
- package/dist/lib/tenant/decorators/current-tenant.decorator.d.ts.map +1 -1
- package/dist/lib/tenant/decorators/current-tenant.decorator.js.map +1 -1
- package/dist/lib/tenant/entities/tenant.entity.d.ts +1 -1
- package/dist/lib/tenant/entities/tenant.entity.d.ts.map +1 -1
- package/dist/lib/tenant/entities/tenant.entity.js +1 -1
- package/dist/lib/tenant/entities/tenant.entity.js.map +1 -1
- package/dist/lib/tenant/index.d.ts +1 -1
- package/dist/lib/tenant/index.d.ts.map +1 -1
- package/dist/lib/tenant/index.js +1 -1
- package/dist/lib/tenant/index.js.map +1 -1
- package/dist/lib/tenant/tenant-context/services/base-tenant-context.service.d.ts +1 -1
- package/dist/lib/tenant/tenant-context/services/base-tenant-context.service.d.ts.map +1 -1
- package/dist/lib/tenant/tenant-context/services/disabled-tenant-context.service.d.ts +1 -1
- package/dist/lib/tenant/tenant-context/services/disabled-tenant-context.service.d.ts.map +1 -1
- package/dist/lib/tenant/tenant-context/tenant-context.interface.d.ts +1 -1
- package/dist/lib/tenant/tenant-context/tenant-context.interface.d.ts.map +1 -1
- package/dist/lib/user/entities/platform-access.entity.d.ts +16 -0
- package/dist/lib/user/entities/platform-access.entity.d.ts.map +1 -0
- package/dist/lib/user/entities/platform-access.entity.js +95 -0
- package/dist/lib/user/entities/platform-access.entity.js.map +1 -0
- package/dist/lib/user/entities/user-access.entity.d.ts +22 -0
- package/dist/lib/user/entities/user-access.entity.d.ts.map +1 -0
- package/dist/lib/{tenant → user}/entities/user-access.entity.js +35 -4
- package/dist/lib/user/entities/user-access.entity.js.map +1 -0
- package/dist/lib/user/entities/user.entity.d.ts +10 -12
- package/dist/lib/user/entities/user.entity.d.ts.map +1 -1
- package/dist/lib/user/entities/user.entity.js +91 -73
- package/dist/lib/user/entities/user.entity.js.map +1 -1
- package/dist/lib/user/services/access-key.service.d.ts +1 -0
- package/dist/lib/user/services/access-key.service.d.ts.map +1 -1
- package/dist/lib/user/services/access-key.service.js +19 -3
- package/dist/lib/user/services/access-key.service.js.map +1 -1
- package/dist/lib/user/services/user.service.d.ts +27 -22
- package/dist/lib/user/services/user.service.d.ts.map +1 -1
- package/dist/lib/user/services/user.service.js +135 -84
- package/dist/lib/user/services/user.service.js.map +1 -1
- package/dist/lib/user/user.module.d.ts.map +1 -1
- package/dist/lib/user/user.module.js +3 -2
- package/dist/lib/user/user.module.js.map +1 -1
- package/package.json +14 -9
- package/dist/lib/tenant/entities/user-access.entity.d.ts +0 -19
- package/dist/lib/tenant/entities/user-access.entity.d.ts.map +0 -1
- package/dist/lib/tenant/entities/user-access.entity.js.map +0 -1
package/README.md
CHANGED
|
@@ -1,170 +1,123 @@
|
|
|
1
1
|
# @ackplus/nest-auth
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
[](https://www.npmjs.com/package/@ackplus/nest-auth)
|
|
4
|
+
[](https://www.npmjs.com/package/@ackplus/nest-auth)
|
|
5
|
+
[](https://www.npmjs.com/package/@ackplus/nest-auth)
|
|
4
6
|
|
|
5
|
-
|
|
7
|
+
Full-featured authentication module for NestJS. Sessions, MFA, OAuth, passwordless, multi-tenancy, RBAC, audit logging, and an embedded admin console — all type-safe end to end.
|
|
6
8
|
|
|
7
|
-
|
|
8
|
-
- � **Multi-Factor Authentication** - Built-in TOTP (Authenticator App) support.
|
|
9
|
-
- � **Social Authentication** - Google, Facebook, Apple, GitHub integration.
|
|
10
|
-
- 🏢 **Multi-Tenancy** - Built-in tenant isolation and management.
|
|
11
|
-
- � **RBAC** - Role-Based Access Control with dynamic permissions.
|
|
12
|
-
- 🍪 **Flexible Session Management** - Support for JWTs via Cookies or Headers.
|
|
13
|
-
- � **Device Management** - Trusted device tracking.
|
|
9
|
+
> 📚 **Full documentation: [ack-solutions.github.io/nest-auth](https://ack-solutions.github.io/nest-auth/)**
|
|
14
10
|
|
|
15
|
-
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## Why
|
|
14
|
+
|
|
15
|
+
Modern auth has a long checklist: email + password, OAuth, MFA, refresh-token rotation, RBAC, multi-tenancy, audit logs, an admin console. Most teams glue together five libraries (and own the integration risk) or buy a hosted vendor (and lose data ownership). `@ackplus/nest-auth` picks a third path: **a single, modular library you install in your own NestJS app, backed by your own database**.
|
|
16
|
+
|
|
17
|
+
## Install
|
|
16
18
|
|
|
17
19
|
```bash
|
|
18
|
-
|
|
19
|
-
# or
|
|
20
|
-
pnpm add @ackplus/nest-auth
|
|
20
|
+
pnpm add @ackplus/nest-auth @ackplus/nest-auth-contracts
|
|
21
21
|
```
|
|
22
22
|
|
|
23
|
-
|
|
23
|
+
Required peer dependencies:
|
|
24
24
|
|
|
25
25
|
```bash
|
|
26
|
-
|
|
26
|
+
pnpm add @nestjs/common @nestjs/core @nestjs/typeorm @nestjs/swagger \
|
|
27
|
+
@nestjs/event-emitter @nestjs/platform-express \
|
|
28
|
+
typeorm class-validator class-transformer reflect-metadata rxjs
|
|
27
29
|
```
|
|
28
30
|
|
|
29
|
-
|
|
31
|
+
Optional, only if you enable the matching feature:
|
|
30
32
|
|
|
31
|
-
|
|
33
|
+
| Feature | Add |
|
|
34
|
+
| --- | --- |
|
|
35
|
+
| Cookie-mode sessions | `cookie-parser` |
|
|
36
|
+
| Redis sessions | `ioredis` |
|
|
37
|
+
| Google OAuth | `google-auth-library` |
|
|
38
|
+
| Facebook OAuth | `fb` |
|
|
39
|
+
| Apple OAuth | `apple-auth` |
|
|
40
|
+
| Rate limiting | `@nestjs/throttler` |
|
|
32
41
|
|
|
33
|
-
|
|
34
|
-
# Google
|
|
35
|
-
npm install google-auth-library
|
|
42
|
+
[Full install guide →](https://ack-solutions.github.io/nest-auth/docs/getting-started/installation/)
|
|
36
43
|
|
|
37
|
-
|
|
38
|
-
npm install fb
|
|
44
|
+
## What's included
|
|
39
45
|
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
46
|
+
| Capability | Notes |
|
|
47
|
+
| --- | --- |
|
|
48
|
+
| **9 sign-in methods** | Email + password · phone + password · passwordless OTP · magic link · Google · Facebook · Apple · GitHub · API keys + custom OAuth providers |
|
|
49
|
+
| **MFA** | TOTP · email OTP · SMS OTP · recovery codes · trusted-device tokens |
|
|
50
|
+
| **Sessions** | Database (default), Redis, or in-memory · auto-refresh · refresh-token rotation · password-hash-prefix invalidation |
|
|
51
|
+
| **Multi-tenancy** | `disabled` / `shared` / `isolated` modes · tenant-aware decorators · per-request context |
|
|
52
|
+
| **RBAC** | Roles + permissions per guard namespace (web, api, mobile) · external IDP friendly |
|
|
53
|
+
| **Embedded admin console** | Built-in React UI for users, roles, permissions, tenants, API keys |
|
|
54
|
+
| **Hooks & events** | Every lifecycle moment is overridable; full `EventEmitter2` integration |
|
|
55
|
+
| **Audit logging** | Structured event hook for compliance |
|
|
56
|
+
| **OpenAPI** | Auto-generated `@nestjs/swagger` spec for every endpoint |
|
|
45
57
|
|
|
46
|
-
|
|
58
|
+
## Minimal example
|
|
47
59
|
|
|
48
|
-
```
|
|
60
|
+
```ts
|
|
49
61
|
import { Module } from '@nestjs/common';
|
|
50
|
-
import {
|
|
62
|
+
import { TypeOrmModule } from '@nestjs/typeorm';
|
|
63
|
+
import { EventEmitterModule } from '@nestjs/event-emitter';
|
|
64
|
+
import { NestAuthModule, NestAuthEntities } from '@ackplus/nest-auth';
|
|
51
65
|
|
|
52
66
|
@Module({
|
|
53
67
|
imports: [
|
|
68
|
+
EventEmitterModule.forRoot(),
|
|
69
|
+
TypeOrmModule.forRoot({
|
|
70
|
+
type: 'postgres',
|
|
71
|
+
url: process.env.DATABASE_URL,
|
|
72
|
+
entities: [...NestAuthEntities],
|
|
73
|
+
synchronize: process.env.NODE_ENV === 'development',
|
|
74
|
+
}),
|
|
75
|
+
TypeOrmModule.forFeature([...NestAuthEntities]),
|
|
76
|
+
|
|
54
77
|
NestAuthModule.forRoot({
|
|
55
|
-
|
|
56
|
-
session: {
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
},
|
|
60
|
-
//
|
|
78
|
+
appName: 'My App',
|
|
79
|
+
session: { jwt: { secret: process.env.JWT_SECRET! } },
|
|
80
|
+
// emailAuth: { enabled: true }, // default
|
|
81
|
+
// google: { clientId, clientSecret }, // opt-in OAuth
|
|
82
|
+
// mfa: { enabled: true, required: true },
|
|
83
|
+
// tenant: { enabled: true, mode: TenantModeEnum.SHARED },
|
|
61
84
|
}),
|
|
62
85
|
],
|
|
63
86
|
})
|
|
64
87
|
export class AppModule {}
|
|
65
88
|
```
|
|
66
89
|
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
```typescript
|
|
70
|
-
import { Controller, Get, UseGuards } from '@nestjs/common';
|
|
71
|
-
import { NestAuthAuthGuard } from '@ackplus/nest-auth';
|
|
72
|
-
|
|
73
|
-
@Controller('profile')
|
|
74
|
-
export class ProfileController {
|
|
75
|
-
|
|
76
|
-
@Get()
|
|
77
|
-
@UseGuards(NestAuthAuthGuard)
|
|
78
|
-
getProfile(@Req() req) {
|
|
79
|
-
return req.user;
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
```
|
|
83
|
-
|
|
84
|
-
## Configuration
|
|
85
|
-
|
|
86
|
-
### Social Providers
|
|
87
|
-
|
|
88
|
-
```typescript
|
|
89
|
-
NestAuthModule.forRoot({
|
|
90
|
-
google: {
|
|
91
|
-
clientId: '...',
|
|
92
|
-
clientSecret: '...',
|
|
93
|
-
},
|
|
94
|
-
facebook: {
|
|
95
|
-
appId: '...',
|
|
96
|
-
appSecret: '...',
|
|
97
|
-
},
|
|
98
|
-
// ...
|
|
99
|
-
})
|
|
100
|
-
```
|
|
101
|
-
|
|
102
|
-
### Email / SMPT
|
|
90
|
+
That's it — you immediately get `POST /auth/signup`, `POST /auth/login`, `/auth/refresh-token`, password-reset, MFA, OAuth callbacks, and the rest of the API. Wire `EventEmitterModule.forRoot()`, `cookie-parser`, and the `AuthExceptionFilter` from the [setup checklist](https://ack-solutions.github.io/nest-auth/docs/getting-started/setup-checklist/) and ship.
|
|
103
91
|
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
```typescript
|
|
107
|
-
NestAuthModule.forRoot({
|
|
108
|
-
mail: {
|
|
109
|
-
driver: 'smtp',
|
|
110
|
-
host: 'smtp.example.com',
|
|
111
|
-
// ...
|
|
112
|
-
}
|
|
113
|
-
})
|
|
114
|
-
```
|
|
115
|
-
|
|
116
|
-
## Session Storage Options
|
|
117
|
-
|
|
118
|
-
By default, sessions are stored in the database via TypeORM. You can switch to Redis for
|
|
119
|
-
multi-instance performance without changing your login/signup flows.
|
|
120
|
-
|
|
121
|
-
### Redis Setup
|
|
122
|
-
|
|
123
|
-
1) Install the optional Redis dependency:
|
|
124
|
-
|
|
125
|
-
```bash
|
|
126
|
-
npm install ioredis
|
|
127
|
-
```
|
|
92
|
+
## Documentation
|
|
128
93
|
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
host: '127.0.0.1',
|
|
140
|
-
port: 6379,
|
|
141
|
-
password: process.env.REDIS_PASSWORD,
|
|
142
|
-
db: 0,
|
|
143
|
-
tls: undefined,
|
|
144
|
-
keyPrefix: 'nest-auth:sess:',
|
|
145
|
-
ttlSeconds: 60 * 60 * 24 * 7,
|
|
146
|
-
enableOfflineQueue: true,
|
|
147
|
-
},
|
|
148
|
-
},
|
|
149
|
-
});
|
|
150
|
-
```
|
|
94
|
+
| Section | What's there |
|
|
95
|
+
| --- | --- |
|
|
96
|
+
| [Getting Started](https://ack-solutions.github.io/nest-auth/docs/getting-started/) | Install, database setup (3 paths), env vars, quickstart for backend / React / Next.js / vanilla |
|
|
97
|
+
| [Core Concepts](https://ack-solutions.github.io/nest-auth/docs/concepts/) | Sessions, user model, multi-tenancy, RBAC, MFA, events, audit |
|
|
98
|
+
| [Authentication](https://ack-solutions.github.io/nest-auth/docs/authentication/) | One page per sign-in method |
|
|
99
|
+
| [Backend Reference](https://ack-solutions.github.io/nest-auth/docs/backend/) | Module config, entities, decorators, guards, services, hooks, events, error codes, admin console |
|
|
100
|
+
| [Production](https://ack-solutions.github.io/nest-auth/docs/production/) | Email/SMS wiring, JWT customization, scaling, CORS & security, testing |
|
|
101
|
+
| [Recipes](https://ack-solutions.github.io/nest-auth/docs/recipes/) | 20 copy-paste solutions — referral codes, custom OAuth, tenant switcher, etc. |
|
|
102
|
+
| [API Reference](https://ack-solutions.github.io/nest-auth/docs/api-reference/) | Auto-generated REST + TypeScript types |
|
|
103
|
+
| [FAQ & Troubleshooting](https://ack-solutions.github.io/nest-auth/docs/faq/) | Error codes → likely cause → fix |
|
|
151
104
|
|
|
152
|
-
|
|
153
|
-
- If `session.storageType` is omitted, the database store is used (no breaking changes).
|
|
154
|
-
- Legacy config is still supported: `session.redisUrl`.
|
|
155
|
-
- Redis keys are JSON-serialized and use TTL; `ttlSeconds` defaults to the session expiry when possible.
|
|
105
|
+
## Companion packages
|
|
156
106
|
|
|
157
|
-
|
|
107
|
+
| Package | Use when |
|
|
108
|
+
| --- | --- |
|
|
109
|
+
| [`@ackplus/nest-auth-client`](https://www.npmjs.com/package/@ackplus/nest-auth-client) | Vanilla JS / Vue / Angular / Svelte / React Native client |
|
|
110
|
+
| [`@ackplus/nest-auth-react`](https://www.npmjs.com/package/@ackplus/nest-auth-react) | React provider, hooks, guards, and Next.js App Router helpers |
|
|
111
|
+
| [`@ackplus/nest-auth-contracts`](https://www.npmjs.com/package/@ackplus/nest-auth-contracts) | Shared TS types — consumed by all three |
|
|
158
112
|
|
|
159
|
-
|
|
160
|
-
- Use Redis clustering/sentinel for high availability.
|
|
161
|
-
- Choose a consistent `keyPrefix` to isolate environments.
|
|
162
|
-
- Monitor TTL/evictions and memory usage.
|
|
113
|
+
All four packages release together with the same version number. Pin them all to the same version.
|
|
163
114
|
|
|
164
|
-
##
|
|
115
|
+
## Links
|
|
165
116
|
|
|
166
|
-
|
|
117
|
+
- 📚 [Documentation](https://ack-solutions.github.io/nest-auth/)
|
|
118
|
+
- 💬 [Issue Tracker](https://github.com/ack-solutions/nest-auth/issues)
|
|
119
|
+
- 📦 [GitHub Repository](https://github.com/ack-solutions/nest-auth)
|
|
167
120
|
|
|
168
121
|
## License
|
|
169
122
|
|
|
170
|
-
MIT
|
|
123
|
+
[MIT](https://github.com/ack-solutions/nest-auth/blob/main/LICENSE)
|
package/dist/index.d.ts
CHANGED
|
@@ -7,7 +7,7 @@ export * from './lib/role';
|
|
|
7
7
|
export * from './lib/permission';
|
|
8
8
|
export * from './lib/tenant';
|
|
9
9
|
export * from './lib/core';
|
|
10
|
-
export * from './lib/request-context
|
|
10
|
+
export * from './lib/request-context';
|
|
11
11
|
export type { IAuthModuleOptions, IAuthModuleAsyncOptions, IAuthModuleOptionsFactory, IDefaultTenantOptions, IAdminConsoleOptions, IPasswordlessOptions, } from './lib/core/interfaces/auth-module-options.interface';
|
|
12
12
|
export { AuthConfigService } from './lib/core/services/auth-config.service';
|
|
13
13
|
export { DebugLoggerService, DebugLogLevel } from './lib/core/services/debug-logger.service';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC;AAEvC,cAAc,sBAAsB,CAAC;AAGrC,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAG3B,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC;AAEvC,cAAc,sBAAsB,CAAC;AAGrC,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,kBAAkB,CAAC;AACjC,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAG3B,cAAc,uBAAuB,CAAC;AAGtC,YAAY,EACV,kBAAkB,EAClB,uBAAuB,EACvB,yBAAyB,EACzB,qBAAqB,EACrB,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,qDAAqD,CAAC;AAG7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,yCAAyC,CAAC;AAG5E,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,0CAA0C,CAAC;AAC7F,YAAY,EAAE,eAAe,EAAE,MAAM,0CAA0C,CAAC;AAGhF,OAAO,EAAE,iBAAiB,EAAE,MAAM,gDAAgD,CAAC;AAGnF,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAG/D,cAAc,8BAA8B,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -24,7 +24,7 @@ __exportStar(require("./lib/role"), exports);
|
|
|
24
24
|
__exportStar(require("./lib/permission"), exports);
|
|
25
25
|
__exportStar(require("./lib/tenant"), exports);
|
|
26
26
|
__exportStar(require("./lib/core"), exports);
|
|
27
|
-
__exportStar(require("./lib/request-context
|
|
27
|
+
__exportStar(require("./lib/request-context"), exports);
|
|
28
28
|
var auth_config_service_1 = require("./lib/core/services/auth-config.service");
|
|
29
29
|
Object.defineProperty(exports, "AuthConfigService", { enumerable: true, get: function () { return auth_config_service_1.AuthConfigService; } });
|
|
30
30
|
var debug_logger_service_1 = require("./lib/core/services/debug-logger.service");
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,yDAAuC;AAEvC,uDAAqC;AAGrC,6CAA2B;AAC3B,gDAA8B;AAC9B,6CAA2B;AAC3B,6CAA2B;AAC3B,mDAAiC;AACjC,+CAA6B;AAC7B,6CAA2B;AAG3B,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,yDAAuC;AAEvC,uDAAqC;AAGrC,6CAA2B;AAC3B,gDAA8B;AAC9B,6CAA2B;AAC3B,6CAA2B;AAC3B,mDAAiC;AACjC,+CAA6B;AAC7B,6CAA2B;AAG3B,wDAAsC;AAatC,+EAA4E;AAAnE,wHAAA,iBAAiB,OAAA;AAG1B,iFAA6F;AAApF,0HAAA,kBAAkB,OAAA;AAAE,qHAAA,aAAa,OAAA;AAI1C,oFAAmF;AAA1E,sHAAA,iBAAiB,OAAA;AAG1B,qCAA+D;AAAtD,wGAAA,eAAe,OAAA;AAAE,wGAAA,eAAe,OAAA;AAGzC,+DAA6C"}
|
|
@@ -30,7 +30,7 @@ const trusted_device_entity_1 = require("../auth/entities/trusted-device.entity"
|
|
|
30
30
|
const user_entity_1 = require("../user/entities/user.entity");
|
|
31
31
|
const permission_module_1 = require("../permission/permission.module");
|
|
32
32
|
const session_module_1 = require("../session/session.module");
|
|
33
|
-
const user_access_entity_1 = require("../
|
|
33
|
+
const user_access_entity_1 = require("../user/entities/user-access.entity");
|
|
34
34
|
const admin_user_management_service_1 = require("./services/admin-user-management.service");
|
|
35
35
|
let AdminConsoleModule = class AdminConsoleModule {
|
|
36
36
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admin-console.module.js","sourceRoot":"","sources":["../../../src/lib/admin-console/admin-console.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAoD;AACpD,6CAAgD;AAChD,oEAAiE;AACjE,sEAAiE;AACjE,sEAAiE;AACjE,4EAAuE;AACvE,qFAAgF;AAChF,+EAA0E;AAC1E,sEAAiE;AACjE,qDAAiD;AACjD,qDAAiD;AACjD,2DAAuD;AACvD,iFAA4E;AAC5E,iFAA4E;AAC5E,qFAAgF;AAChF,6FAAwF;AACxF,0FAAoF;AACpF,qDAAiD;AACjD,0EAAuE;AACvE,kFAA+E;AAC/E,8DAA4D;AAC5D,uEAAmE;AACnE,8DAA0D;AAC1D,
|
|
1
|
+
{"version":3,"file":"admin-console.module.js","sourceRoot":"","sources":["../../../src/lib/admin-console/admin-console.module.ts"],"names":[],"mappings":";;;;;;;;;AAAA,2CAAoD;AACpD,6CAAgD;AAChD,oEAAiE;AACjE,sEAAiE;AACjE,sEAAiE;AACjE,4EAAuE;AACvE,qFAAgF;AAChF,+EAA0E;AAC1E,sEAAiE;AACjE,qDAAiD;AACjD,qDAAiD;AACjD,2DAAuD;AACvD,iFAA4E;AAC5E,iFAA4E;AAC5E,qFAAgF;AAChF,6FAAwF;AACxF,0FAAoF;AACpF,qDAAiD;AACjD,0EAAuE;AACvE,kFAA+E;AAC/E,8DAA4D;AAC5D,uEAAmE;AACnE,8DAA0D;AAC1D,4EAAyE;AACzE,4FAAsF;AA6C/E,IAAM,kBAAkB,GAAxB,MAAM,kBAAkB;CAAI,CAAA;AAAtB,gDAAkB;6BAAlB,kBAAkB;IA3C9B,IAAA,eAAM,EAAC;QACN,OAAO,EAAE;YACP,uBAAa,CAAC,UAAU,CAAC;gBACvB,qCAAiB;gBACjB,qCAAiB;gBACjB,6CAAqB;gBACrB,0BAAY;gBACZ,uCAAkB;aACnB,CAAC;YACF,IAAA,mBAAU,EAAC,GAAG,EAAE,CAAC,wBAAU,CAAC;YAC5B,IAAA,mBAAU,EAAC,GAAG,EAAE,CAAC,wBAAU,CAAC;YAC5B,IAAA,mBAAU,EAAC,GAAG,EAAE,CAAC,wBAAU,CAAC;YAC5B,IAAA,mBAAU,EAAC,GAAG,EAAE,CAAC,4BAAY,CAAC;YAC9B,IAAA,mBAAU,EAAC,GAAG,EAAE,CAAC,8BAAa,CAAC;YAC/B,oCAAgB;SACjB;QACD,SAAS,EAAE;YACT,qCAAgB;YAChB,qCAAgB;YAChB,2CAAmB;YACnB,wDAAyB;YACzB,0DAA0B;YAC1B,uCAAiB;SAClB;QACD,WAAW,EAAE;YAEX,2CAAmB;YACnB,6CAAoB;YACpB,6CAAoB;YACpB,iDAAsB;YACtB,yDAA0B;YAE1B,iDAAsB;SACvB;QACD,OAAO,EAAE;YACP,qCAAgB;YAChB,qCAAgB;YAChB,2CAAmB;YACnB,wDAAyB;YACzB,uCAAiB;YACjB,uBAAa;SACd;KACF,CAAC;GACW,kBAAkB,CAAI"}
|
|
@@ -48,9 +48,6 @@ export declare class AdminAuthController {
|
|
|
48
48
|
updatedAt: Date;
|
|
49
49
|
};
|
|
50
50
|
}>;
|
|
51
|
-
logout(admin: NestAuthAdminUser, res: Response): Promise<{
|
|
52
|
-
message: string;
|
|
53
|
-
}>;
|
|
54
51
|
me(admin: NestAuthAdminUser): Promise<{
|
|
55
52
|
id: string;
|
|
56
53
|
email: string;
|
|
@@ -60,6 +57,9 @@ export declare class AdminAuthController {
|
|
|
60
57
|
createdAt: Date;
|
|
61
58
|
updatedAt: Date;
|
|
62
59
|
}>;
|
|
60
|
+
logout(admin: NestAuthAdminUser, res: Response): Promise<{
|
|
61
|
+
message: string;
|
|
62
|
+
}>;
|
|
63
63
|
publicConfig(): Promise<{
|
|
64
64
|
allowAdminManagement: boolean;
|
|
65
65
|
}>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admin-auth.controller.d.ts","sourceRoot":"","sources":["../../../../src/lib/admin-console/controllers/admin-auth.controller.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"admin-auth.controller.d.ts","sourceRoot":"","sources":["../../../../src/lib/admin-console/controllers/admin-auth.controller.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnC,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AACxE,OAAO,EAAE,yBAAyB,EAAE,MAAM,0CAA0C,CAAC;AACrF,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAMnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,MAAM,mCAAmC,CAAC;AACrG,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAElE,OAAO,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,sCAAsC,CAAC;AAErE,OAAO,EAAe,UAAU,EAAE,MAAM,SAAS,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AAG/D,qBAKa,mBAAmB;IAE5B,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAC3B,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,aAAa;IAE9B,OAAO,CAAC,QAAQ,CAAC,cAAc;gBARd,SAAS,EAAE,gBAAgB,EAC3B,QAAQ,EAAE,mBAAmB,EAC7B,MAAM,EAAE,yBAAyB,EACjC,UAAU,EAAE,gBAAgB,EAC5B,WAAW,EAAE,WAAW,EACxB,WAAW,EAAE,WAAW,EACxB,aAAa,EAAE,aAAa,EAE5B,cAAc,EAAE,UAAU,CAAC,YAAY,CAAC;IAG3D,OAAO,CAAC,gBAAgB;IAWlB,MAAM,CAAS,GAAG,EAAE,cAAc;;;;;;;;;;;;IAmClC,KAAK,CAAS,GAAG,EAAE,aAAa,EAA8B,GAAG,EAAE,QAAQ;;;;;;;;;;;;IAc3E,EAAE,CAAiB,KAAK,EAAE,iBAAiB;;;;;;;;;IAO3C,MAAM,CAAiB,KAAK,EAAE,iBAAiB,EAA8B,GAAG,EAAE,QAAQ;;;IAkB1F,YAAY;;;IAUZ,iBAAiB;;;;;;;;;;kBAuBa,MAAM;mBAAS,MAAM;;;IAqDnD,UAAU;;;;;;;;;;;IAaV,WAAW,CAAS,GAAG,EAAE,uBAAuB;;;;;;;;;;;IAWhD,WAAW,CAAc,EAAE,EAAE,MAAM,EAAU,GAAG,EAAE,uBAAuB;;;;;;;;;;;IAWzE,WAAW,CAAc,EAAE,EAAE,MAAM;;;IAUnC,aAAa,CAAS,GAAG,EAAE,qBAAqB;;;IAqCtD,OAAO,CAAC,WAAW;CAWpB"}
|
|
@@ -21,6 +21,9 @@ const login_dto_1 = require("../dto/login.dto");
|
|
|
21
21
|
const reset_password_dto_1 = require("../dto/reset-password.dto");
|
|
22
22
|
const signup_dto_1 = require("../dto/signup.dto");
|
|
23
23
|
const admin_session_guard_1 = require("../guards/admin-session.guard");
|
|
24
|
+
const auth_exception_filter_1 = require("../../auth/filters/auth-exception.filter");
|
|
25
|
+
const swagger_1 = require("@nestjs/swagger");
|
|
26
|
+
const core_1 = require("../../core");
|
|
24
27
|
const current_admin_decorator_1 = require("../decorators/current-admin.decorator");
|
|
25
28
|
const admin_user_entity_1 = require("../entities/admin-user.entity");
|
|
26
29
|
const create_dashboard_admin_dto_1 = require("../dto/create-dashboard-admin.dto");
|
|
@@ -96,6 +99,9 @@ let AdminAuthController = class AdminAuthController {
|
|
|
96
99
|
admin: this.toSafeAdmin(admin),
|
|
97
100
|
};
|
|
98
101
|
}
|
|
102
|
+
async me(admin) {
|
|
103
|
+
return this.toSafeAdmin(admin);
|
|
104
|
+
}
|
|
99
105
|
async logout(admin, res) {
|
|
100
106
|
try {
|
|
101
107
|
await this.sessions.invalidateSessionForAdmin(admin.id);
|
|
@@ -109,9 +115,6 @@ let AdminAuthController = class AdminAuthController {
|
|
|
109
115
|
});
|
|
110
116
|
return { message: 'Signed out' };
|
|
111
117
|
}
|
|
112
|
-
async me(admin) {
|
|
113
|
-
return this.toSafeAdmin(admin);
|
|
114
|
-
}
|
|
115
118
|
async publicConfig() {
|
|
116
119
|
return {
|
|
117
120
|
allowAdminManagement: this.config.allowAdminManagement(),
|
|
@@ -121,7 +124,7 @@ let AdminAuthController = class AdminAuthController {
|
|
|
121
124
|
const [totalUsers, activeUsers, verifiedUsers] = await Promise.all([
|
|
122
125
|
this.userService.countUsers(),
|
|
123
126
|
this.userService.countUsers({ where: { isActive: true } }),
|
|
124
|
-
this.userService.countUsers({ where: {
|
|
127
|
+
this.userService.countUsers({ where: { emailVerifiedAt: (0, typeorm_2.Not)((0, typeorm_2.IsNull)()) } }),
|
|
125
128
|
]);
|
|
126
129
|
const roles = await this.roleService.getRoles();
|
|
127
130
|
const tenants = await this.tenantService.getTenants({ order: { createdAt: 'DESC' } });
|
|
@@ -243,6 +246,7 @@ let AdminAuthController = class AdminAuthController {
|
|
|
243
246
|
};
|
|
244
247
|
exports.AdminAuthController = AdminAuthController;
|
|
245
248
|
__decorate([
|
|
249
|
+
(0, swagger_1.ApiOperation)({ summary: 'Create an admin (secret-key gated)' }),
|
|
246
250
|
(0, common_1.Post)('signup'),
|
|
247
251
|
__param(0, (0, common_1.Body)()),
|
|
248
252
|
__metadata("design:type", Function),
|
|
@@ -250,6 +254,7 @@ __decorate([
|
|
|
250
254
|
__metadata("design:returntype", Promise)
|
|
251
255
|
], AdminAuthController.prototype, "signup", null);
|
|
252
256
|
__decorate([
|
|
257
|
+
(0, swagger_1.ApiOperation)({ summary: 'Admin login (sets the session cookie)' }),
|
|
253
258
|
(0, common_1.Post)('login'),
|
|
254
259
|
__param(0, (0, common_1.Body)()),
|
|
255
260
|
__param(1, (0, common_1.Res)({ passthrough: true })),
|
|
@@ -258,29 +263,33 @@ __decorate([
|
|
|
258
263
|
__metadata("design:returntype", Promise)
|
|
259
264
|
], AdminAuthController.prototype, "login", null);
|
|
260
265
|
__decorate([
|
|
261
|
-
(0,
|
|
266
|
+
(0, swagger_1.ApiOperation)({ summary: 'Current admin' }),
|
|
267
|
+
(0, common_1.Get)('me'),
|
|
262
268
|
(0, common_1.UseGuards)(admin_session_guard_1.AdminSessionGuard),
|
|
263
269
|
__param(0, (0, current_admin_decorator_1.CurrentAdmin)()),
|
|
264
|
-
__param(1, (0, common_1.Res)({ passthrough: true })),
|
|
265
270
|
__metadata("design:type", Function),
|
|
266
|
-
__metadata("design:paramtypes", [admin_user_entity_1.NestAuthAdminUser
|
|
271
|
+
__metadata("design:paramtypes", [admin_user_entity_1.NestAuthAdminUser]),
|
|
267
272
|
__metadata("design:returntype", Promise)
|
|
268
|
-
], AdminAuthController.prototype, "
|
|
273
|
+
], AdminAuthController.prototype, "me", null);
|
|
269
274
|
__decorate([
|
|
270
|
-
(0,
|
|
275
|
+
(0, swagger_1.ApiOperation)({ summary: 'Admin logout' }),
|
|
276
|
+
(0, common_1.Post)('logout'),
|
|
271
277
|
(0, common_1.UseGuards)(admin_session_guard_1.AdminSessionGuard),
|
|
272
278
|
__param(0, (0, current_admin_decorator_1.CurrentAdmin)()),
|
|
279
|
+
__param(1, (0, common_1.Res)({ passthrough: true })),
|
|
273
280
|
__metadata("design:type", Function),
|
|
274
|
-
__metadata("design:paramtypes", [admin_user_entity_1.NestAuthAdminUser]),
|
|
281
|
+
__metadata("design:paramtypes", [admin_user_entity_1.NestAuthAdminUser, Object]),
|
|
275
282
|
__metadata("design:returntype", Promise)
|
|
276
|
-
], AdminAuthController.prototype, "
|
|
283
|
+
], AdminAuthController.prototype, "logout", null);
|
|
277
284
|
__decorate([
|
|
285
|
+
(0, swagger_1.ApiOperation)({ summary: 'Public admin-console config' }),
|
|
278
286
|
(0, common_1.Get)('config'),
|
|
279
287
|
__metadata("design:type", Function),
|
|
280
288
|
__metadata("design:paramtypes", []),
|
|
281
289
|
__metadata("design:returntype", Promise)
|
|
282
290
|
], AdminAuthController.prototype, "publicConfig", null);
|
|
283
291
|
__decorate([
|
|
292
|
+
(0, swagger_1.ApiOperation)({ summary: 'Dashboard stats' }),
|
|
284
293
|
(0, common_1.Get)('api/stats'),
|
|
285
294
|
(0, common_1.UseGuards)(admin_session_guard_1.AdminSessionGuard),
|
|
286
295
|
__metadata("design:type", Function),
|
|
@@ -288,6 +297,7 @@ __decorate([
|
|
|
288
297
|
__metadata("design:returntype", Promise)
|
|
289
298
|
], AdminAuthController.prototype, "getDashboardStats", null);
|
|
290
299
|
__decorate([
|
|
300
|
+
(0, swagger_1.ApiOperation)({ summary: 'List admins' }),
|
|
291
301
|
(0, common_1.Get)('admins'),
|
|
292
302
|
(0, common_1.UseGuards)(admin_session_guard_1.AdminSessionGuard),
|
|
293
303
|
__metadata("design:type", Function),
|
|
@@ -295,6 +305,7 @@ __decorate([
|
|
|
295
305
|
__metadata("design:returntype", Promise)
|
|
296
306
|
], AdminAuthController.prototype, "listAdmins", null);
|
|
297
307
|
__decorate([
|
|
308
|
+
(0, swagger_1.ApiOperation)({ summary: 'Create an admin' }),
|
|
298
309
|
(0, common_1.Post)('admins'),
|
|
299
310
|
(0, common_1.UseGuards)(admin_session_guard_1.AdminSessionGuard),
|
|
300
311
|
__param(0, (0, common_1.Body)()),
|
|
@@ -303,6 +314,7 @@ __decorate([
|
|
|
303
314
|
__metadata("design:returntype", Promise)
|
|
304
315
|
], AdminAuthController.prototype, "createAdmin", null);
|
|
305
316
|
__decorate([
|
|
317
|
+
(0, swagger_1.ApiOperation)({ summary: 'Update an admin' }),
|
|
306
318
|
(0, common_1.Patch)('admins/:id'),
|
|
307
319
|
(0, common_1.UseGuards)(admin_session_guard_1.AdminSessionGuard),
|
|
308
320
|
__param(0, (0, common_1.Param)('id')),
|
|
@@ -312,6 +324,7 @@ __decorate([
|
|
|
312
324
|
__metadata("design:returntype", Promise)
|
|
313
325
|
], AdminAuthController.prototype, "updateAdmin", null);
|
|
314
326
|
__decorate([
|
|
327
|
+
(0, swagger_1.ApiOperation)({ summary: 'Delete an admin' }),
|
|
315
328
|
(0, common_1.Delete)('admins/:id'),
|
|
316
329
|
(0, common_1.UseGuards)(admin_session_guard_1.AdminSessionGuard),
|
|
317
330
|
__param(0, (0, common_1.Param)('id')),
|
|
@@ -320,6 +333,7 @@ __decorate([
|
|
|
320
333
|
__metadata("design:returntype", Promise)
|
|
321
334
|
], AdminAuthController.prototype, "deleteAdmin", null);
|
|
322
335
|
__decorate([
|
|
336
|
+
(0, swagger_1.ApiOperation)({ summary: "Reset an admin's password" }),
|
|
323
337
|
(0, common_1.Post)('reset-password'),
|
|
324
338
|
__param(0, (0, common_1.Body)()),
|
|
325
339
|
__metadata("design:type", Function),
|
|
@@ -327,7 +341,11 @@ __decorate([
|
|
|
327
341
|
__metadata("design:returntype", Promise)
|
|
328
342
|
], AdminAuthController.prototype, "resetPassword", null);
|
|
329
343
|
exports.AdminAuthController = AdminAuthController = __decorate([
|
|
330
|
-
(0, common_1.Controller)(
|
|
344
|
+
(0, common_1.Controller)(),
|
|
345
|
+
(0, common_1.UseFilters)(auth_exception_filter_1.AuthExceptionFilter),
|
|
346
|
+
(0, swagger_1.ApiTags)('Admin · Console'),
|
|
347
|
+
(0, core_1.ApiValidationError)(),
|
|
348
|
+
(0, core_1.ApiUnauthorized)(),
|
|
331
349
|
__param(7, (0, typeorm_1.InjectRepository)(user_entity_1.NestAuthUser)),
|
|
332
350
|
__metadata("design:paramtypes", [admin_auth_service_1.AdminAuthService,
|
|
333
351
|
admin_session_service_1.AdminSessionService,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admin-auth.controller.js","sourceRoot":"","sources":["../../../../src/lib/admin-console/controllers/admin-auth.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"admin-auth.controller.js","sourceRoot":"","sources":["../../../../src/lib/admin-console/controllers/admin-auth.controller.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,7 +5,7 @@ export declare class AdminConsoleController implements OnModuleInit {
|
|
|
5
5
|
private readonly config;
|
|
6
6
|
private readonly logger;
|
|
7
7
|
private cachedIndexHtml;
|
|
8
|
-
private staticRoot;
|
|
8
|
+
private readonly staticRoot;
|
|
9
9
|
private readonly indexPath;
|
|
10
10
|
constructor(config: AdminConsoleConfigService);
|
|
11
11
|
onModuleInit(): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admin-console.controller.d.ts","sourceRoot":"","sources":["../../../../src/lib/admin-console/controllers/admin-console.controller.ts"],"names":[],"mappings":"AAAA,OAAO,EAA2B,YAAY,EAAc,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"admin-console.controller.d.ts","sourceRoot":"","sources":["../../../../src/lib/admin-console/controllers/admin-console.controller.ts"],"names":[],"mappings":"AAAA,OAAO,EAA2B,YAAY,EAAc,MAAM,gBAAgB,CAAC;AAEnF,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAGnC,OAAO,EAAE,yBAAyB,EAAE,MAAM,0CAA0C,CAAC;AAwBrF,qBAEa,sBAAuB,YAAW,YAAY;IAM7C,OAAO,CAAC,QAAQ,CAAC,MAAM;IALnC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA2C;IAClE,OAAO,CAAC,eAAe,CAAuB;IAC9C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAuB;IAClD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAgE;gBAE7D,MAAM,EAAE,yBAAyB;IAE9D,YAAY;IAwBN,UAAU,CAAQ,GAAG,EAAE,QAAQ;CAuCtC"}
|
|
@@ -15,14 +15,15 @@ var AdminConsoleController_1;
|
|
|
15
15
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
16
16
|
exports.AdminConsoleController = void 0;
|
|
17
17
|
const common_1 = require("@nestjs/common");
|
|
18
|
+
const swagger_1 = require("@nestjs/swagger");
|
|
18
19
|
const path_1 = require("path");
|
|
19
20
|
const fs_1 = require("fs");
|
|
20
21
|
const admin_console_config_service_1 = require("../services/admin-console-config.service");
|
|
21
22
|
const candidateStaticRoots = [
|
|
22
23
|
(0, path_1.join)(__dirname, '..', 'static'),
|
|
24
|
+
(0, path_1.join)(process.cwd(), 'node_modules', '@ackplus', 'nest-auth', 'dist', 'lib', 'admin-console', 'static'),
|
|
25
|
+
(0, path_1.join)(process.cwd(), 'packages', 'nest-auth', 'dist', 'lib', 'admin-console', 'static'),
|
|
23
26
|
(0, path_1.join)(process.cwd(), 'packages', 'nest-auth', 'src', 'lib', 'admin-console', 'static'),
|
|
24
|
-
(0, path_1.join)(process.cwd(), 'dist', 'apps', 'nest-examples', 'packages', 'nest-auth', 'src', 'lib', 'admin-console', 'static'),
|
|
25
|
-
(0, path_1.join)(process.cwd(), 'dist', 'packages', 'nest-auth', 'src', 'lib', 'admin-console', 'static'),
|
|
26
27
|
];
|
|
27
28
|
function resolveStaticRoot() {
|
|
28
29
|
for (const root of candidateStaticRoots) {
|
|
@@ -30,14 +31,14 @@ function resolveStaticRoot() {
|
|
|
30
31
|
return root;
|
|
31
32
|
}
|
|
32
33
|
}
|
|
33
|
-
return
|
|
34
|
+
return null;
|
|
34
35
|
}
|
|
35
36
|
let AdminConsoleController = AdminConsoleController_1 = class AdminConsoleController {
|
|
36
37
|
config;
|
|
37
38
|
logger = new common_1.Logger(AdminConsoleController_1.name);
|
|
38
39
|
cachedIndexHtml = null;
|
|
39
40
|
staticRoot = resolveStaticRoot();
|
|
40
|
-
indexPath = (0, path_1.join)(this.staticRoot, 'index.html');
|
|
41
|
+
indexPath = this.staticRoot ? (0, path_1.join)(this.staticRoot, 'index.html') : null;
|
|
41
42
|
constructor(config) {
|
|
42
43
|
this.config = config;
|
|
43
44
|
}
|
|
@@ -45,19 +46,27 @@ let AdminConsoleController = AdminConsoleController_1 = class AdminConsoleContro
|
|
|
45
46
|
if (this.config.getConfig().enabled === false) {
|
|
46
47
|
return;
|
|
47
48
|
}
|
|
49
|
+
if (!this.indexPath) {
|
|
50
|
+
this.logger.warn('Admin console UI bundle not found (no static/index.html). The admin API still works; ' +
|
|
51
|
+
'run `pnpm -F @ackplus/nest-auth-admin build` to serve the dashboard at /auth/admin.');
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
48
54
|
try {
|
|
49
55
|
this.cachedIndexHtml = (0, fs_1.readFileSync)(this.indexPath, 'utf8');
|
|
50
|
-
this.logger.log('Admin console
|
|
56
|
+
this.logger.log('Admin console UI bundle loaded');
|
|
51
57
|
}
|
|
52
58
|
catch (error) {
|
|
53
|
-
this.logger.
|
|
59
|
+
this.logger.warn(`Admin console UI bundle could not be read at ${this.indexPath}: ${error.message}`);
|
|
54
60
|
}
|
|
55
61
|
}
|
|
56
62
|
async serveIndex(res) {
|
|
57
63
|
this.config.ensureEnabled();
|
|
58
64
|
if (!this.cachedIndexHtml) {
|
|
59
|
-
|
|
60
|
-
|
|
65
|
+
res
|
|
66
|
+
.status(404)
|
|
67
|
+
.type('text/plain')
|
|
68
|
+
.send('Admin console UI is not bundled in this build. The admin API is available under ' +
|
|
69
|
+
'/auth/admin/api/*. To serve the dashboard UI, build @ackplus/nest-auth-admin.');
|
|
61
70
|
return;
|
|
62
71
|
}
|
|
63
72
|
try {
|
|
@@ -87,7 +96,8 @@ __decorate([
|
|
|
87
96
|
__metadata("design:returntype", Promise)
|
|
88
97
|
], AdminConsoleController.prototype, "serveIndex", null);
|
|
89
98
|
exports.AdminConsoleController = AdminConsoleController = AdminConsoleController_1 = __decorate([
|
|
90
|
-
(0,
|
|
99
|
+
(0, swagger_1.ApiExcludeController)(),
|
|
100
|
+
(0, common_1.Controller)(),
|
|
91
101
|
__metadata("design:paramtypes", [admin_console_config_service_1.AdminConsoleConfigService])
|
|
92
102
|
], AdminConsoleController);
|
|
93
103
|
//# sourceMappingURL=admin-console.controller.js.map
|