@nauth-toolkit/core 0.1.13 → 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
|
@@ -1,29 +1,76 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* IP Address Extractor
|
|
4
|
+
*
|
|
5
|
+
* Extracts the real client IP address from requests, handling:
|
|
6
|
+
* - Direct connections
|
|
7
|
+
* - Reverse proxies (Nginx, Apache)
|
|
8
|
+
* - Load balancers (AWS ALB/NLB, GCP, Azure)
|
|
9
|
+
* - CDNs (Cloudflare, Fastly, Akamai)
|
|
10
|
+
*
|
|
11
|
+
* **Priority Order:**
|
|
12
|
+
* 1. X-Forwarded-For (standard proxy header)
|
|
13
|
+
* 2. CF-Connecting-IP (Cloudflare)
|
|
14
|
+
* 3. X-Real-IP (Nginx proxy)
|
|
15
|
+
* 4. X-Client-IP (Apache, other proxies)
|
|
16
|
+
* 5. Fastly-Client-IP (Fastly CDN)
|
|
17
|
+
* 6. Akamai-Origin-Hop (Akamai CDN)
|
|
18
|
+
* 7. req.ip (NestJS/Express default)
|
|
19
|
+
* 8. req.socket.remoteAddress (fallback)
|
|
20
|
+
*
|
|
21
|
+
* **Security:**
|
|
22
|
+
* - Handles multiple proxies (takes leftmost IP)
|
|
23
|
+
* - Validates IP format
|
|
24
|
+
* - Filters private/internal IPs (optional)
|
|
25
|
+
* - Prevents IP spoofing
|
|
26
|
+
*
|
|
27
|
+
* @example
|
|
28
|
+
* ```typescript
|
|
29
|
+
* import { extractClientIp } from '@nauth-toolkit/core/utils';
|
|
30
|
+
*
|
|
31
|
+
* @Post('login')
|
|
32
|
+
* async login(@Req() req: Request) {
|
|
33
|
+
* const ipAddress = extractClientIp(req);
|
|
34
|
+
* logger.debug('Client IP:', ipAddress); // Real client IP
|
|
35
|
+
* }
|
|
36
|
+
* ```
|
|
37
|
+
*/
|
|
2
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
39
|
exports.extractClientIp = extractClientIp;
|
|
4
40
|
exports.isPrivateIp = isPrivateIp;
|
|
5
41
|
exports.getIpGeolocation = getIpGeolocation;
|
|
42
|
+
/**
|
|
43
|
+
* Extracts the real client IP address from an HTTP request
|
|
44
|
+
*
|
|
45
|
+
* @param req - Express Request object
|
|
46
|
+
* @param options - Optional configuration
|
|
47
|
+
* @returns The client's IP address, or '0.0.0.0' if unable to determine
|
|
48
|
+
*/
|
|
6
49
|
function extractClientIp(req, options = {}) {
|
|
7
50
|
const { filterPrivateIps = false, useLeftmostIp = true } = options;
|
|
51
|
+
// Priority order of headers to check
|
|
8
52
|
const headers = [
|
|
9
|
-
'x-forwarded-for',
|
|
10
|
-
'cf-connecting-ip',
|
|
11
|
-
'x-real-ip',
|
|
12
|
-
'x-client-ip',
|
|
13
|
-
'fastly-client-ip',
|
|
14
|
-
'akamai-origin-hop',
|
|
15
|
-
'true-client-ip',
|
|
16
|
-
'x-original-forwarded-for',
|
|
53
|
+
'x-forwarded-for', // Standard proxy header (comma-separated)
|
|
54
|
+
'cf-connecting-ip', // Cloudflare
|
|
55
|
+
'x-real-ip', // Nginx
|
|
56
|
+
'x-client-ip', // Apache, other proxies
|
|
57
|
+
'fastly-client-ip', // Fastly CDN
|
|
58
|
+
'akamai-origin-hop', // Akamai CDN
|
|
59
|
+
'true-client-ip', // Cloudflare Enterprise
|
|
60
|
+
'x-original-forwarded-for', // AWS ALB
|
|
17
61
|
];
|
|
62
|
+
// Ensure headers object exists
|
|
18
63
|
const reqHeaders = req.headers || {};
|
|
64
|
+
// Try each header in priority order
|
|
19
65
|
for (const header of headers) {
|
|
66
|
+
// Try multiple case variations
|
|
20
67
|
const variations = [
|
|
21
|
-
header,
|
|
22
|
-
header.toUpperCase(),
|
|
68
|
+
header, // lowercase: x-forwarded-for
|
|
69
|
+
header.toUpperCase(), // uppercase: X-FORWARDED-FOR
|
|
23
70
|
header
|
|
24
71
|
.split('-')
|
|
25
72
|
.map((part) => part.charAt(0).toUpperCase() + part.slice(1))
|
|
26
|
-
.join('-'),
|
|
73
|
+
.join('-'), // PascalCase: X-Forwarded-For
|
|
27
74
|
];
|
|
28
75
|
let value = null;
|
|
29
76
|
for (const variant of variations) {
|
|
@@ -37,53 +84,99 @@ function extractClientIp(req, options = {}) {
|
|
|
37
84
|
const ip = extractIpFromHeader(value, useLeftmostIp);
|
|
38
85
|
if (ip && isValidIp(ip)) {
|
|
39
86
|
if (filterPrivateIps && isPrivateIp(ip)) {
|
|
40
|
-
continue;
|
|
87
|
+
continue; // Skip private IPs
|
|
41
88
|
}
|
|
42
89
|
return ip;
|
|
43
90
|
}
|
|
44
91
|
}
|
|
45
92
|
}
|
|
93
|
+
// Fallback to NestJS/Express defaults
|
|
46
94
|
const fallbackIp = req.ip || req.socket?.remoteAddress || req.connection?.remoteAddress || '0.0.0.0';
|
|
95
|
+
// Clean up IPv6 localhost to IPv4
|
|
47
96
|
if (fallbackIp === '::1' || fallbackIp === '::ffff:127.0.0.1') {
|
|
48
97
|
return '127.0.0.1';
|
|
49
98
|
}
|
|
99
|
+
// Strip IPv6 prefix if present
|
|
50
100
|
const cleanIp = fallbackIp.replace(/^::ffff:/, '');
|
|
51
101
|
return cleanIp;
|
|
52
102
|
}
|
|
103
|
+
/**
|
|
104
|
+
* Extracts IP address from header value
|
|
105
|
+
*
|
|
106
|
+
* @param value - Header value (may be comma-separated list)
|
|
107
|
+
* @param useLeftmost - Whether to use leftmost (original client) or rightmost (last proxy)
|
|
108
|
+
* @returns Extracted IP address or null
|
|
109
|
+
*/
|
|
53
110
|
function extractIpFromHeader(value, useLeftmost) {
|
|
54
111
|
const valueStr = Array.isArray(value) ? value[0] : value;
|
|
55
112
|
if (!valueStr)
|
|
56
113
|
return null;
|
|
114
|
+
// Split by comma (X-Forwarded-For can have multiple IPs)
|
|
57
115
|
const ips = valueStr
|
|
58
116
|
.split(',')
|
|
59
117
|
.map((ip) => ip.trim())
|
|
60
118
|
.filter(Boolean);
|
|
61
119
|
if (ips.length === 0)
|
|
62
120
|
return null;
|
|
121
|
+
// Return leftmost (original client) or rightmost (last proxy)
|
|
63
122
|
return useLeftmost ? ips[0] : ips[ips.length - 1];
|
|
64
123
|
}
|
|
124
|
+
/**
|
|
125
|
+
* Validates if a string is a valid IPv4 or IPv6 address
|
|
126
|
+
*
|
|
127
|
+
* @param ip - IP address to validate
|
|
128
|
+
* @returns True if valid, false otherwise
|
|
129
|
+
*/
|
|
65
130
|
function isValidIp(ip) {
|
|
131
|
+
// IPv4 validation
|
|
66
132
|
const ipv4Regex = /^(\d{1,3}\.){3}\d{1,3}$/;
|
|
67
133
|
if (ipv4Regex.test(ip)) {
|
|
68
134
|
const parts = ip.split('.').map(Number);
|
|
69
135
|
return parts.every((part) => part >= 0 && part <= 255);
|
|
70
136
|
}
|
|
137
|
+
// IPv6 validation (simplified)
|
|
71
138
|
const ipv6Regex = /^([0-9a-fA-F]{0,4}:){2,7}[0-9a-fA-F]{0,4}$/;
|
|
72
139
|
return ipv6Regex.test(ip);
|
|
73
140
|
}
|
|
141
|
+
/**
|
|
142
|
+
* Checks if an IP address is private/internal
|
|
143
|
+
*
|
|
144
|
+
* Detects:
|
|
145
|
+
* - Localhost (127.0.0.0/8, ::1)
|
|
146
|
+
* - Private IPv4 ranges (10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16)
|
|
147
|
+
* - Link-local addresses (169.254.0.0/16)
|
|
148
|
+
*
|
|
149
|
+
* @param ip - IP address to check
|
|
150
|
+
* @returns True if private, false otherwise
|
|
151
|
+
*
|
|
152
|
+
* @example
|
|
153
|
+
* ```typescript
|
|
154
|
+
* isPrivateIp('192.168.1.1'); // true
|
|
155
|
+
* isPrivateIp('8.8.8.8'); // false
|
|
156
|
+
* ```
|
|
157
|
+
*/
|
|
74
158
|
function isPrivateIp(ip) {
|
|
159
|
+
// Localhost
|
|
75
160
|
if (ip === '127.0.0.1' || ip === '::1' || ip.startsWith('127.')) {
|
|
76
161
|
return true;
|
|
77
162
|
}
|
|
163
|
+
// Private IPv4 ranges
|
|
78
164
|
const privateRanges = [
|
|
79
|
-
/^10\./,
|
|
80
|
-
/^172\.(1[6-9]|2[0-9]|3[0-1])\./,
|
|
81
|
-
/^192\.168\./,
|
|
82
|
-
/^169\.254\./,
|
|
165
|
+
/^10\./, // 10.0.0.0/8
|
|
166
|
+
/^172\.(1[6-9]|2[0-9]|3[0-1])\./, // 172.16.0.0/12
|
|
167
|
+
/^192\.168\./, // 192.168.0.0/16
|
|
168
|
+
/^169\.254\./, // Link-local (169.254.0.0/16)
|
|
83
169
|
];
|
|
84
170
|
return privateRanges.some((regex) => regex.test(ip));
|
|
85
171
|
}
|
|
172
|
+
/**
|
|
173
|
+
* Gets geolocation information for an IP address (placeholder)
|
|
174
|
+
*
|
|
175
|
+
* @param ip - IP address
|
|
176
|
+
* @returns Geolocation info (to be implemented with MaxMind/IP-API)
|
|
177
|
+
*/
|
|
86
178
|
function getIpGeolocation(_ip) {
|
|
179
|
+
// TODO: Implement with MaxMind GeoIP2 or IP-API
|
|
87
180
|
return {};
|
|
88
181
|
}
|
|
89
182
|
//# sourceMappingURL=ip-extractor.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ip-extractor.js","sourceRoot":"","sources":["../../src/utils/ip-extractor.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"ip-extractor.js","sourceRoot":"","sources":["../../src/utils/ip-extractor.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;;AAgDH,0CA8DC;AA8DD,kCAeC;AAQD,4CAGC;AA7JD;;;;;;GAMG;AACH,SAAgB,eAAe,CAAC,GAAkB,EAAE,UAA8B,EAAE;IAClF,MAAM,EAAE,gBAAgB,GAAG,KAAK,EAAE,aAAa,GAAG,IAAI,EAAE,GAAG,OAAO,CAAC;IAEnE,qCAAqC;IACrC,MAAM,OAAO,GAAG;QACd,iBAAiB,EAAE,0CAA0C;QAC7D,kBAAkB,EAAE,aAAa;QACjC,WAAW,EAAE,QAAQ;QACrB,aAAa,EAAE,wBAAwB;QACvC,kBAAkB,EAAE,aAAa;QACjC,mBAAmB,EAAE,aAAa;QAClC,gBAAgB,EAAE,wBAAwB;QAC1C,0BAA0B,EAAE,UAAU;KACvC,CAAC;IAEF,+BAA+B;IAC/B,MAAM,UAAU,GAA4B,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC;IAE9D,oCAAoC;IACpC,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,+BAA+B;QAC/B,MAAM,UAAU,GAAG;YACjB,MAAM,EAAE,6BAA6B;YACrC,MAAM,CAAC,WAAW,EAAE,EAAE,6BAA6B;YACnD,MAAM;iBACH,KAAK,CAAC,GAAG,CAAC;iBACV,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;iBAC3D,IAAI,CAAC,GAAG,CAAC,EAAE,8BAA8B;SAC7C,CAAC;QAEF,IAAI,KAAK,GAA6B,IAAI,CAAC;QAC3C,KAAK,MAAM,OAAO,IAAI,UAAU,EAAE,CAAC;YACjC,MAAM,SAAS,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;YACtC,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC9D,KAAK,GAAG,SAAS,CAAC;gBAClB,MAAM;YACR,CAAC;QACH,CAAC;QAED,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,EAAE,GAAG,mBAAmB,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;YACrD,IAAI,EAAE,IAAI,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC;gBACxB,IAAI,gBAAgB,IAAI,WAAW,CAAC,EAAE,CAAC,EAAE,CAAC;oBACxC,SAAS,CAAC,mBAAmB;gBAC/B,CAAC;gBACD,OAAO,EAAE,CAAC;YACZ,CAAC;QACH,CAAC;IACH,CAAC;IAED,sCAAsC;IACtC,MAAM,UAAU,GAAG,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,MAAM,EAAE,aAAa,IAAI,GAAG,CAAC,UAAU,EAAE,aAAa,IAAI,SAAS,CAAC;IAErG,kCAAkC;IAClC,IAAI,UAAU,KAAK,KAAK,IAAI,UAAU,KAAK,kBAAkB,EAAE,CAAC;QAC9D,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,+BAA+B;IAC/B,MAAM,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;IAEnD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;;;GAMG;AACH,SAAS,mBAAmB,CAAC,KAAwB,EAAE,WAAoB;IACzE,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IAEzD,IAAI,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAC;IAE3B,yDAAyD;IACzD,MAAM,GAAG,GAAG,QAAQ;SACjB,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;SACtB,MAAM,CAAC,OAAO,CAAC,CAAC;IAEnB,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAElC,8DAA8D;IAC9D,OAAO,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACpD,CAAC;AAED;;;;;GAKG;AACH,SAAS,SAAS,CAAC,EAAU;IAC3B,kBAAkB;IAClB,MAAM,SAAS,GAAG,yBAAyB,CAAC;IAC5C,IAAI,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;QACvB,MAAM,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACxC,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,GAAG,CAAC,CAAC;IACzD,CAAC;IAED,+BAA+B;IAC/B,MAAM,SAAS,GAAG,4CAA4C,CAAC;IAC/D,OAAO,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC5B,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,SAAgB,WAAW,CAAC,EAAU;IACpC,YAAY;IACZ,IAAI,EAAE,KAAK,WAAW,IAAI,EAAE,KAAK,KAAK,IAAI,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QAChE,OAAO,IAAI,CAAC;IACd,CAAC;IAED,sBAAsB;IACtB,MAAM,aAAa,GAAG;QACpB,OAAO,EAAE,aAAa;QACtB,gCAAgC,EAAE,gBAAgB;QAClD,aAAa,EAAE,iBAAiB;QAChC,aAAa,EAAE,8BAA8B;KAC9C,CAAC;IAEF,OAAO,aAAa,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;AACvD,CAAC;AAED;;;;;GAKG;AACH,SAAgB,gBAAgB,CAAC,GAAW;IAC1C,gDAAgD;IAChD,OAAO,EAAE,CAAC;AACZ,CAAC"}
|
|
@@ -1,4 +1,41 @@
|
|
|
1
1
|
import { LoggerService, NAuthLoggerConfig } from '../interfaces/config.interface';
|
|
2
|
+
/**
|
|
3
|
+
* NAuth Logger Wrapper
|
|
4
|
+
*
|
|
5
|
+
* Wraps any NestJS-compatible logger and adds features:
|
|
6
|
+
* 1. "NAUTH:" prefix to all messages for easy identification
|
|
7
|
+
* 2. Automatic PII redaction (emails, IPs, tokens, etc.) - enabled by default
|
|
8
|
+
* 3. Optional log level filtering
|
|
9
|
+
* 4. Silent mode if no logger is provided
|
|
10
|
+
*
|
|
11
|
+
* This allows nauth-toolkit to integrate seamlessly with the consuming application's
|
|
12
|
+
* logging infrastructure while maintaining security and compliance.
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* ```typescript
|
|
16
|
+
* // With NestJS built-in logger (PII redaction enabled by default)
|
|
17
|
+
* const logger = new NAuthLogger(new Logger('MyApp'));
|
|
18
|
+
* logger.log('User user@example.com signed up');
|
|
19
|
+
* // Output: [MyApp] NAUTH: User u***@***.com signed up
|
|
20
|
+
*
|
|
21
|
+
* // With config options
|
|
22
|
+
* const logger = new NAuthLogger({
|
|
23
|
+
* instance: new Logger('MyApp'),
|
|
24
|
+
* enablePiiRedaction: true, // Default
|
|
25
|
+
* logLevel: 'debug'
|
|
26
|
+
* });
|
|
27
|
+
*
|
|
28
|
+
* // Disable PII redaction (debugging only)
|
|
29
|
+
* const logger = new NAuthLogger({
|
|
30
|
+
* instance: myLogger,
|
|
31
|
+
* enablePiiRedaction: false
|
|
32
|
+
* });
|
|
33
|
+
*
|
|
34
|
+
* // Silent mode (no logger provided)
|
|
35
|
+
* const logger = new NAuthLogger();
|
|
36
|
+
* logger.log('This will not be logged'); // No output
|
|
37
|
+
* ```
|
|
38
|
+
*/
|
|
2
39
|
export declare class NAuthLogger implements LoggerService {
|
|
3
40
|
private static readonly PREFIX;
|
|
4
41
|
private readonly logger?;
|
|
@@ -6,15 +43,48 @@ export declare class NAuthLogger implements LoggerService {
|
|
|
6
43
|
private readonly enablePiiRedaction;
|
|
7
44
|
private readonly logLevel?;
|
|
8
45
|
constructor(config?: LoggerService | NAuthLoggerConfig);
|
|
46
|
+
/**
|
|
47
|
+
* Log a message (info level)
|
|
48
|
+
*/
|
|
9
49
|
log(message: any, ...optionalParams: any[]): any;
|
|
50
|
+
/**
|
|
51
|
+
* Log an error message
|
|
52
|
+
*/
|
|
10
53
|
error(message: any, ...optionalParams: any[]): any;
|
|
54
|
+
/**
|
|
55
|
+
* Log a warning message
|
|
56
|
+
*/
|
|
11
57
|
warn(message: any, ...optionalParams: any[]): any;
|
|
58
|
+
/**
|
|
59
|
+
* Log a debug message
|
|
60
|
+
*/
|
|
12
61
|
debug(message: any, ...optionalParams: any[]): any;
|
|
62
|
+
/**
|
|
63
|
+
* Log a verbose message
|
|
64
|
+
*/
|
|
13
65
|
verbose(message: any, ...optionalParams: any[]): any;
|
|
66
|
+
/**
|
|
67
|
+
* Process message: add prefix and apply PII redaction
|
|
68
|
+
* @private
|
|
69
|
+
*/
|
|
14
70
|
private processMessage;
|
|
71
|
+
/**
|
|
72
|
+
* Process optional parameters: apply PII redaction
|
|
73
|
+
* @private
|
|
74
|
+
*/
|
|
15
75
|
private processParams;
|
|
76
|
+
/**
|
|
77
|
+
* Check if message should be logged based on log level
|
|
78
|
+
* @private
|
|
79
|
+
*/
|
|
16
80
|
private shouldLog;
|
|
81
|
+
/**
|
|
82
|
+
* Check if logger is enabled
|
|
83
|
+
*/
|
|
17
84
|
isEnabled(): boolean;
|
|
85
|
+
/**
|
|
86
|
+
* Check if PII redaction is enabled
|
|
87
|
+
*/
|
|
18
88
|
isPiiRedactionEnabled(): boolean;
|
|
19
89
|
}
|
|
20
90
|
//# sourceMappingURL=nauth-logger.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nauth-logger.d.ts","sourceRoot":"","sources":["../../src/utils/nauth-logger.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;
|
|
1
|
+
{"version":3,"file":"nauth-logger.d.ts","sourceRoot":"","sources":["../../src/utils/nauth-logger.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAGlF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,qBAAa,WAAY,YAAW,aAAa;IAC/C,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAY;IAE1C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAgB;IACxC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAc;IAC1C,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAU;IAC7C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAS;gBAEvB,MAAM,CAAC,EAAE,aAAa,GAAG,iBAAiB;IA2BtD;;OAEG;IACH,GAAG,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,cAAc,EAAE,GAAG,EAAE,GAAG,GAAG;IAQhD;;OAEG;IACH,KAAK,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,cAAc,EAAE,GAAG,EAAE,GAAG,GAAG;IAQlD;;OAEG;IACH,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,cAAc,EAAE,GAAG,EAAE,GAAG,GAAG;IAQjD;;OAEG;IACH,KAAK,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,cAAc,EAAE,GAAG,EAAE,GAAG,GAAG;IAQlD;;OAEG;IACH,OAAO,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,cAAc,EAAE,GAAG,EAAE,GAAG,GAAG;IAQpD;;;OAGG;IACH,OAAO,CAAC,cAAc;IAqBtB;;;OAGG;IACH,OAAO,CAAC,aAAa;IA2BrB;;;OAGG;IACH,OAAO,CAAC,SAAS;IAUjB;;OAEG;IACH,SAAS,IAAI,OAAO;IAIpB;;OAEG;IACH,qBAAqB,IAAI,OAAO;CAGjC"}
|
|
@@ -2,6 +2,43 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.NAuthLogger = void 0;
|
|
4
4
|
const pii_redactor_1 = require("./pii-redactor");
|
|
5
|
+
/**
|
|
6
|
+
* NAuth Logger Wrapper
|
|
7
|
+
*
|
|
8
|
+
* Wraps any NestJS-compatible logger and adds features:
|
|
9
|
+
* 1. "NAUTH:" prefix to all messages for easy identification
|
|
10
|
+
* 2. Automatic PII redaction (emails, IPs, tokens, etc.) - enabled by default
|
|
11
|
+
* 3. Optional log level filtering
|
|
12
|
+
* 4. Silent mode if no logger is provided
|
|
13
|
+
*
|
|
14
|
+
* This allows nauth-toolkit to integrate seamlessly with the consuming application's
|
|
15
|
+
* logging infrastructure while maintaining security and compliance.
|
|
16
|
+
*
|
|
17
|
+
* @example
|
|
18
|
+
* ```typescript
|
|
19
|
+
* // With NestJS built-in logger (PII redaction enabled by default)
|
|
20
|
+
* const logger = new NAuthLogger(new Logger('MyApp'));
|
|
21
|
+
* logger.log('User user@example.com signed up');
|
|
22
|
+
* // Output: [MyApp] NAUTH: User u***@***.com signed up
|
|
23
|
+
*
|
|
24
|
+
* // With config options
|
|
25
|
+
* const logger = new NAuthLogger({
|
|
26
|
+
* instance: new Logger('MyApp'),
|
|
27
|
+
* enablePiiRedaction: true, // Default
|
|
28
|
+
* logLevel: 'debug'
|
|
29
|
+
* });
|
|
30
|
+
*
|
|
31
|
+
* // Disable PII redaction (debugging only)
|
|
32
|
+
* const logger = new NAuthLogger({
|
|
33
|
+
* instance: myLogger,
|
|
34
|
+
* enablePiiRedaction: false
|
|
35
|
+
* });
|
|
36
|
+
*
|
|
37
|
+
* // Silent mode (no logger provided)
|
|
38
|
+
* const logger = new NAuthLogger();
|
|
39
|
+
* logger.log('This will not be logged'); // No output
|
|
40
|
+
* ```
|
|
41
|
+
*/
|
|
5
42
|
class NAuthLogger {
|
|
6
43
|
static PREFIX = 'NAUTH:';
|
|
7
44
|
logger;
|
|
@@ -10,13 +47,15 @@ class NAuthLogger {
|
|
|
10
47
|
logLevel;
|
|
11
48
|
constructor(config) {
|
|
12
49
|
if (!config) {
|
|
50
|
+
// Silent mode
|
|
13
51
|
this.logger = undefined;
|
|
14
52
|
this.enablePiiRedaction = true;
|
|
15
53
|
this.piiRedactor = new pii_redactor_1.PiiRedactor();
|
|
16
54
|
}
|
|
17
55
|
else if ('instance' in config) {
|
|
56
|
+
// LoggerConfig object
|
|
18
57
|
this.logger = config.instance;
|
|
19
|
-
this.enablePiiRedaction = config.enablePiiRedaction !== false;
|
|
58
|
+
this.enablePiiRedaction = config.enablePiiRedaction !== false; // Default: true
|
|
20
59
|
this.logLevel = config.logLevel;
|
|
21
60
|
this.piiRedactor = new pii_redactor_1.PiiRedactor({
|
|
22
61
|
redactEmails: this.enablePiiRedaction,
|
|
@@ -24,15 +63,19 @@ class NAuthLogger {
|
|
|
24
63
|
redactTokens: this.enablePiiRedaction,
|
|
25
64
|
redactPhoneNumbers: this.enablePiiRedaction,
|
|
26
65
|
redactNames: this.enablePiiRedaction,
|
|
27
|
-
redactPasswords: true,
|
|
66
|
+
redactPasswords: true, // Always redact passwords
|
|
28
67
|
});
|
|
29
68
|
}
|
|
30
69
|
else {
|
|
70
|
+
// LoggerService instance directly
|
|
31
71
|
this.logger = config;
|
|
32
|
-
this.enablePiiRedaction = true;
|
|
72
|
+
this.enablePiiRedaction = true; // Default: enabled
|
|
33
73
|
this.piiRedactor = new pii_redactor_1.PiiRedactor();
|
|
34
74
|
}
|
|
35
75
|
}
|
|
76
|
+
/**
|
|
77
|
+
* Log a message (info level)
|
|
78
|
+
*/
|
|
36
79
|
log(message, ...optionalParams) {
|
|
37
80
|
if (!this.logger || !this.shouldLog('log'))
|
|
38
81
|
return;
|
|
@@ -40,6 +83,9 @@ class NAuthLogger {
|
|
|
40
83
|
const processedParams = this.processParams(optionalParams);
|
|
41
84
|
return this.logger.log(processedMessage, ...processedParams);
|
|
42
85
|
}
|
|
86
|
+
/**
|
|
87
|
+
* Log an error message
|
|
88
|
+
*/
|
|
43
89
|
error(message, ...optionalParams) {
|
|
44
90
|
if (!this.logger || !this.shouldLog('error'))
|
|
45
91
|
return;
|
|
@@ -47,6 +93,9 @@ class NAuthLogger {
|
|
|
47
93
|
const processedParams = this.processParams(optionalParams);
|
|
48
94
|
return this.logger.error(processedMessage, ...processedParams);
|
|
49
95
|
}
|
|
96
|
+
/**
|
|
97
|
+
* Log a warning message
|
|
98
|
+
*/
|
|
50
99
|
warn(message, ...optionalParams) {
|
|
51
100
|
if (!this.logger || !this.shouldLog('warn'))
|
|
52
101
|
return;
|
|
@@ -54,6 +103,9 @@ class NAuthLogger {
|
|
|
54
103
|
const processedParams = this.processParams(optionalParams);
|
|
55
104
|
return this.logger.warn(processedMessage, ...processedParams);
|
|
56
105
|
}
|
|
106
|
+
/**
|
|
107
|
+
* Log a debug message
|
|
108
|
+
*/
|
|
57
109
|
debug(message, ...optionalParams) {
|
|
58
110
|
if (!this.logger || !this.logger.debug || !this.shouldLog('debug'))
|
|
59
111
|
return;
|
|
@@ -61,6 +113,9 @@ class NAuthLogger {
|
|
|
61
113
|
const processedParams = this.processParams(optionalParams);
|
|
62
114
|
return this.logger.debug(processedMessage, ...processedParams);
|
|
63
115
|
}
|
|
116
|
+
/**
|
|
117
|
+
* Log a verbose message
|
|
118
|
+
*/
|
|
64
119
|
verbose(message, ...optionalParams) {
|
|
65
120
|
if (!this.logger || !this.logger.verbose || !this.shouldLog('verbose'))
|
|
66
121
|
return;
|
|
@@ -68,22 +123,33 @@ class NAuthLogger {
|
|
|
68
123
|
const processedParams = this.processParams(optionalParams);
|
|
69
124
|
return this.logger.verbose(processedMessage, ...processedParams);
|
|
70
125
|
}
|
|
126
|
+
/**
|
|
127
|
+
* Process message: add prefix and apply PII redaction
|
|
128
|
+
* @private
|
|
129
|
+
*/
|
|
71
130
|
processMessage(message) {
|
|
72
131
|
let processedMessage;
|
|
73
132
|
if (typeof message === 'string') {
|
|
74
133
|
processedMessage = message;
|
|
75
134
|
}
|
|
76
135
|
else if (typeof message === 'object') {
|
|
136
|
+
// For objects, stringify then redact
|
|
77
137
|
processedMessage = JSON.stringify(message);
|
|
78
138
|
}
|
|
79
139
|
else {
|
|
80
140
|
processedMessage = String(message);
|
|
81
141
|
}
|
|
142
|
+
// Apply PII redaction if enabled
|
|
82
143
|
if (this.enablePiiRedaction) {
|
|
83
144
|
processedMessage = this.piiRedactor.redactMessage(processedMessage);
|
|
84
145
|
}
|
|
146
|
+
// Add NAUTH: prefix
|
|
85
147
|
return `${NAuthLogger.PREFIX} ${processedMessage}`;
|
|
86
148
|
}
|
|
149
|
+
/**
|
|
150
|
+
* Process optional parameters: apply PII redaction
|
|
151
|
+
* @private
|
|
152
|
+
*/
|
|
87
153
|
processParams(params) {
|
|
88
154
|
if (!this.enablePiiRedaction || params.length === 0) {
|
|
89
155
|
return params;
|
|
@@ -93,6 +159,7 @@ class NAuthLogger {
|
|
|
93
159
|
return this.piiRedactor.redactMessage(param);
|
|
94
160
|
}
|
|
95
161
|
else if (typeof param === 'object') {
|
|
162
|
+
// For objects, stringify, redact, then parse back
|
|
96
163
|
try {
|
|
97
164
|
const stringified = JSON.stringify(param);
|
|
98
165
|
const redacted = this.piiRedactor.redactMessage(stringified);
|
|
@@ -104,23 +171,34 @@ class NAuthLogger {
|
|
|
104
171
|
}
|
|
105
172
|
}
|
|
106
173
|
catch {
|
|
174
|
+
// Handle circular references or other JSON.stringify errors (e.g., toJSON throwing)
|
|
107
175
|
return '[Object with circular reference or invalid JSON]';
|
|
108
176
|
}
|
|
109
177
|
}
|
|
110
178
|
return param;
|
|
111
179
|
});
|
|
112
180
|
}
|
|
181
|
+
/**
|
|
182
|
+
* Check if message should be logged based on log level
|
|
183
|
+
* @private
|
|
184
|
+
*/
|
|
113
185
|
shouldLog(level) {
|
|
114
186
|
if (!this.logLevel)
|
|
115
|
-
return true;
|
|
187
|
+
return true; // No filter, log everything
|
|
116
188
|
const levels = ['error', 'warn', 'log', 'debug', 'verbose'];
|
|
117
189
|
const configLevel = levels.indexOf(this.logLevel);
|
|
118
190
|
const messageLevel = levels.indexOf(level);
|
|
119
191
|
return messageLevel <= configLevel;
|
|
120
192
|
}
|
|
193
|
+
/**
|
|
194
|
+
* Check if logger is enabled
|
|
195
|
+
*/
|
|
121
196
|
isEnabled() {
|
|
122
197
|
return !!this.logger;
|
|
123
198
|
}
|
|
199
|
+
/**
|
|
200
|
+
* Check if PII redaction is enabled
|
|
201
|
+
*/
|
|
124
202
|
isPiiRedactionEnabled() {
|
|
125
203
|
return this.enablePiiRedaction;
|
|
126
204
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nauth-logger.js","sourceRoot":"","sources":["../../src/utils/nauth-logger.ts"],"names":[],"mappings":";;;AAEA,iDAA6C;
|
|
1
|
+
{"version":3,"file":"nauth-logger.js","sourceRoot":"","sources":["../../src/utils/nauth-logger.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,16 +1,86 @@
|
|
|
1
1
|
import { LogMetadata, PiiRedactionOptions } from '../interfaces/logger.interface';
|
|
2
|
+
/**
|
|
3
|
+
* PII Redactor Utility
|
|
4
|
+
*
|
|
5
|
+
* Automatically redacts Personally Identifiable Information (PII) from log messages
|
|
6
|
+
* and metadata to ensure privacy compliance (GDPR, CCPA, etc.).
|
|
7
|
+
*
|
|
8
|
+
* Redaction patterns:
|
|
9
|
+
* - Emails: `user@example.com` → `u***@***.com`
|
|
10
|
+
* - IP Addresses: `192.168.1.100` → `192.168.1.***`
|
|
11
|
+
* - Tokens: `eyJhbGciOiJIUz...` → `[REDACTED_TOKEN]`
|
|
12
|
+
* - Passwords: Always `[REDACTED]`
|
|
13
|
+
* - Phone Numbers: `+1234567890` → `+123***7890`
|
|
14
|
+
* - Names: `John Doe` → `J*** D***`
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* ```typescript
|
|
18
|
+
* const redactor = new PiiRedactor();
|
|
19
|
+
* const safe = redactor.redactMessage('User user@example.com logged in');
|
|
20
|
+
* // Output: 'User u***@***.com logged in'
|
|
21
|
+
* ```
|
|
22
|
+
*/
|
|
2
23
|
export declare class PiiRedactor {
|
|
3
24
|
private options;
|
|
25
|
+
/**
|
|
26
|
+
* Constructor
|
|
27
|
+
*
|
|
28
|
+
* @param options - PII redaction configuration
|
|
29
|
+
*/
|
|
4
30
|
constructor(options?: PiiRedactionOptions);
|
|
31
|
+
/**
|
|
32
|
+
* Redact PII from a log message
|
|
33
|
+
*
|
|
34
|
+
* @param message - Log message that may contain PII
|
|
35
|
+
* @returns Redacted message
|
|
36
|
+
*/
|
|
5
37
|
redactMessage(message: string): string;
|
|
38
|
+
/**
|
|
39
|
+
* Redact PII from log metadata
|
|
40
|
+
*
|
|
41
|
+
* @param metadata - Log metadata that may contain PII
|
|
42
|
+
* @returns Redacted metadata
|
|
43
|
+
*/
|
|
6
44
|
redactMetadata(metadata?: LogMetadata): LogMetadata | undefined;
|
|
45
|
+
/**
|
|
46
|
+
* Redact email addresses
|
|
47
|
+
* @private
|
|
48
|
+
*/
|
|
7
49
|
private redactEmails;
|
|
50
|
+
/**
|
|
51
|
+
* Redact IP addresses (keep first 3 octets)
|
|
52
|
+
* @private
|
|
53
|
+
*/
|
|
8
54
|
private redactIpAddresses;
|
|
55
|
+
/**
|
|
56
|
+
* Redact a single IP address
|
|
57
|
+
* @private
|
|
58
|
+
*/
|
|
9
59
|
private redactIpAddress;
|
|
60
|
+
/**
|
|
61
|
+
* Redact JWT tokens and bearer tokens
|
|
62
|
+
* @private
|
|
63
|
+
*/
|
|
10
64
|
private redactTokens;
|
|
65
|
+
/**
|
|
66
|
+
* Redact phone numbers
|
|
67
|
+
* @private
|
|
68
|
+
*/
|
|
11
69
|
private redactPhoneNumbers;
|
|
70
|
+
/**
|
|
71
|
+
* Redact names (firstName, lastName)
|
|
72
|
+
* @private
|
|
73
|
+
*/
|
|
12
74
|
private redactNames;
|
|
75
|
+
/**
|
|
76
|
+
* Redact passwords and password-related fields
|
|
77
|
+
* @private
|
|
78
|
+
*/
|
|
13
79
|
private redactPasswords;
|
|
80
|
+
/**
|
|
81
|
+
* Recursively redact an object
|
|
82
|
+
* @private
|
|
83
|
+
*/
|
|
14
84
|
private redactObject;
|
|
15
85
|
}
|
|
16
86
|
//# sourceMappingURL=pii-redactor.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pii-redactor.d.ts","sourceRoot":"","sources":["../../src/utils/pii-redactor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;
|
|
1
|
+
{"version":3,"file":"pii-redactor.d.ts","sourceRoot":"","sources":["../../src/utils/pii-redactor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAElF;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,OAAO,CAAgC;IAE/C;;;;OAIG;gBACS,OAAO,CAAC,EAAE,mBAAmB;IAczC;;;;;OAKG;IACH,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAoCtC;;;;;OAKG;IACH,cAAc,CAAC,QAAQ,CAAC,EAAE,WAAW,GAAG,WAAW,GAAG,SAAS;IAgC/D;;;OAGG;IACH,OAAO,CAAC,YAAY;IAWpB;;;OAGG;IACH,OAAO,CAAC,iBAAiB;IAUzB;;;OAGG;IACH,OAAO,CAAC,eAAe;IAgBvB;;;OAGG;IACH,OAAO,CAAC,YAAY;IAapB;;;OAGG;IACH,OAAO,CAAC,kBAAkB;IAO1B;;;OAGG;IACH,OAAO,CAAC,WAAW;IAuBnB;;;OAGG;IACH,OAAO,CAAC,eAAe;IAavB;;;OAGG;IACH,OAAO,CAAC,YAAY;CAqCrB"}
|