@nauth-toolkit/core 0.1.14 → 0.1.17
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/dist/adapters/database-columns.d.ts +70 -0
- package/dist/adapters/database-columns.d.ts.map +1 -1
- package/dist/adapters/database-columns.js +76 -2
- package/dist/adapters/database-columns.js.map +1 -1
- package/dist/adapters/express.adapter.d.ts +66 -0
- package/dist/adapters/express.adapter.d.ts.map +1 -1
- package/dist/adapters/express.adapter.js +80 -0
- package/dist/adapters/express.adapter.js.map +1 -1
- package/dist/adapters/fastify.adapter.d.ts +42 -0
- package/dist/adapters/fastify.adapter.d.ts.map +1 -1
- package/dist/adapters/fastify.adapter.js +86 -0
- package/dist/adapters/fastify.adapter.js.map +1 -1
- package/dist/adapters/index.d.ts +5 -0
- package/dist/adapters/index.d.ts.map +1 -1
- package/dist/adapters/index.js +9 -0
- package/dist/adapters/index.js.map +1 -1
- package/dist/adapters/storage.factory.d.ts +107 -0
- package/dist/adapters/storage.factory.d.ts.map +1 -1
- package/dist/adapters/storage.factory.js +114 -0
- package/dist/adapters/storage.factory.js.map +1 -1
- package/dist/adapters.d.ts +8 -0
- package/dist/adapters.d.ts.map +1 -1
- package/dist/adapters.js +8 -0
- package/dist/adapters.js.map +1 -1
- package/dist/bootstrap.d.ts +82 -0
- package/dist/bootstrap.d.ts.map +1 -1
- package/dist/bootstrap.js +106 -0
- package/dist/bootstrap.js.map +1 -1
- package/dist/dto/admin-set-password.dto.d.ts +90 -0
- package/dist/dto/admin-set-password.dto.d.ts.map +1 -1
- package/dist/dto/admin-set-password.dto.js +91 -0
- package/dist/dto/admin-set-password.dto.js.map +1 -1
- package/dist/dto/auth-challenge.dto.d.ts +170 -0
- package/dist/dto/auth-challenge.dto.d.ts.map +1 -1
- package/dist/dto/auth-challenge.dto.js +170 -0
- package/dist/dto/auth-challenge.dto.js.map +1 -1
- package/dist/dto/auth-response.dto.d.ts +196 -0
- package/dist/dto/auth-response.dto.d.ts.map +1 -1
- package/dist/dto/auth-response.dto.js +149 -0
- package/dist/dto/auth-response.dto.js.map +1 -1
- package/dist/dto/challenge-response.dto.d.ts +155 -0
- package/dist/dto/challenge-response.dto.d.ts.map +1 -1
- package/dist/dto/challenge-response.dto.js +8 -0
- package/dist/dto/challenge-response.dto.js.map +1 -1
- package/dist/dto/change-password-request.dto.d.ts +35 -0
- package/dist/dto/change-password-request.dto.d.ts.map +1 -1
- package/dist/dto/change-password-request.dto.js +35 -0
- package/dist/dto/change-password-request.dto.js.map +1 -1
- package/dist/dto/change-password-response.dto.d.ts +25 -0
- package/dist/dto/change-password-response.dto.d.ts.map +1 -1
- package/dist/dto/change-password-response.dto.js +25 -0
- package/dist/dto/change-password-response.dto.js.map +1 -1
- package/dist/dto/change-password.dto.d.ts +45 -0
- package/dist/dto/change-password.dto.d.ts.map +1 -1
- package/dist/dto/change-password.dto.js +45 -0
- package/dist/dto/change-password.dto.js.map +1 -1
- package/dist/dto/confirm-forgot-password.dto.d.ts +59 -0
- package/dist/dto/confirm-forgot-password.dto.d.ts.map +1 -1
- package/dist/dto/confirm-forgot-password.dto.js +59 -0
- package/dist/dto/confirm-forgot-password.dto.js.map +1 -1
- package/dist/dto/error-response.dto.d.ts +103 -0
- package/dist/dto/error-response.dto.d.ts.map +1 -1
- package/dist/dto/error-response.dto.js +103 -0
- package/dist/dto/error-response.dto.js.map +1 -1
- package/dist/dto/forgot-password.dto.d.ts +58 -0
- package/dist/dto/forgot-password.dto.d.ts.map +1 -1
- package/dist/dto/forgot-password.dto.js +58 -0
- package/dist/dto/forgot-password.dto.js.map +1 -1
- package/dist/dto/get-available-methods.dto.d.ts +37 -0
- package/dist/dto/get-available-methods.dto.d.ts.map +1 -1
- package/dist/dto/get-available-methods.dto.js +37 -0
- package/dist/dto/get-available-methods.dto.js.map +1 -1
- package/dist/dto/get-challenge-data-response.dto.d.ts +24 -0
- package/dist/dto/get-challenge-data-response.dto.d.ts.map +1 -1
- package/dist/dto/get-challenge-data-response.dto.js +24 -0
- package/dist/dto/get-challenge-data-response.dto.js.map +1 -1
- package/dist/dto/get-challenge-data.dto.d.ts +46 -0
- package/dist/dto/get-challenge-data.dto.d.ts.map +1 -1
- package/dist/dto/get-challenge-data.dto.js +46 -0
- package/dist/dto/get-challenge-data.dto.js.map +1 -1
- package/dist/dto/get-client-info.dto.d.ts +74 -0
- package/dist/dto/get-client-info.dto.d.ts.map +1 -1
- package/dist/dto/get-client-info.dto.js +74 -0
- package/dist/dto/get-client-info.dto.js.map +1 -1
- package/dist/dto/get-device-token-response.dto.d.ts +21 -0
- package/dist/dto/get-device-token-response.dto.d.ts.map +1 -1
- package/dist/dto/get-device-token-response.dto.js +21 -0
- package/dist/dto/get-device-token-response.dto.js.map +1 -1
- package/dist/dto/get-events-by-type.dto.d.ts +50 -0
- package/dist/dto/get-events-by-type.dto.d.ts.map +1 -1
- package/dist/dto/get-events-by-type.dto.js +50 -0
- package/dist/dto/get-events-by-type.dto.js.map +1 -1
- package/dist/dto/get-ip-address-response.dto.d.ts +20 -0
- package/dist/dto/get-ip-address-response.dto.d.ts.map +1 -1
- package/dist/dto/get-ip-address-response.dto.js +20 -0
- package/dist/dto/get-ip-address-response.dto.js.map +1 -1
- package/dist/dto/get-mfa-status.dto.d.ts +59 -0
- package/dist/dto/get-mfa-status.dto.d.ts.map +1 -1
- package/dist/dto/get-mfa-status.dto.js +59 -0
- package/dist/dto/get-mfa-status.dto.js.map +1 -1
- package/dist/dto/get-risk-assessment-history.dto.d.ts +28 -0
- package/dist/dto/get-risk-assessment-history.dto.d.ts.map +1 -1
- package/dist/dto/get-risk-assessment-history.dto.js +28 -0
- package/dist/dto/get-risk-assessment-history.dto.js.map +1 -1
- package/dist/dto/get-session-id-response.dto.d.ts +21 -0
- package/dist/dto/get-session-id-response.dto.d.ts.map +1 -1
- package/dist/dto/get-session-id-response.dto.js +21 -0
- package/dist/dto/get-session-id-response.dto.js.map +1 -1
- package/dist/dto/get-setup-data-response.dto.d.ts +27 -0
- package/dist/dto/get-setup-data-response.dto.d.ts.map +1 -1
- package/dist/dto/get-setup-data-response.dto.js +27 -0
- package/dist/dto/get-setup-data-response.dto.js.map +1 -1
- package/dist/dto/get-setup-data.dto.d.ts +51 -0
- package/dist/dto/get-setup-data.dto.d.ts.map +1 -1
- package/dist/dto/get-setup-data.dto.js +51 -0
- package/dist/dto/get-setup-data.dto.js.map +1 -1
- package/dist/dto/get-suspicious-activity.dto.d.ts +31 -0
- package/dist/dto/get-suspicious-activity.dto.d.ts.map +1 -1
- package/dist/dto/get-suspicious-activity.dto.js +31 -0
- package/dist/dto/get-suspicious-activity.dto.js.map +1 -1
- package/dist/dto/get-user-agent-response.dto.d.ts +19 -0
- package/dist/dto/get-user-agent-response.dto.d.ts.map +1 -1
- package/dist/dto/get-user-agent-response.dto.js +19 -0
- package/dist/dto/get-user-agent-response.dto.js.map +1 -1
- package/dist/dto/get-user-auth-history.dto.d.ts +64 -0
- package/dist/dto/get-user-auth-history.dto.d.ts.map +1 -1
- package/dist/dto/get-user-auth-history.dto.js +64 -0
- package/dist/dto/get-user-auth-history.dto.js.map +1 -1
- package/dist/dto/get-user-by-email.dto.d.ts +42 -0
- package/dist/dto/get-user-by-email.dto.d.ts.map +1 -1
- package/dist/dto/get-user-by-email.dto.js +42 -0
- package/dist/dto/get-user-by-email.dto.js.map +1 -1
- package/dist/dto/get-user-by-id.dto.d.ts +32 -0
- package/dist/dto/get-user-by-id.dto.d.ts.map +1 -1
- package/dist/dto/get-user-by-id.dto.js +32 -0
- package/dist/dto/get-user-by-id.dto.js.map +1 -1
- package/dist/dto/get-user-devices.dto.d.ts +34 -0
- package/dist/dto/get-user-devices.dto.d.ts.map +1 -1
- package/dist/dto/get-user-devices.dto.js +34 -0
- package/dist/dto/get-user-devices.dto.js.map +1 -1
- package/dist/dto/get-user-response.dto.d.ts +14 -0
- package/dist/dto/get-user-response.dto.d.ts.map +1 -1
- package/dist/dto/get-user-response.dto.js +15 -0
- package/dist/dto/get-user-response.dto.js.map +1 -1
- package/dist/dto/has-provider.dto.d.ts +33 -0
- package/dist/dto/has-provider.dto.d.ts.map +1 -1
- package/dist/dto/has-provider.dto.js +33 -0
- package/dist/dto/has-provider.dto.js.map +1 -1
- package/dist/dto/index.js +5 -0
- package/dist/dto/index.js.map +1 -1
- package/dist/dto/is-trusted-device-response.dto.d.ts +28 -0
- package/dist/dto/is-trusted-device-response.dto.d.ts.map +1 -1
- package/dist/dto/is-trusted-device-response.dto.js +28 -0
- package/dist/dto/is-trusted-device-response.dto.js.map +1 -1
- package/dist/dto/list-providers-response.dto.d.ts +19 -0
- package/dist/dto/list-providers-response.dto.d.ts.map +1 -1
- package/dist/dto/list-providers-response.dto.js +19 -0
- package/dist/dto/list-providers-response.dto.js.map +1 -1
- package/dist/dto/login.dto.d.ts +48 -0
- package/dist/dto/login.dto.d.ts.map +1 -1
- package/dist/dto/login.dto.js +50 -1
- package/dist/dto/login.dto.js.map +1 -1
- package/dist/dto/logout-all-response.dto.d.ts +20 -0
- package/dist/dto/logout-all-response.dto.d.ts.map +1 -1
- package/dist/dto/logout-all-response.dto.js +20 -0
- package/dist/dto/logout-all-response.dto.js.map +1 -1
- package/dist/dto/logout-all.dto.d.ts +42 -0
- package/dist/dto/logout-all.dto.d.ts.map +1 -1
- package/dist/dto/logout-all.dto.js +42 -0
- package/dist/dto/logout-all.dto.js.map +1 -1
- package/dist/dto/logout-response.dto.d.ts +21 -0
- package/dist/dto/logout-response.dto.d.ts.map +1 -1
- package/dist/dto/logout-response.dto.js +21 -0
- package/dist/dto/logout-response.dto.js.map +1 -1
- package/dist/dto/logout.dto.d.ts +45 -0
- package/dist/dto/logout.dto.d.ts.map +1 -1
- package/dist/dto/logout.dto.js +45 -0
- package/dist/dto/logout.dto.js.map +1 -1
- package/dist/dto/refresh-token.dto.d.ts +28 -0
- package/dist/dto/refresh-token.dto.d.ts.map +1 -1
- package/dist/dto/refresh-token.dto.js +28 -0
- package/dist/dto/refresh-token.dto.js.map +1 -1
- package/dist/dto/remove-devices.dto.d.ts +51 -0
- package/dist/dto/remove-devices.dto.d.ts.map +1 -1
- package/dist/dto/remove-devices.dto.js +51 -0
- package/dist/dto/remove-devices.dto.js.map +1 -1
- package/dist/dto/resend-code-response.dto.d.ts +28 -0
- package/dist/dto/resend-code-response.dto.d.ts.map +1 -1
- package/dist/dto/resend-code-response.dto.js +28 -0
- package/dist/dto/resend-code-response.dto.js.map +1 -1
- package/dist/dto/resend-code.dto.d.ts +37 -0
- package/dist/dto/resend-code.dto.d.ts.map +1 -1
- package/dist/dto/resend-code.dto.js +37 -0
- package/dist/dto/resend-code.dto.js.map +1 -1
- package/dist/dto/reset-password.dto.d.ts +74 -0
- package/dist/dto/reset-password.dto.d.ts.map +1 -1
- package/dist/dto/reset-password.dto.js +76 -1
- package/dist/dto/reset-password.dto.js.map +1 -1
- package/dist/dto/respond-challenge.dto.d.ts +147 -0
- package/dist/dto/respond-challenge.dto.d.ts.map +1 -1
- package/dist/dto/respond-challenge.dto.js +162 -0
- package/dist/dto/respond-challenge.dto.js.map +1 -1
- package/dist/dto/set-mfa-exemption.dto.d.ts +65 -0
- package/dist/dto/set-mfa-exemption.dto.d.ts.map +1 -1
- package/dist/dto/set-mfa-exemption.dto.js +65 -0
- package/dist/dto/set-mfa-exemption.dto.js.map +1 -1
- package/dist/dto/set-must-change-password-response.dto.d.ts +23 -0
- package/dist/dto/set-must-change-password-response.dto.d.ts.map +1 -1
- package/dist/dto/set-must-change-password-response.dto.js +23 -0
- package/dist/dto/set-must-change-password-response.dto.js.map +1 -1
- package/dist/dto/set-must-change-password.dto.d.ts +32 -0
- package/dist/dto/set-must-change-password.dto.d.ts.map +1 -1
- package/dist/dto/set-must-change-password.dto.js +32 -0
- package/dist/dto/set-must-change-password.dto.js.map +1 -1
- package/dist/dto/set-preferred-method.dto.d.ts +48 -0
- package/dist/dto/set-preferred-method.dto.d.ts.map +1 -1
- package/dist/dto/set-preferred-method.dto.js +48 -0
- package/dist/dto/set-preferred-method.dto.js.map +1 -1
- package/dist/dto/setup-mfa.dto.d.ts +62 -0
- package/dist/dto/setup-mfa.dto.d.ts.map +1 -1
- package/dist/dto/setup-mfa.dto.js +62 -0
- package/dist/dto/setup-mfa.dto.js.map +1 -1
- package/dist/dto/signup.dto.d.ts +92 -0
- package/dist/dto/signup.dto.d.ts.map +1 -1
- package/dist/dto/signup.dto.js +93 -0
- package/dist/dto/signup.dto.js.map +1 -1
- package/dist/dto/social-auth.dto.d.ts +234 -0
- package/dist/dto/social-auth.dto.d.ts.map +1 -1
- package/dist/dto/social-auth.dto.js +234 -0
- package/dist/dto/social-auth.dto.js.map +1 -1
- package/dist/dto/trust-device-response.dto.d.ts +26 -0
- package/dist/dto/trust-device-response.dto.d.ts.map +1 -1
- package/dist/dto/trust-device-response.dto.js +26 -0
- package/dist/dto/trust-device-response.dto.js.map +1 -1
- package/dist/dto/trust-device.dto.d.ts +9 -0
- package/dist/dto/trust-device.dto.d.ts.map +1 -1
- package/dist/dto/trust-device.dto.js +9 -0
- package/dist/dto/trust-device.dto.js.map +1 -1
- package/dist/dto/update-user-attributes-request.dto.d.ts +36 -0
- package/dist/dto/update-user-attributes-request.dto.d.ts.map +1 -1
- package/dist/dto/update-user-attributes-request.dto.js +36 -0
- package/dist/dto/update-user-attributes-request.dto.js.map +1 -1
- package/dist/dto/user-response.dto.d.ts +81 -0
- package/dist/dto/user-response.dto.d.ts.map +1 -1
- package/dist/dto/user-response.dto.js +84 -2
- package/dist/dto/user-response.dto.js.map +1 -1
- package/dist/dto/user-update.dto.d.ts +132 -0
- package/dist/dto/user-update.dto.d.ts.map +1 -1
- package/dist/dto/user-update.dto.js +133 -0
- package/dist/dto/user-update.dto.js.map +1 -1
- package/dist/dto/verify-email.dto.d.ts +171 -0
- package/dist/dto/verify-email.dto.d.ts.map +1 -1
- package/dist/dto/verify-email.dto.js +173 -1
- package/dist/dto/verify-email.dto.js.map +1 -1
- package/dist/dto/verify-mfa-code.dto.d.ts +65 -0
- package/dist/dto/verify-mfa-code.dto.d.ts.map +1 -1
- package/dist/dto/verify-mfa-code.dto.js +65 -0
- package/dist/dto/verify-mfa-code.dto.js.map +1 -1
- package/dist/dto/verify-phone-by-sub.dto.d.ts +49 -0
- package/dist/dto/verify-phone-by-sub.dto.d.ts.map +1 -1
- package/dist/dto/verify-phone-by-sub.dto.js +49 -0
- package/dist/dto/verify-phone-by-sub.dto.js.map +1 -1
- package/dist/dto/verify-phone.dto.d.ts +139 -0
- package/dist/dto/verify-phone.dto.d.ts.map +1 -1
- package/dist/dto/verify-phone.dto.js +142 -1
- package/dist/dto/verify-phone.dto.js.map +1 -1
- package/dist/dto.d.ts +10 -0
- package/dist/dto.d.ts.map +1 -1
- package/dist/dto.js +10 -0
- package/dist/dto.js.map +1 -1
- package/dist/entities/auth-audit.entity.d.ts +159 -0
- package/dist/entities/auth-audit.entity.d.ts.map +1 -1
- package/dist/entities/auth-audit.entity.js +166 -0
- package/dist/entities/auth-audit.entity.js.map +1 -1
- package/dist/entities/challenge-session.entity.d.ts +87 -0
- package/dist/entities/challenge-session.entity.d.ts.map +1 -1
- package/dist/entities/challenge-session.entity.js +87 -0
- package/dist/entities/challenge-session.entity.js.map +1 -1
- package/dist/entities/index.d.ts +18 -0
- package/dist/entities/index.d.ts.map +1 -1
- package/dist/entities/index.js +18 -0
- package/dist/entities/index.js.map +1 -1
- package/dist/entities/login-attempt.entity.d.ts +43 -0
- package/dist/entities/login-attempt.entity.d.ts.map +1 -1
- package/dist/entities/login-attempt.entity.js +43 -0
- package/dist/entities/login-attempt.entity.js.map +1 -1
- package/dist/entities/mfa-device.entity.d.ts +112 -0
- package/dist/entities/mfa-device.entity.d.ts.map +1 -1
- package/dist/entities/mfa-device.entity.js +112 -0
- package/dist/entities/mfa-device.entity.js.map +1 -1
- package/dist/entities/rate-limit.entity.d.ts +31 -0
- package/dist/entities/rate-limit.entity.d.ts.map +1 -1
- package/dist/entities/rate-limit.entity.js +31 -0
- package/dist/entities/rate-limit.entity.js.map +1 -1
- package/dist/entities/session.entity.d.ts +121 -0
- package/dist/entities/session.entity.d.ts.map +1 -1
- package/dist/entities/session.entity.js +121 -0
- package/dist/entities/session.entity.js.map +1 -1
- package/dist/entities/social-account.entity.d.ts +75 -0
- package/dist/entities/social-account.entity.d.ts.map +1 -1
- package/dist/entities/social-account.entity.js +75 -0
- package/dist/entities/social-account.entity.js.map +1 -1
- package/dist/entities/storage-lock.entity.d.ts +28 -0
- package/dist/entities/storage-lock.entity.d.ts.map +1 -1
- package/dist/entities/storage-lock.entity.js +28 -0
- package/dist/entities/storage-lock.entity.js.map +1 -1
- package/dist/entities/trusted-device.entity.d.ts +83 -0
- package/dist/entities/trusted-device.entity.d.ts.map +1 -1
- package/dist/entities/trusted-device.entity.js +83 -0
- package/dist/entities/trusted-device.entity.js.map +1 -1
- package/dist/entities/user.entity.d.ts +166 -0
- package/dist/entities/user.entity.d.ts.map +1 -1
- package/dist/entities/user.entity.js +166 -0
- package/dist/entities/user.entity.js.map +1 -1
- package/dist/entities/verification-token.entity.d.ts +102 -0
- package/dist/entities/verification-token.entity.d.ts.map +1 -1
- package/dist/entities/verification-token.entity.js +102 -0
- package/dist/entities/verification-token.entity.js.map +1 -1
- package/dist/entities.d.ts +8 -0
- package/dist/entities.d.ts.map +1 -1
- package/dist/entities.js +8 -0
- package/dist/entities.js.map +1 -1
- package/dist/enums/auth-audit-event-type.enum.d.ts +211 -0
- package/dist/enums/auth-audit-event-type.enum.d.ts.map +1 -1
- package/dist/enums/auth-audit-event-type.enum.js +244 -0
- package/dist/enums/auth-audit-event-type.enum.js.map +1 -1
- package/dist/enums/error-codes.enum.d.ts +296 -0
- package/dist/enums/error-codes.enum.d.ts.map +1 -1
- package/dist/enums/error-codes.enum.js +332 -0
- package/dist/enums/error-codes.enum.js.map +1 -1
- package/dist/enums/mfa-method.enum.d.ts +74 -0
- package/dist/enums/mfa-method.enum.d.ts.map +1 -1
- package/dist/enums/mfa-method.enum.js +64 -0
- package/dist/enums/mfa-method.enum.js.map +1 -1
- package/dist/enums/risk-factor.enum.d.ts +91 -0
- package/dist/enums/risk-factor.enum.d.ts.map +1 -1
- package/dist/enums/risk-factor.enum.js +97 -0
- package/dist/enums/risk-factor.enum.js.map +1 -1
- package/dist/exceptions/nauth.exception.d.ts +149 -0
- package/dist/exceptions/nauth.exception.d.ts.map +1 -1
- package/dist/exceptions/nauth.exception.js +159 -0
- package/dist/exceptions/nauth.exception.js.map +1 -1
- package/dist/handlers/auth.handler.d.ts +32 -0
- package/dist/handlers/auth.handler.d.ts.map +1 -1
- package/dist/handlers/auth.handler.js +47 -1
- package/dist/handlers/auth.handler.js.map +1 -1
- package/dist/handlers/client-info.handler.d.ts +25 -0
- package/dist/handlers/client-info.handler.d.ts.map +1 -1
- package/dist/handlers/client-info.handler.js +36 -2
- package/dist/handlers/client-info.handler.js.map +1 -1
- package/dist/handlers/csrf.handler.d.ts +32 -0
- package/dist/handlers/csrf.handler.d.ts.map +1 -1
- package/dist/handlers/csrf.handler.js +49 -1
- package/dist/handlers/csrf.handler.js.map +1 -1
- package/dist/handlers/token-delivery.handler.d.ts +16 -0
- package/dist/handlers/token-delivery.handler.d.ts.map +1 -1
- package/dist/handlers/token-delivery.handler.js +22 -1
- package/dist/handlers/token-delivery.handler.js.map +1 -1
- package/dist/index.d.ts +34 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +67 -0
- package/dist/index.js.map +1 -1
- package/dist/interfaces/client-info.interface.d.ts +58 -0
- package/dist/interfaces/client-info.interface.d.ts.map +1 -1
- package/dist/interfaces/config.interface.d.ts +1774 -0
- package/dist/interfaces/config.interface.d.ts.map +1 -1
- package/dist/interfaces/config.interface.js +16 -0
- package/dist/interfaces/config.interface.js.map +1 -1
- package/dist/interfaces/entities.interface.d.ts +48 -0
- package/dist/interfaces/entities.interface.d.ts.map +1 -1
- package/dist/interfaces/entities.interface.js +8 -0
- package/dist/interfaces/entities.interface.js.map +1 -1
- package/dist/interfaces/index.js +5 -0
- package/dist/interfaces/index.js.map +1 -1
- package/dist/interfaces/logger.interface.d.ts +213 -0
- package/dist/interfaces/logger.interface.d.ts.map +1 -1
- package/dist/interfaces/logger.interface.js +35 -0
- package/dist/interfaces/logger.interface.js.map +1 -1
- package/dist/interfaces/mfa-provider.interface.d.ts +134 -0
- package/dist/interfaces/mfa-provider.interface.d.ts.map +1 -1
- package/dist/interfaces/oauth.interface.d.ts +110 -0
- package/dist/interfaces/oauth.interface.d.ts.map +1 -1
- package/dist/interfaces/provider.interface.d.ts +83 -0
- package/dist/interfaces/provider.interface.d.ts.map +1 -1
- package/dist/interfaces/sms-template.interface.d.ts +246 -0
- package/dist/interfaces/sms-template.interface.d.ts.map +1 -1
- package/dist/interfaces/sms-template.interface.js +26 -0
- package/dist/interfaces/sms-template.interface.js.map +1 -1
- package/dist/interfaces/social-auth-provider.interface.d.ts +115 -0
- package/dist/interfaces/social-auth-provider.interface.d.ts.map +1 -1
- package/dist/interfaces/storage-adapter.interface.d.ts +37 -0
- package/dist/interfaces/storage-adapter.interface.d.ts.map +1 -1
- package/dist/interfaces/template.interface.d.ts +351 -0
- package/dist/interfaces/template.interface.d.ts.map +1 -1
- package/dist/interfaces/template.interface.js +13 -0
- package/dist/interfaces/template.interface.js.map +1 -1
- package/dist/interfaces/token-verifier.interface.d.ts +101 -0
- package/dist/interfaces/token-verifier.interface.d.ts.map +1 -1
- package/dist/interfaces.d.ts +8 -0
- package/dist/interfaces.d.ts.map +1 -1
- package/dist/interfaces.js +8 -0
- package/dist/interfaces.js.map +1 -1
- package/dist/internal.d.ts +120 -0
- package/dist/internal.d.ts.map +1 -1
- package/dist/internal.js +138 -0
- package/dist/internal.js.map +1 -1
- package/dist/platform/interfaces.d.ts +187 -0
- package/dist/platform/interfaces.d.ts.map +1 -1
- package/dist/platform/interfaces.js +11 -0
- package/dist/platform/interfaces.js.map +1 -1
- package/dist/schemas/auth-config.schema.d.ts +48 -0
- package/dist/schemas/auth-config.schema.d.ts.map +1 -1
- package/dist/schemas/auth-config.schema.js +188 -9
- package/dist/schemas/auth-config.schema.js.map +1 -1
- package/dist/services/adaptive-mfa-decision.service.d.ts +144 -0
- package/dist/services/adaptive-mfa-decision.service.d.ts.map +1 -1
- package/dist/services/adaptive-mfa-decision.service.js +151 -5
- package/dist/services/adaptive-mfa-decision.service.js.map +1 -1
- package/dist/services/auth-audit.service.d.ts +195 -0
- package/dist/services/auth-audit.service.d.ts.map +1 -1
- package/dist/services/auth-audit.service.js +228 -1
- package/dist/services/auth-audit.service.js.map +1 -1
- package/dist/services/auth-challenge-helper.service.d.ts +144 -1
- package/dist/services/auth-challenge-helper.service.d.ts.map +1 -1
- package/dist/services/auth-challenge-helper.service.js +295 -16
- package/dist/services/auth-challenge-helper.service.js.map +1 -1
- package/dist/services/auth-flow-context-builder.service.d.ts +120 -1
- package/dist/services/auth-flow-context-builder.service.d.ts.map +1 -1
- package/dist/services/auth-flow-context-builder.service.js +184 -5
- package/dist/services/auth-flow-context-builder.service.js.map +1 -1
- package/dist/services/auth-flow-rules.d.ts +136 -0
- package/dist/services/auth-flow-rules.d.ts.map +1 -1
- package/dist/services/auth-flow-rules.js +137 -0
- package/dist/services/auth-flow-rules.js.map +1 -1
- package/dist/services/auth-flow-state-definitions.d.ts +40 -0
- package/dist/services/auth-flow-state-definitions.d.ts.map +1 -1
- package/dist/services/auth-flow-state-definitions.js +98 -0
- package/dist/services/auth-flow-state-definitions.js.map +1 -1
- package/dist/services/auth-flow-state-machine.service.d.ts +91 -0
- package/dist/services/auth-flow-state-machine.service.d.ts.map +1 -1
- package/dist/services/auth-flow-state-machine.service.js +102 -0
- package/dist/services/auth-flow-state-machine.service.js.map +1 -1
- package/dist/services/auth-flow-state-machine.types.d.ts +221 -0
- package/dist/services/auth-flow-state-machine.types.d.ts.map +1 -1
- package/dist/services/auth-flow-state-machine.types.js +47 -0
- package/dist/services/auth-flow-state-machine.types.js.map +1 -1
- package/dist/services/auth.service.d.ts +397 -1
- package/dist/services/auth.service.d.ts.map +1 -1
- package/dist/services/auth.service.js +943 -27
- package/dist/services/auth.service.js.map +1 -1
- package/dist/services/challenge.service.d.ts +255 -1
- package/dist/services/challenge.service.d.ts.map +1 -1
- package/dist/services/challenge.service.js +327 -3
- package/dist/services/challenge.service.js.map +1 -1
- package/dist/services/client-info.service.d.ts +143 -0
- package/dist/services/client-info.service.d.ts.map +1 -1
- package/dist/services/client-info.service.js +161 -0
- package/dist/services/client-info.service.js.map +1 -1
- package/dist/services/csrf.service.d.ts +15 -0
- package/dist/services/csrf.service.d.ts.map +1 -1
- package/dist/services/csrf.service.js +16 -0
- package/dist/services/csrf.service.js.map +1 -1
- package/dist/services/email-verification.service.d.ts +52 -0
- package/dist/services/email-verification.service.d.ts.map +1 -1
- package/dist/services/email-verification.service.js +149 -10
- package/dist/services/email-verification.service.js.map +1 -1
- package/dist/services/geo-location.service.d.ts +105 -0
- package/dist/services/geo-location.service.d.ts.map +1 -1
- package/dist/services/geo-location.service.js +188 -2
- package/dist/services/geo-location.service.js.map +1 -1
- package/dist/services/jwt.service.d.ts +257 -0
- package/dist/services/jwt.service.d.ts.map +1 -1
- package/dist/services/jwt.service.js +284 -1
- package/dist/services/jwt.service.js.map +1 -1
- package/dist/services/mfa-base.service.d.ts +179 -1
- package/dist/services/mfa-base.service.d.ts.map +1 -1
- package/dist/services/mfa-base.service.js +256 -2
- package/dist/services/mfa-base.service.js.map +1 -1
- package/dist/services/mfa.service.d.ts +304 -0
- package/dist/services/mfa.service.d.ts.map +1 -1
- package/dist/services/mfa.service.js +380 -0
- package/dist/services/mfa.service.js.map +1 -1
- package/dist/services/password-reset.service.d.ts +46 -0
- package/dist/services/password-reset.service.d.ts.map +1 -1
- package/dist/services/password-reset.service.js +79 -0
- package/dist/services/password-reset.service.js.map +1 -1
- package/dist/services/password.service.d.ts +139 -0
- package/dist/services/password.service.d.ts.map +1 -1
- package/dist/services/password.service.js +167 -9
- package/dist/services/password.service.js.map +1 -1
- package/dist/services/phone-verification.service.d.ts +75 -0
- package/dist/services/phone-verification.service.d.ts.map +1 -1
- package/dist/services/phone-verification.service.js +188 -6
- package/dist/services/phone-verification.service.js.map +1 -1
- package/dist/services/risk-detection.service.d.ts +198 -0
- package/dist/services/risk-detection.service.d.ts.map +1 -1
- package/dist/services/risk-detection.service.js +358 -11
- package/dist/services/risk-detection.service.js.map +1 -1
- package/dist/services/risk-scoring.service.d.ts +84 -0
- package/dist/services/risk-scoring.service.d.ts.map +1 -1
- package/dist/services/risk-scoring.service.js +87 -0
- package/dist/services/risk-scoring.service.js.map +1 -1
- package/dist/services/session.service.d.ts +204 -0
- package/dist/services/session.service.d.ts.map +1 -1
- package/dist/services/session.service.js +289 -4
- package/dist/services/session.service.js.map +1 -1
- package/dist/services/social-auth-base.service.d.ts +123 -1
- package/dist/services/social-auth-base.service.d.ts.map +1 -1
- package/dist/services/social-auth-base.service.js +155 -2
- package/dist/services/social-auth-base.service.js.map +1 -1
- package/dist/services/social-auth.service.d.ts +191 -0
- package/dist/services/social-auth.service.d.ts.map +1 -1
- package/dist/services/social-auth.service.js +215 -2
- package/dist/services/social-auth.service.js.map +1 -1
- package/dist/services/social-provider-registry.service.d.ts +86 -0
- package/dist/services/social-provider-registry.service.d.ts.map +1 -1
- package/dist/services/social-provider-registry.service.js +86 -0
- package/dist/services/social-provider-registry.service.js.map +1 -1
- package/dist/services/trusted-device.service.d.ts +105 -0
- package/dist/services/trusted-device.service.d.ts.map +1 -1
- package/dist/services/trusted-device.service.js +133 -4
- package/dist/services/trusted-device.service.js.map +1 -1
- package/dist/storage/account-lockout-storage.service.d.ts +35 -0
- package/dist/storage/account-lockout-storage.service.d.ts.map +1 -1
- package/dist/storage/account-lockout-storage.service.js +35 -0
- package/dist/storage/account-lockout-storage.service.js.map +1 -1
- package/dist/storage/memory-storage.adapter.d.ts +148 -0
- package/dist/storage/memory-storage.adapter.d.ts.map +1 -1
- package/dist/storage/memory-storage.adapter.js +201 -6
- package/dist/storage/memory-storage.adapter.js.map +1 -1
- package/dist/storage/rate-limit-storage.service.d.ts +3 -0
- package/dist/storage/rate-limit-storage.service.d.ts.map +1 -1
- package/dist/storage/rate-limit-storage.service.js +4 -0
- package/dist/storage/rate-limit-storage.service.js.map +1 -1
- package/dist/storage.d.ts +8 -0
- package/dist/storage.d.ts.map +1 -1
- package/dist/storage.js +8 -0
- package/dist/storage.js.map +1 -1
- package/dist/templates/html-template.engine.d.ts +110 -0
- package/dist/templates/html-template.engine.d.ts.map +1 -1
- package/dist/templates/html-template.engine.js +147 -0
- package/dist/templates/html-template.engine.js.map +1 -1
- package/dist/templates/index.d.ts +5 -0
- package/dist/templates/index.d.ts.map +1 -1
- package/dist/templates/index.js +5 -0
- package/dist/templates/index.js.map +1 -1
- package/dist/templates/sms-template.engine.d.ts +151 -0
- package/dist/templates/sms-template.engine.d.ts.map +1 -1
- package/dist/templates/sms-template.engine.js +171 -0
- package/dist/templates/sms-template.engine.js.map +1 -1
- package/dist/templates.d.ts +8 -0
- package/dist/templates.d.ts.map +1 -1
- package/dist/templates.js +8 -0
- package/dist/templates.js.map +1 -1
- package/dist/utils/common-passwords.d.ts +42 -0
- package/dist/utils/common-passwords.d.ts.map +1 -1
- package/dist/utils/common-passwords.js +88 -0
- package/dist/utils/common-passwords.js.map +1 -1
- package/dist/utils/context-storage.d.ts +129 -0
- package/dist/utils/context-storage.d.ts.map +1 -1
- package/dist/utils/context-storage.js +129 -0
- package/dist/utils/context-storage.js.map +1 -1
- package/dist/utils/cookie-names.util.d.ts +35 -0
- package/dist/utils/cookie-names.util.d.ts.map +1 -1
- package/dist/utils/cookie-names.util.js +37 -0
- package/dist/utils/cookie-names.util.js.map +1 -1
- package/dist/utils/cookies.util.d.ts +19 -0
- package/dist/utils/cookies.util.d.ts.map +1 -1
- package/dist/utils/cookies.util.js +30 -3
- package/dist/utils/cookies.util.js.map +1 -1
- package/dist/utils/index.d.ts +3 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +4 -0
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/ip-extractor.d.ts +88 -0
- package/dist/utils/ip-extractor.d.ts.map +1 -1
- package/dist/utils/ip-extractor.js +109 -16
- package/dist/utils/ip-extractor.js.map +1 -1
- package/dist/utils/nauth-logger.d.ts +70 -0
- package/dist/utils/nauth-logger.d.ts.map +1 -1
- package/dist/utils/nauth-logger.js +82 -4
- package/dist/utils/nauth-logger.js.map +1 -1
- package/dist/utils/pii-redactor.d.ts +70 -0
- package/dist/utils/pii-redactor.d.ts.map +1 -1
- package/dist/utils/pii-redactor.js +102 -0
- package/dist/utils/pii-redactor.js.map +1 -1
- package/dist/utils/setup/get-repositories.d.ts +16 -0
- package/dist/utils/setup/get-repositories.d.ts.map +1 -1
- package/dist/utils/setup/get-repositories.js +21 -0
- package/dist/utils/setup/get-repositories.js.map +1 -1
- package/dist/utils/setup/init-services.d.ts +40 -1
- package/dist/utils/setup/init-services.d.ts.map +1 -1
- package/dist/utils/setup/init-services.js +98 -0
- package/dist/utils/setup/init-services.js.map +1 -1
- package/dist/utils/setup/init-social.d.ts +27 -0
- package/dist/utils/setup/init-social.d.ts.map +1 -1
- package/dist/utils/setup/init-social.js +49 -0
- package/dist/utils/setup/init-social.js.map +1 -1
- package/dist/utils/setup/init-storage.d.ts +22 -0
- package/dist/utils/setup/init-storage.d.ts.map +1 -1
- package/dist/utils/setup/init-storage.js +36 -0
- package/dist/utils/setup/init-storage.js.map +1 -1
- package/dist/utils/setup/register-mfa.d.ts +22 -0
- package/dist/utils/setup/register-mfa.d.ts.map +1 -1
- package/dist/utils/setup/register-mfa.js +41 -0
- package/dist/utils/setup/register-mfa.js.map +1 -1
- package/dist/utils/setup/run-nauth-migrations.d.ts +7 -0
- package/dist/utils/setup/run-nauth-migrations.d.ts.map +1 -1
- package/dist/utils/setup/run-nauth-migrations.js +8 -0
- package/dist/utils/setup/run-nauth-migrations.js.map +1 -1
- package/dist/utils/token-delivery-policy.d.ts +17 -0
- package/dist/utils/token-delivery-policy.d.ts.map +1 -1
- package/dist/utils/token-delivery-policy.js +17 -0
- package/dist/utils/token-delivery-policy.js.map +1 -1
- package/dist/utils.d.ts +8 -0
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +8 -0
- package/dist/utils.js.map +1 -1
- package/dist/validators/template.validator.d.ts +80 -0
- package/dist/validators/template.validator.d.ts.map +1 -1
- package/dist/validators/template.validator.js +94 -0
- package/dist/validators/template.validator.js.map +1 -1
- package/package.json +7 -2
|
@@ -10,6 +10,13 @@ import { GetUserAuthHistoryDTO, GetUserAuthHistoryResponseDTO } from '../dto/get
|
|
|
10
10
|
import { GetEventsByTypeDTO, GetEventsByTypeResponseDTO } from '../dto/get-events-by-type.dto';
|
|
11
11
|
import { GetSuspiciousActivityDTO, GetSuspiciousActivityResponseDTO } from '../dto/get-suspicious-activity.dto';
|
|
12
12
|
import { GetRiskAssessmentHistoryDTO, GetRiskAssessmentHistoryResponseDTO } from '../dto/get-risk-assessment-history.dto';
|
|
13
|
+
/**
|
|
14
|
+
* DTO for creating audit events
|
|
15
|
+
*
|
|
16
|
+
* @internal
|
|
17
|
+
* This DTO is only used by InternalAuthAuditService and should not be exposed
|
|
18
|
+
* to consumer applications.
|
|
19
|
+
*/
|
|
13
20
|
export interface CreateAuthAuditEventDTO {
|
|
14
21
|
userId?: number;
|
|
15
22
|
userSub?: string;
|
|
@@ -27,18 +34,206 @@ export interface CreateAuthAuditEventDTO {
|
|
|
27
34
|
description?: string | null;
|
|
28
35
|
metadata?: Record<string, unknown> | null;
|
|
29
36
|
}
|
|
37
|
+
/**
|
|
38
|
+
* Authentication Audit Service (Base Class - Public API)
|
|
39
|
+
*
|
|
40
|
+
* Manages audit trail queries for authentication and security events.
|
|
41
|
+
* Provides query capabilities for retrieving audit history.
|
|
42
|
+
*
|
|
43
|
+
* **Key Features:**
|
|
44
|
+
* - Efficient queries using userId (internal integer ID)
|
|
45
|
+
* - Pagination support for large datasets
|
|
46
|
+
* - Query filtering by event type, status, date ranges
|
|
47
|
+
* - User history queries (resolves userSub to userId automatically)
|
|
48
|
+
*
|
|
49
|
+
* **Design Notes:**
|
|
50
|
+
* - Only stores `userId` (integer) - no userSub duplication
|
|
51
|
+
* - All methods accepting userSub resolve to userId before querying
|
|
52
|
+
* - Risk tracking fields are infrastructure for future adaptive MFA (no business logic)
|
|
53
|
+
*
|
|
54
|
+
* **Note:** This is the public API class. Event recording is handled internally
|
|
55
|
+
* by `InternalAuthAuditService` and is not exposed to consumer applications.
|
|
56
|
+
*
|
|
57
|
+
* @example
|
|
58
|
+
* ```typescript
|
|
59
|
+
* // Get user history (accepts userSub, resolves to userId)
|
|
60
|
+
* const history = await auditService.getUserAuthHistory({
|
|
61
|
+
* userSub: 'user-uuid',
|
|
62
|
+
* page: 1,
|
|
63
|
+
* limit: 50,
|
|
64
|
+
* startDate: new Date('2025-01-01'),
|
|
65
|
+
* });
|
|
66
|
+
* ```
|
|
67
|
+
*/
|
|
30
68
|
export declare class AuthAuditService {
|
|
31
69
|
protected readonly auditRepository: Repository<BaseAuthAudit>;
|
|
32
70
|
protected readonly userRepository: Repository<BaseUser>;
|
|
33
71
|
protected readonly logger: NAuthLogger;
|
|
34
72
|
protected readonly clientInfoService?: ClientInfoService | undefined;
|
|
35
73
|
constructor(auditRepository: Repository<BaseAuthAudit>, userRepository: Repository<BaseUser>, logger: NAuthLogger, clientInfoService?: ClientInfoService | undefined);
|
|
74
|
+
/**
|
|
75
|
+
* Get paginated authentication history for a user
|
|
76
|
+
*
|
|
77
|
+
* Accepts userSub (external identifier) and resolves to userId for efficient queries.
|
|
78
|
+
* Supports filtering by event types, status, and date ranges.
|
|
79
|
+
*
|
|
80
|
+
* @param request - Request DTO containing userSub and filtering options
|
|
81
|
+
* @returns Response DTO with paginated audit records
|
|
82
|
+
* @throws {NAuthException} If user not found
|
|
83
|
+
*
|
|
84
|
+
* @example
|
|
85
|
+
* ```typescript
|
|
86
|
+
* const history = await auditService.getUserAuthHistory({
|
|
87
|
+
* userSub: 'user-uuid',
|
|
88
|
+
* page: 1,
|
|
89
|
+
* limit: 50,
|
|
90
|
+
* eventTypes: [AuthAuditEventType.LOGIN_SUCCESS, AuthAuditEventType.LOGIN_FAILED],
|
|
91
|
+
* startDate: new Date('2025-01-01'),
|
|
92
|
+
* });
|
|
93
|
+
* ```
|
|
94
|
+
*/
|
|
36
95
|
getUserAuthHistory(request: GetUserAuthHistoryDTO): Promise<GetUserAuthHistoryResponseDTO>;
|
|
96
|
+
/**
|
|
97
|
+
* Get events by type with pagination
|
|
98
|
+
*
|
|
99
|
+
* @param request - Request DTO containing eventType and pagination options
|
|
100
|
+
* @returns Response DTO with paginated audit records
|
|
101
|
+
*
|
|
102
|
+
* @example
|
|
103
|
+
* ```typescript
|
|
104
|
+
* const events = await auditService.getEventsByType({
|
|
105
|
+
* eventType: AuthAuditEventType.SUSPICIOUS_ACTIVITY,
|
|
106
|
+
* page: 1,
|
|
107
|
+
* limit: 100,
|
|
108
|
+
* });
|
|
109
|
+
* ```
|
|
110
|
+
*/
|
|
37
111
|
getEventsByType(request: GetEventsByTypeDTO): Promise<GetEventsByTypeResponseDTO>;
|
|
112
|
+
/**
|
|
113
|
+
* Get suspicious activity events
|
|
114
|
+
*
|
|
115
|
+
* Returns events with SUSPICIOUS status or SUSPICIOUS_ACTIVITY event type.
|
|
116
|
+
*
|
|
117
|
+
* @param request - Request DTO containing optional userSub and limit
|
|
118
|
+
* @returns Response DTO with array of suspicious audit events
|
|
119
|
+
*
|
|
120
|
+
* @example
|
|
121
|
+
* ```typescript
|
|
122
|
+
* // Get all suspicious activity
|
|
123
|
+
* const suspicious = await auditService.getSuspiciousActivity({});
|
|
124
|
+
*
|
|
125
|
+
* // Get suspicious activity for specific user
|
|
126
|
+
* const userSuspicious = await auditService.getSuspiciousActivity({
|
|
127
|
+
* userSub: 'user-uuid',
|
|
128
|
+
* limit: 50,
|
|
129
|
+
* });
|
|
130
|
+
* ```
|
|
131
|
+
*/
|
|
38
132
|
getSuspiciousActivity(request: GetSuspiciousActivityDTO): Promise<GetSuspiciousActivityResponseDTO>;
|
|
133
|
+
/**
|
|
134
|
+
* Get risk assessment history for adaptive MFA analysis
|
|
135
|
+
*
|
|
136
|
+
* Returns events where risk assessment was performed (ADAPTIVE_MFA_RISK_ASSESSED,
|
|
137
|
+
* ADAPTIVE_MFA_TRIGGERED, ADAPTIVE_MFA_BYPASSED).
|
|
138
|
+
*
|
|
139
|
+
* @param request - Request DTO containing userSub and limit
|
|
140
|
+
* @returns Response DTO with array of risk assessment audit events
|
|
141
|
+
* @throws {NAuthException} If user not found
|
|
142
|
+
*
|
|
143
|
+
* @example
|
|
144
|
+
* ```typescript
|
|
145
|
+
* const riskHistory = await auditService.getRiskAssessmentHistory({
|
|
146
|
+
* userSub: 'user-uuid',
|
|
147
|
+
* limit: 50,
|
|
148
|
+
* });
|
|
149
|
+
* ```
|
|
150
|
+
*/
|
|
39
151
|
getRiskAssessmentHistory(request: GetRiskAssessmentHistoryDTO): Promise<GetRiskAssessmentHistoryResponseDTO>;
|
|
40
152
|
}
|
|
153
|
+
/**
|
|
154
|
+
* Internal Authentication Audit Service
|
|
155
|
+
*
|
|
156
|
+
* Extends the base AuthAuditService with event recording capabilities.
|
|
157
|
+
* This service is only available via `@nauth-toolkit/core/internal` and should
|
|
158
|
+
* NOT be used by consumer applications.
|
|
159
|
+
*
|
|
160
|
+
* **Event Recording:**
|
|
161
|
+
* The `recordEvent()` method is internal-only and is used by nauth-toolkit
|
|
162
|
+
* services to log authentication events. Consumer applications should use
|
|
163
|
+
* the query methods from the base `AuthAuditService` class.
|
|
164
|
+
*
|
|
165
|
+
* @internal
|
|
166
|
+
* This class is only exported from `@nauth-toolkit/core/internal` for use
|
|
167
|
+
* by framework adapters. Consumer applications should use the base
|
|
168
|
+
* `AuthAuditService` from `@nauth-toolkit/core`.
|
|
169
|
+
*
|
|
170
|
+
* @example
|
|
171
|
+
* ```typescript
|
|
172
|
+
* // Framework adapter usage
|
|
173
|
+
* import { AuthAuditService } from '@nauth-toolkit/core/internal';
|
|
174
|
+
*
|
|
175
|
+
* const auditService = new AuthAuditService(...);
|
|
176
|
+
* // Can use recordEvent() here (internal only)
|
|
177
|
+
* await auditService.recordEvent({ ... });
|
|
178
|
+
* ```
|
|
179
|
+
*/
|
|
41
180
|
export declare class InternalAuthAuditService extends AuthAuditService {
|
|
181
|
+
/**
|
|
182
|
+
* Record an authentication audit event
|
|
183
|
+
*
|
|
184
|
+
* Creates an audit record for an authentication or security event.
|
|
185
|
+
* Automatically extracts client information from request context when available.
|
|
186
|
+
* This method is non-blocking - errors are logged but don't throw exceptions.
|
|
187
|
+
*
|
|
188
|
+
* **Automatic Client Info Extraction:**
|
|
189
|
+
* When ClientInfoService is available, the following fields are automatically populated:
|
|
190
|
+
* - ipAddress, ipCountry, ipCity (from request and geolocation)
|
|
191
|
+
* - userAgent, platform, browser (from user agent parsing)
|
|
192
|
+
* - deviceId, deviceName, deviceType (from request context)
|
|
193
|
+
*
|
|
194
|
+
* Note: These fields cannot be overridden via the DTO - they are always captured from the request context.
|
|
195
|
+
* Only deviceId can be explicitly set for special cases (e.g., newly created device tokens).
|
|
196
|
+
* Do not include ipAddress, ipCountry, ipCity, userAgent, platform, browser, deviceName, or deviceType
|
|
197
|
+
* in the DTO - they will be automatically captured and attempts to include them will cause TypeScript errors.
|
|
198
|
+
*
|
|
199
|
+
* **Automatic performedBy Population:**
|
|
200
|
+
* The `performedBy` field is automatically populated from the authenticated user's context:
|
|
201
|
+
* - If userId is available from ClientInfoService (extracted from JWT token by interceptors/handlers), it is used as `performedBy`
|
|
202
|
+
* - This captures who performed the action (e.g., admin performing action on another user)
|
|
203
|
+
* - If no userId is found in client info, `performedBy` defaults to the event's `userId` (user performing action on themselves)
|
|
204
|
+
* - Explicit `performedBy` in DTO overrides automatic population
|
|
205
|
+
*
|
|
206
|
+
* @internal
|
|
207
|
+
* This method is only available in InternalAuthAuditService and should not
|
|
208
|
+
* be exposed to consumer applications.
|
|
209
|
+
*
|
|
210
|
+
* @param data - Audit event data (only event-specific fields needed)
|
|
211
|
+
* @param data.userId - Internal user ID (preferred, more efficient)
|
|
212
|
+
* @param data.userSub - External user identifier (will lookup userId if userId not provided)
|
|
213
|
+
* @param data.eventType - Type of event
|
|
214
|
+
* @param data.eventStatus - Event classification status
|
|
215
|
+
* @returns Created audit record
|
|
216
|
+
*
|
|
217
|
+
* @example
|
|
218
|
+
* ```typescript
|
|
219
|
+
* // Simple recording - client info auto-populated
|
|
220
|
+
* await auditService.recordEvent({
|
|
221
|
+
* userId: user.id,
|
|
222
|
+
* eventType: AuthAuditEventType.LOGIN_SUCCESS,
|
|
223
|
+
* eventStatus: 'SUCCESS',
|
|
224
|
+
* authMethod: 'password',
|
|
225
|
+
* // ipAddress, userAgent, deviceName, etc. automatically included!
|
|
226
|
+
* });
|
|
227
|
+
*
|
|
228
|
+
* // Override specific fields if needed
|
|
229
|
+
* await auditService.recordEvent({
|
|
230
|
+
* userId: user.id,
|
|
231
|
+
* eventType: AuthAuditEventType.LOGIN_SUCCESS,
|
|
232
|
+
* eventStatus: 'SUCCESS',
|
|
233
|
+
* // ipAddress, userAgent, etc. automatically captured from request context
|
|
234
|
+
* });
|
|
235
|
+
* ```
|
|
236
|
+
*/
|
|
42
237
|
recordEvent(data: CreateAuthAuditEventDTO): Promise<IAuthAudit | null>;
|
|
43
238
|
}
|
|
44
239
|
//# sourceMappingURL=auth-audit.service.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth-audit.service.d.ts","sourceRoot":"","sources":["../../src/services/auth-audit.service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,EAAE,UAAU,EAAS,MAAM,kCAAkC,CAAC;AACrE,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AACzE,OAAO,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAGpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,qBAAqB,EAAE,6BAA6B,EAAE,MAAM,kCAAkC,CAAC;AACxG,OAAO,EAAE,kBAAkB,EAAE,0BAA0B,EAAE,MAAM,+BAA+B,CAAC;AAC/F,OAAO,EAAE,wBAAwB,EAAE,gCAAgC,EAAE,MAAM,oCAAoC,CAAC;AAChH,OAAO,EACL,2BAA2B,EAC3B,mCAAmC,EACpC,MAAM,wCAAwC,CAAC;
|
|
1
|
+
{"version":3,"file":"auth-audit.service.d.ts","sourceRoot":"","sources":["../../src/services/auth-audit.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,6 +8,37 @@ const get_user_auth_history_dto_1 = require("../dto/get-user-auth-history.dto");
|
|
|
8
8
|
const get_events_by_type_dto_1 = require("../dto/get-events-by-type.dto");
|
|
9
9
|
const get_suspicious_activity_dto_1 = require("../dto/get-suspicious-activity.dto");
|
|
10
10
|
const get_risk_assessment_history_dto_1 = require("../dto/get-risk-assessment-history.dto");
|
|
11
|
+
/**
|
|
12
|
+
* Authentication Audit Service (Base Class - Public API)
|
|
13
|
+
*
|
|
14
|
+
* Manages audit trail queries for authentication and security events.
|
|
15
|
+
* Provides query capabilities for retrieving audit history.
|
|
16
|
+
*
|
|
17
|
+
* **Key Features:**
|
|
18
|
+
* - Efficient queries using userId (internal integer ID)
|
|
19
|
+
* - Pagination support for large datasets
|
|
20
|
+
* - Query filtering by event type, status, date ranges
|
|
21
|
+
* - User history queries (resolves userSub to userId automatically)
|
|
22
|
+
*
|
|
23
|
+
* **Design Notes:**
|
|
24
|
+
* - Only stores `userId` (integer) - no userSub duplication
|
|
25
|
+
* - All methods accepting userSub resolve to userId before querying
|
|
26
|
+
* - Risk tracking fields are infrastructure for future adaptive MFA (no business logic)
|
|
27
|
+
*
|
|
28
|
+
* **Note:** This is the public API class. Event recording is handled internally
|
|
29
|
+
* by `InternalAuthAuditService` and is not exposed to consumer applications.
|
|
30
|
+
*
|
|
31
|
+
* @example
|
|
32
|
+
* ```typescript
|
|
33
|
+
* // Get user history (accepts userSub, resolves to userId)
|
|
34
|
+
* const history = await auditService.getUserAuthHistory({
|
|
35
|
+
* userSub: 'user-uuid',
|
|
36
|
+
* page: 1,
|
|
37
|
+
* limit: 50,
|
|
38
|
+
* startDate: new Date('2025-01-01'),
|
|
39
|
+
* });
|
|
40
|
+
* ```
|
|
41
|
+
*/
|
|
11
42
|
class AuthAuditService {
|
|
12
43
|
auditRepository;
|
|
13
44
|
userRepository;
|
|
@@ -19,7 +50,32 @@ class AuthAuditService {
|
|
|
19
50
|
this.logger = logger;
|
|
20
51
|
this.clientInfoService = clientInfoService;
|
|
21
52
|
}
|
|
53
|
+
// ============================================================================
|
|
54
|
+
// Query Methods
|
|
55
|
+
// ============================================================================
|
|
56
|
+
/**
|
|
57
|
+
* Get paginated authentication history for a user
|
|
58
|
+
*
|
|
59
|
+
* Accepts userSub (external identifier) and resolves to userId for efficient queries.
|
|
60
|
+
* Supports filtering by event types, status, and date ranges.
|
|
61
|
+
*
|
|
62
|
+
* @param request - Request DTO containing userSub and filtering options
|
|
63
|
+
* @returns Response DTO with paginated audit records
|
|
64
|
+
* @throws {NAuthException} If user not found
|
|
65
|
+
*
|
|
66
|
+
* @example
|
|
67
|
+
* ```typescript
|
|
68
|
+
* const history = await auditService.getUserAuthHistory({
|
|
69
|
+
* userSub: 'user-uuid',
|
|
70
|
+
* page: 1,
|
|
71
|
+
* limit: 50,
|
|
72
|
+
* eventTypes: [AuthAuditEventType.LOGIN_SUCCESS, AuthAuditEventType.LOGIN_FAILED],
|
|
73
|
+
* startDate: new Date('2025-01-01'),
|
|
74
|
+
* });
|
|
75
|
+
* ```
|
|
76
|
+
*/
|
|
22
77
|
async getUserAuthHistory(request) {
|
|
78
|
+
// Resolve userSub to userId
|
|
23
79
|
const user = (await this.userRepository.findOne({ where: { sub: request.userSub } }));
|
|
24
80
|
if (!user) {
|
|
25
81
|
throw new nauth_exception_1.NAuthException(error_codes_enum_1.AuthErrorCode.NOT_FOUND, 'User not found');
|
|
@@ -27,22 +83,28 @@ class AuthAuditService {
|
|
|
27
83
|
const page = request.page || 1;
|
|
28
84
|
const limit = request.limit || 50;
|
|
29
85
|
const skip = (page - 1) * limit;
|
|
86
|
+
// Build query
|
|
30
87
|
const queryBuilder = this.auditRepository
|
|
31
88
|
.createQueryBuilder('audit')
|
|
32
89
|
.where('audit.userId = :userId', { userId: user.id });
|
|
90
|
+
// Date range filter
|
|
33
91
|
if (request.startDate) {
|
|
34
92
|
queryBuilder.andWhere('audit.createdAt >= :startDate', { startDate: request.startDate });
|
|
35
93
|
}
|
|
36
94
|
if (request.endDate) {
|
|
37
95
|
queryBuilder.andWhere('audit.createdAt <= :endDate', { endDate: request.endDate });
|
|
38
96
|
}
|
|
97
|
+
// Event type filter
|
|
39
98
|
if (request.eventTypes && request.eventTypes.length > 0) {
|
|
40
99
|
queryBuilder.andWhere('audit.eventType IN (:...eventTypes)', { eventTypes: request.eventTypes });
|
|
41
100
|
}
|
|
101
|
+
// Event status filter
|
|
42
102
|
if (request.eventStatus && request.eventStatus.length > 0) {
|
|
43
103
|
queryBuilder.andWhere('audit.eventStatus IN (:...eventStatus)', { eventStatus: request.eventStatus });
|
|
44
104
|
}
|
|
105
|
+
// Order by date (newest first)
|
|
45
106
|
queryBuilder.orderBy('audit.createdAt', 'DESC');
|
|
107
|
+
// Pagination
|
|
46
108
|
queryBuilder.skip(skip).take(limit);
|
|
47
109
|
const [data, total] = await queryBuilder.getManyAndCount();
|
|
48
110
|
const response = new get_user_auth_history_dto_1.GetUserAuthHistoryResponseDTO();
|
|
@@ -53,6 +115,21 @@ class AuthAuditService {
|
|
|
53
115
|
response.totalPages = Math.ceil(total / limit);
|
|
54
116
|
return response;
|
|
55
117
|
}
|
|
118
|
+
/**
|
|
119
|
+
* Get events by type with pagination
|
|
120
|
+
*
|
|
121
|
+
* @param request - Request DTO containing eventType and pagination options
|
|
122
|
+
* @returns Response DTO with paginated audit records
|
|
123
|
+
*
|
|
124
|
+
* @example
|
|
125
|
+
* ```typescript
|
|
126
|
+
* const events = await auditService.getEventsByType({
|
|
127
|
+
* eventType: AuthAuditEventType.SUSPICIOUS_ACTIVITY,
|
|
128
|
+
* page: 1,
|
|
129
|
+
* limit: 100,
|
|
130
|
+
* });
|
|
131
|
+
* ```
|
|
132
|
+
*/
|
|
56
133
|
async getEventsByType(request) {
|
|
57
134
|
const page = request.page || 1;
|
|
58
135
|
const limit = request.limit || 50;
|
|
@@ -60,6 +137,7 @@ class AuthAuditService {
|
|
|
60
137
|
const queryBuilder = this.auditRepository.createQueryBuilder('audit').where('audit.eventType = :eventType', {
|
|
61
138
|
eventType: request.eventType,
|
|
62
139
|
});
|
|
140
|
+
// Date range filter
|
|
63
141
|
if (request.startDate) {
|
|
64
142
|
queryBuilder.andWhere('audit.createdAt >= :startDate', { startDate: request.startDate });
|
|
65
143
|
}
|
|
@@ -76,6 +154,26 @@ class AuthAuditService {
|
|
|
76
154
|
response.totalPages = Math.ceil(total / limit);
|
|
77
155
|
return response;
|
|
78
156
|
}
|
|
157
|
+
/**
|
|
158
|
+
* Get suspicious activity events
|
|
159
|
+
*
|
|
160
|
+
* Returns events with SUSPICIOUS status or SUSPICIOUS_ACTIVITY event type.
|
|
161
|
+
*
|
|
162
|
+
* @param request - Request DTO containing optional userSub and limit
|
|
163
|
+
* @returns Response DTO with array of suspicious audit events
|
|
164
|
+
*
|
|
165
|
+
* @example
|
|
166
|
+
* ```typescript
|
|
167
|
+
* // Get all suspicious activity
|
|
168
|
+
* const suspicious = await auditService.getSuspiciousActivity({});
|
|
169
|
+
*
|
|
170
|
+
* // Get suspicious activity for specific user
|
|
171
|
+
* const userSuspicious = await auditService.getSuspiciousActivity({
|
|
172
|
+
* userSub: 'user-uuid',
|
|
173
|
+
* limit: 50,
|
|
174
|
+
* });
|
|
175
|
+
* ```
|
|
176
|
+
*/
|
|
79
177
|
async getSuspiciousActivity(request) {
|
|
80
178
|
const limit = request.limit || 100;
|
|
81
179
|
const queryBuilder = this.auditRepository
|
|
@@ -84,6 +182,7 @@ class AuthAuditService {
|
|
|
84
182
|
status: 'SUSPICIOUS',
|
|
85
183
|
eventType: auth_audit_event_type_enum_1.AuthAuditEventType.SUSPICIOUS_ACTIVITY,
|
|
86
184
|
});
|
|
185
|
+
// Filter by user if provided
|
|
87
186
|
if (request.userSub) {
|
|
88
187
|
const user = (await this.userRepository.findOne({ where: { sub: request.userSub } }));
|
|
89
188
|
if (!user) {
|
|
@@ -97,8 +196,27 @@ class AuthAuditService {
|
|
|
97
196
|
response.data = data;
|
|
98
197
|
return response;
|
|
99
198
|
}
|
|
199
|
+
/**
|
|
200
|
+
* Get risk assessment history for adaptive MFA analysis
|
|
201
|
+
*
|
|
202
|
+
* Returns events where risk assessment was performed (ADAPTIVE_MFA_RISK_ASSESSED,
|
|
203
|
+
* ADAPTIVE_MFA_TRIGGERED, ADAPTIVE_MFA_BYPASSED).
|
|
204
|
+
*
|
|
205
|
+
* @param request - Request DTO containing userSub and limit
|
|
206
|
+
* @returns Response DTO with array of risk assessment audit events
|
|
207
|
+
* @throws {NAuthException} If user not found
|
|
208
|
+
*
|
|
209
|
+
* @example
|
|
210
|
+
* ```typescript
|
|
211
|
+
* const riskHistory = await auditService.getRiskAssessmentHistory({
|
|
212
|
+
* userSub: 'user-uuid',
|
|
213
|
+
* limit: 50,
|
|
214
|
+
* });
|
|
215
|
+
* ```
|
|
216
|
+
*/
|
|
100
217
|
async getRiskAssessmentHistory(request) {
|
|
101
218
|
const limit = request.limit || 100;
|
|
219
|
+
// Resolve userSub to userId
|
|
102
220
|
const user = (await this.userRepository.findOne({ where: { sub: request.userSub } }));
|
|
103
221
|
if (!user) {
|
|
104
222
|
throw new nauth_exception_1.NAuthException(error_codes_enum_1.AuthErrorCode.NOT_FOUND, 'User not found');
|
|
@@ -122,9 +240,96 @@ class AuthAuditService {
|
|
|
122
240
|
}
|
|
123
241
|
}
|
|
124
242
|
exports.AuthAuditService = AuthAuditService;
|
|
243
|
+
// ============================================================================
|
|
244
|
+
// Internal Service (Framework Adapters Only)
|
|
245
|
+
// ============================================================================
|
|
246
|
+
/**
|
|
247
|
+
* Internal Authentication Audit Service
|
|
248
|
+
*
|
|
249
|
+
* Extends the base AuthAuditService with event recording capabilities.
|
|
250
|
+
* This service is only available via `@nauth-toolkit/core/internal` and should
|
|
251
|
+
* NOT be used by consumer applications.
|
|
252
|
+
*
|
|
253
|
+
* **Event Recording:**
|
|
254
|
+
* The `recordEvent()` method is internal-only and is used by nauth-toolkit
|
|
255
|
+
* services to log authentication events. Consumer applications should use
|
|
256
|
+
* the query methods from the base `AuthAuditService` class.
|
|
257
|
+
*
|
|
258
|
+
* @internal
|
|
259
|
+
* This class is only exported from `@nauth-toolkit/core/internal` for use
|
|
260
|
+
* by framework adapters. Consumer applications should use the base
|
|
261
|
+
* `AuthAuditService` from `@nauth-toolkit/core`.
|
|
262
|
+
*
|
|
263
|
+
* @example
|
|
264
|
+
* ```typescript
|
|
265
|
+
* // Framework adapter usage
|
|
266
|
+
* import { AuthAuditService } from '@nauth-toolkit/core/internal';
|
|
267
|
+
*
|
|
268
|
+
* const auditService = new AuthAuditService(...);
|
|
269
|
+
* // Can use recordEvent() here (internal only)
|
|
270
|
+
* await auditService.recordEvent({ ... });
|
|
271
|
+
* ```
|
|
272
|
+
*/
|
|
125
273
|
class InternalAuthAuditService extends AuthAuditService {
|
|
274
|
+
/**
|
|
275
|
+
* Record an authentication audit event
|
|
276
|
+
*
|
|
277
|
+
* Creates an audit record for an authentication or security event.
|
|
278
|
+
* Automatically extracts client information from request context when available.
|
|
279
|
+
* This method is non-blocking - errors are logged but don't throw exceptions.
|
|
280
|
+
*
|
|
281
|
+
* **Automatic Client Info Extraction:**
|
|
282
|
+
* When ClientInfoService is available, the following fields are automatically populated:
|
|
283
|
+
* - ipAddress, ipCountry, ipCity (from request and geolocation)
|
|
284
|
+
* - userAgent, platform, browser (from user agent parsing)
|
|
285
|
+
* - deviceId, deviceName, deviceType (from request context)
|
|
286
|
+
*
|
|
287
|
+
* Note: These fields cannot be overridden via the DTO - they are always captured from the request context.
|
|
288
|
+
* Only deviceId can be explicitly set for special cases (e.g., newly created device tokens).
|
|
289
|
+
* Do not include ipAddress, ipCountry, ipCity, userAgent, platform, browser, deviceName, or deviceType
|
|
290
|
+
* in the DTO - they will be automatically captured and attempts to include them will cause TypeScript errors.
|
|
291
|
+
*
|
|
292
|
+
* **Automatic performedBy Population:**
|
|
293
|
+
* The `performedBy` field is automatically populated from the authenticated user's context:
|
|
294
|
+
* - If userId is available from ClientInfoService (extracted from JWT token by interceptors/handlers), it is used as `performedBy`
|
|
295
|
+
* - This captures who performed the action (e.g., admin performing action on another user)
|
|
296
|
+
* - If no userId is found in client info, `performedBy` defaults to the event's `userId` (user performing action on themselves)
|
|
297
|
+
* - Explicit `performedBy` in DTO overrides automatic population
|
|
298
|
+
*
|
|
299
|
+
* @internal
|
|
300
|
+
* This method is only available in InternalAuthAuditService and should not
|
|
301
|
+
* be exposed to consumer applications.
|
|
302
|
+
*
|
|
303
|
+
* @param data - Audit event data (only event-specific fields needed)
|
|
304
|
+
* @param data.userId - Internal user ID (preferred, more efficient)
|
|
305
|
+
* @param data.userSub - External user identifier (will lookup userId if userId not provided)
|
|
306
|
+
* @param data.eventType - Type of event
|
|
307
|
+
* @param data.eventStatus - Event classification status
|
|
308
|
+
* @returns Created audit record
|
|
309
|
+
*
|
|
310
|
+
* @example
|
|
311
|
+
* ```typescript
|
|
312
|
+
* // Simple recording - client info auto-populated
|
|
313
|
+
* await auditService.recordEvent({
|
|
314
|
+
* userId: user.id,
|
|
315
|
+
* eventType: AuthAuditEventType.LOGIN_SUCCESS,
|
|
316
|
+
* eventStatus: 'SUCCESS',
|
|
317
|
+
* authMethod: 'password',
|
|
318
|
+
* // ipAddress, userAgent, deviceName, etc. automatically included!
|
|
319
|
+
* });
|
|
320
|
+
*
|
|
321
|
+
* // Override specific fields if needed
|
|
322
|
+
* await auditService.recordEvent({
|
|
323
|
+
* userId: user.id,
|
|
324
|
+
* eventType: AuthAuditEventType.LOGIN_SUCCESS,
|
|
325
|
+
* eventStatus: 'SUCCESS',
|
|
326
|
+
* // ipAddress, userAgent, etc. automatically captured from request context
|
|
327
|
+
* });
|
|
328
|
+
* ```
|
|
329
|
+
*/
|
|
126
330
|
async recordEvent(data) {
|
|
127
331
|
try {
|
|
332
|
+
// Resolve userId if userSub provided
|
|
128
333
|
let userId = data.userId;
|
|
129
334
|
if (!userId && data.userSub) {
|
|
130
335
|
const user = (await this.userRepository.findOne({ where: { sub: data.userSub } }));
|
|
@@ -138,10 +343,15 @@ class InternalAuthAuditService extends AuthAuditService {
|
|
|
138
343
|
this.logger?.warn?.('Cannot record audit event - userId or userSub required');
|
|
139
344
|
return null;
|
|
140
345
|
}
|
|
346
|
+
// ============================================================================
|
|
347
|
+
// Auto-extract client info from context (when available)
|
|
348
|
+
// Note: These fields are automatically captured and cannot be overridden by callers
|
|
349
|
+
// ============================================================================
|
|
141
350
|
let clientInfo = {};
|
|
142
351
|
if (this.clientInfoService) {
|
|
143
352
|
try {
|
|
144
353
|
const clientInfoFromContext = this.clientInfoService.get();
|
|
354
|
+
// Debug logging
|
|
145
355
|
if (!clientInfoFromContext.ipLatitude || !clientInfoFromContext.ipLongitude) {
|
|
146
356
|
this.logger?.warn?.(`[AuthAuditService] Creating audit WITHOUT coordinates from context: ` +
|
|
147
357
|
`IP=${clientInfoFromContext.ipAddress}, country=${clientInfoFromContext.ipCountry}, ` +
|
|
@@ -153,6 +363,7 @@ class InternalAuthAuditService extends AuthAuditService {
|
|
|
153
363
|
`IP=${clientInfoFromContext.ipAddress}, ${clientInfoFromContext.ipCity}, ` +
|
|
154
364
|
`${clientInfoFromContext.ipCountry} (${clientInfoFromContext.ipLatitude}, ${clientInfoFromContext.ipLongitude})`);
|
|
155
365
|
}
|
|
366
|
+
// Automatically capture from context (no override allowed)
|
|
156
367
|
clientInfo = {
|
|
157
368
|
ipAddress: clientInfoFromContext.ipAddress || null,
|
|
158
369
|
ipCountry: clientInfoFromContext.ipCountry || null,
|
|
@@ -169,9 +380,14 @@ class InternalAuthAuditService extends AuthAuditService {
|
|
|
169
380
|
};
|
|
170
381
|
}
|
|
171
382
|
catch (error) {
|
|
383
|
+
// Non-blocking: If client info extraction fails, continue without it
|
|
384
|
+
// This can happen if called outside request context (e.g., cron jobs)
|
|
172
385
|
this.logger?.debug?.(`Failed to extract client info for audit: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
173
386
|
}
|
|
174
387
|
}
|
|
388
|
+
// ============================================================================
|
|
389
|
+
// Use auto-extracted client info (deviceId can be overridden for special cases)
|
|
390
|
+
// ============================================================================
|
|
175
391
|
const mergedData = {
|
|
176
392
|
ipAddress: clientInfo.ipAddress ?? null,
|
|
177
393
|
ipCountry: clientInfo.ipCountry ?? null,
|
|
@@ -181,26 +397,36 @@ class InternalAuthAuditService extends AuthAuditService {
|
|
|
181
397
|
userAgent: clientInfo.userAgent ?? null,
|
|
182
398
|
platform: clientInfo.platform ?? null,
|
|
183
399
|
browser: clientInfo.browser ?? null,
|
|
184
|
-
deviceId: data.deviceId ?? clientInfo.deviceId ?? null,
|
|
400
|
+
deviceId: data.deviceId ?? clientInfo.deviceId ?? null, // Allow override for newly created device tokens
|
|
185
401
|
deviceName: clientInfo.deviceName ?? null,
|
|
186
402
|
deviceType: clientInfo.deviceType ?? null,
|
|
187
403
|
sessionId: data.sessionId ?? clientInfo.sessionId ?? null,
|
|
188
404
|
};
|
|
405
|
+
// ============================================================================
|
|
406
|
+
// Auto-populate performedBy from client info context (if available)
|
|
407
|
+
// ============================================================================
|
|
189
408
|
let performedBy = data.performedBy ?? null;
|
|
190
409
|
if (!performedBy && this.clientInfoService) {
|
|
191
410
|
try {
|
|
411
|
+
// Get userId from client info (extracted from JWT token by interceptors/handlers)
|
|
192
412
|
const clientInfo = this.clientInfoService.get();
|
|
193
413
|
if (clientInfo?.userId) {
|
|
414
|
+
// Use the userId from client info as performedBy
|
|
415
|
+
// This captures who performed the action (could be admin performing action on another user)
|
|
194
416
|
performedBy = String(clientInfo.userId);
|
|
195
417
|
}
|
|
196
418
|
}
|
|
197
419
|
catch (error) {
|
|
420
|
+
// Non-blocking: If client info extraction fails, continue without performedBy
|
|
198
421
|
this.logger?.debug?.(`Failed to get userId from client info for performedBy: ${error instanceof Error ? error.message : 'Unknown error'}`);
|
|
199
422
|
}
|
|
200
423
|
}
|
|
424
|
+
// If still no performedBy and we have userId, use it as fallback
|
|
425
|
+
// (most actions are performed by the user themselves)
|
|
201
426
|
if (!performedBy && userId) {
|
|
202
427
|
performedBy = String(userId);
|
|
203
428
|
}
|
|
429
|
+
// Create audit record
|
|
204
430
|
const auditRecord = this.auditRepository.create({
|
|
205
431
|
userId,
|
|
206
432
|
eventType: data.eventType,
|
|
@@ -231,6 +457,7 @@ class InternalAuthAuditService extends AuthAuditService {
|
|
|
231
457
|
return saved;
|
|
232
458
|
}
|
|
233
459
|
catch (error) {
|
|
460
|
+
// Non-blocking: Log error but don't throw
|
|
234
461
|
const errorMessage = error instanceof Error ? error.message : 'Unknown error';
|
|
235
462
|
this.logger?.error?.(`Failed to record audit event: ${errorMessage}`, { eventType: data.eventType, error });
|
|
236
463
|
return null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth-audit.service.js","sourceRoot":"","sources":["../../src/services/auth-audit.service.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"auth-audit.service.js","sourceRoot":"","sources":["../../src/services/auth-audit.service.ts"],"names":[],"mappings":"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"}
|