@jmlq/auth 0.0.1-alpha.1 → 0.0.1-alpha.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +259 -306
- package/dist/application/dtos/index.d.ts +3 -0
- package/dist/application/dtos/index.js +19 -0
- package/dist/application/dtos/request/index.d.ts +4 -0
- package/dist/{src/application/dtos → application/dtos/request}/index.js +4 -4
- package/dist/{src/application/dtos/login.dto.d.ts → application/dtos/request/login.request.d.ts} +0 -4
- package/dist/application/dtos/request/logout.request.d.ts +3 -0
- package/dist/application/dtos/request/refresh-token.request.d.ts +3 -0
- package/dist/application/dtos/request/register-user.request.d.ts +6 -0
- package/dist/application/dtos/response/index.d.ts +4 -0
- package/dist/application/dtos/response/index.js +20 -0
- package/dist/application/dtos/response/login.response.d.ts +4 -0
- package/dist/{src/application/dtos/logout.dto.d.ts → application/dtos/response/logout.response.d.ts} +0 -3
- package/dist/{src/application/dtos/refresh-token.dto.d.ts → application/dtos/response/refresh-token.response.d.ts} +0 -3
- package/dist/application/dtos/response/register-user.response.d.ts +7 -0
- package/dist/application/dtos/type/index.d.ts +1 -0
- package/dist/{src/shared/constants → application/dtos/type}/index.js +1 -1
- package/dist/application/dtos/type/user-role.type.d.ts +4 -0
- package/dist/application/factories/auth-service.factory.d.ts +11 -0
- package/dist/application/factories/auth-service.factory.js +40 -0
- package/dist/{src/application → application}/index.d.ts +1 -0
- package/dist/{src/application → application}/index.js +1 -0
- package/dist/application/types/auth-service-factory-options.type.d.ts +5 -0
- package/dist/application/types/index.d.ts +1 -0
- package/dist/{src/infrastructure/jwt/factory → application/types}/index.js +1 -1
- package/dist/{src/application → application}/use-cases/login-with-password.use-case.d.ts +2 -2
- package/dist/{src/application → application}/use-cases/login-with-password.use-case.js +6 -5
- package/dist/{src/application → application}/use-cases/logout.use-case.d.ts +2 -2
- package/dist/{src/application → application}/use-cases/logout.use-case.js +2 -2
- package/dist/{src/application → application}/use-cases/refresh-token.use-case.d.ts +2 -2
- package/dist/{src/application → application}/use-cases/refresh-token.use-case.js +2 -2
- package/dist/application/use-cases/register-user.use-case.d.ts +12 -0
- package/dist/{src/application → application}/use-cases/register-user.use-case.js +27 -1
- package/dist/{src/domain → domain}/errors/auth.errors.d.ts +1 -14
- package/dist/{src/domain → domain}/errors/auth.errors.js +1 -15
- package/dist/{src/domain → domain}/index.d.ts +0 -1
- package/dist/{src/domain → domain}/index.js +0 -1
- package/dist/domain/ports/auth/index.d.ts +2 -0
- package/dist/domain/ports/auth/index.js +18 -0
- package/dist/{src/domain/ports/auth/password-hasher.d.ts → domain/ports/auth/password-hasher.port.d.ts} +1 -1
- package/dist/{src/domain → domain}/ports/auth/password-policy.port.d.ts +1 -1
- package/dist/domain/ports/index.d.ts +4 -0
- package/dist/{src/infrastructure/jwt → domain/ports}/index.js +3 -2
- package/dist/domain/ports/jwt/index.d.ts +1 -0
- package/dist/{src/shared/types → domain/ports/jwt}/index.js +1 -1
- package/dist/domain/ports/jwt/payload/index.d.ts +1 -0
- package/dist/domain/ports/jwt/payload/index.js +17 -0
- package/dist/{src/domain → domain}/ports/repository/credential.repository.d.ts +1 -1
- package/dist/{src/domain → domain}/ports/repository/index.d.ts +1 -1
- package/dist/{src/domain → domain}/ports/repository/index.js +1 -1
- package/dist/{src/domain/ports/repository/user.repository.d.ts → domain/ports/repository/user-repository.port.d.ts} +1 -1
- package/dist/domain/ports/token/index.d.ts +2 -0
- package/dist/domain/ports/token/index.js +18 -0
- package/dist/{src/domain → domain}/ports/token/token-session.port.d.ts +2 -2
- package/dist/{src/domain → domain}/ports/token/token.service.port.d.ts +2 -2
- package/dist/{src/domain → domain}/props/jwt/generate-access-token.props.d.ts +0 -2
- package/dist/{src/domain → domain}/props/jwt/generate-refresh-token.props.d.ts +0 -2
- package/dist/{src/domain/props/services → domain/props/jwt}/index.d.ts +1 -0
- package/dist/{src/domain/props/services → domain/props/jwt}/index.js +1 -0
- package/dist/{src/domain → domain}/services/password-policy.service.d.ts +2 -2
- package/dist/{src/infrastructure/repositories/test → in-memory}/in-memory-credential.repository.d.ts +2 -2
- package/dist/{src/infrastructure/repositories/test → in-memory}/in-memory-credential.repository.js +12 -2
- package/dist/{src/infrastructure/repositories/test → in-memory}/in-memory-user.repository.d.ts +2 -2
- package/dist/index.d.ts +5 -1
- package/dist/index.js +13 -1
- package/dist/infrastructure/index.js +1 -0
- package/dist/{src/infrastructure → infrastructure}/security/bcrypt-password-hasher.d.ts +7 -2
- package/dist/{src/infrastructure → infrastructure}/security/bcrypt-password-hasher.js +7 -2
- package/dist/{src/infrastructure → infrastructure}/services/index.d.ts +0 -1
- package/dist/{src/infrastructure → infrastructure}/services/index.js +0 -1
- package/dist/infrastructure/services/token-session.service.d.ts +22 -0
- package/dist/{src/infrastructure/services/default-token-session.service.js → infrastructure/services/token-session.service.js} +30 -31
- package/dist/infrastructure/types/auth-service-container.d.ts +14 -0
- package/dist/shared/index.d.ts +1 -0
- package/dist/{src/infrastructure/repositories → shared}/index.js +1 -1
- package/package.json +5 -8
- package/dist/examples/bcrypt-password-hasher.example.d.ts +0 -3
- package/dist/examples/bcrypt-password-hasher.example.js +0 -78
- package/dist/examples/entity-object.example.d.ts +0 -39
- package/dist/examples/entity-object.example.js +0 -411
- package/dist/examples/factory-auth-service-example.d.ts +0 -3
- package/dist/examples/factory-auth-service-example.js +0 -84
- package/dist/examples/index.example.d.ts +0 -12
- package/dist/examples/index.example.js +0 -171
- package/dist/examples/jwt-algoritm.example.d.ts +0 -47
- package/dist/examples/jwt-algoritm.example.js +0 -447
- package/dist/examples/jwt-token-generator.example.d.ts +0 -6
- package/dist/examples/jwt-token-generator.example.js +0 -49
- package/dist/examples/jwt-verifier.example.d.ts +0 -3
- package/dist/examples/jwt-verifier.example.js +0 -80
- package/dist/examples/password-policy.example.d.ts +0 -7
- package/dist/examples/password-policy.example.js +0 -57
- package/dist/examples/service-jwt-token.example.d.ts +0 -3
- package/dist/examples/service-jwt-token.example.js +0 -154
- package/dist/examples/service-token-session.example.d.ts +0 -3
- package/dist/examples/service-token-session.example.js +0 -139
- package/dist/examples/use-case-login-with-password.example.d.ts +0 -6
- package/dist/examples/use-case-login-with-password.example.js +0 -105
- package/dist/examples/use-case-logout.example.d.ts +0 -7
- package/dist/examples/use-case-logout.example.js +0 -134
- package/dist/examples/use-case-refresh-token.example.d.ts +0 -11
- package/dist/examples/use-case-refresh-token.example.js +0 -164
- package/dist/examples/use-case-register-user.example.d.ts +0 -9
- package/dist/examples/use-case-register-user.example.js +0 -110
- package/dist/src/application/dtos/index.d.ts +0 -4
- package/dist/src/application/dtos/register-user.dto.d.ts +0 -16
- package/dist/src/application/factories/auth-service.factory.d.ts +0 -5
- package/dist/src/application/factories/auth-service.factory.js +0 -51
- package/dist/src/application/use-cases/register-user.use-case.d.ts +0 -10
- package/dist/src/domain/errors/auth-domain-error.d.ts +0 -82
- package/dist/src/domain/errors/auth-domain-error.js +0 -112
- package/dist/src/domain/ports/auth/password-policy-config.port.js +0 -10
- package/dist/src/domain/ports/config/auth-config.port.d.ts +0 -19
- package/dist/src/domain/ports/config/auth-config.port.js +0 -3
- package/dist/src/domain/ports/index.d.ts +0 -9
- package/dist/src/domain/ports/index.js +0 -25
- package/dist/src/domain/ports/jwt/factory/signature-strategy-factory.port.d.ts +0 -14
- package/dist/src/domain/ports/jwt/signature-strategy-factory.port.d.ts +0 -14
- package/dist/src/domain/ports/jwt/signature-strategy.d.ts +0 -30
- package/dist/src/domain/ports/jwt/signature-strategy.js +0 -4
- package/dist/src/domain/ports/jwt/signature-strategy.port.d.ts +0 -31
- package/dist/src/domain/ports/jwt/signature-strategy.port.js +0 -4
- package/dist/src/domain/ports/jwt/strategy/signature-strategy.port.d.ts +0 -31
- package/dist/src/domain/ports/jwt/strategy/signature-strategy.port.js +0 -4
- package/dist/src/domain/props/create-payload-props.port.d.ts +0 -0
- package/dist/src/domain/props/create-payload-props.port.js +0 -8
- package/dist/src/domain/props/jwt/create-payload.props.d.ts +0 -9
- package/dist/src/domain/props/jwt/generate-token.props.d.ts +0 -10
- package/dist/src/domain/props/jwt/generate-token.props.js +0 -2
- package/dist/src/domain/props/jwt/index.d.ts +0 -5
- package/dist/src/domain/props/jwt/index.js +0 -21
- package/dist/src/domain/props/jwt/jwt-subject.d.ts +0 -7
- package/dist/src/domain/props/jwt/jwt-subject.js +0 -2
- package/dist/src/domain/props/services/generate-access-token.props.d.ts +0 -8
- package/dist/src/domain/props/services/generate-refresh-token.props.d.ts +0 -8
- package/dist/src/domain/services/token.service.port.d.ts +0 -9
- package/dist/src/index.d.ts +0 -78
- package/dist/src/index.js +0 -94
- package/dist/src/infrastructure/index.d.ts +0 -5
- package/dist/src/infrastructure/index.js +0 -21
- package/dist/src/infrastructure/jwt/factory/index.d.ts +0 -1
- package/dist/src/infrastructure/jwt/factory/signature-strategy.factory.d.ts +0 -21
- package/dist/src/infrastructure/jwt/factory/signature-strategy.factory.js +0 -61
- package/dist/src/infrastructure/jwt/index.d.ts +0 -3
- package/dist/src/infrastructure/jwt/signature-strategy.factory.d.ts +0 -21
- package/dist/src/infrastructure/jwt/signature-strategy.factory.js +0 -61
- package/dist/src/infrastructure/jwt/strategies/ecdsa-signature-strategy.d.ts +0 -47
- package/dist/src/infrastructure/jwt/strategies/ecdsa-signature-strategy.js +0 -124
- package/dist/src/infrastructure/jwt/strategies/ecdsa-signature.strategy.d.ts +0 -47
- package/dist/src/infrastructure/jwt/strategies/ecdsa-signature.strategy.js +0 -124
- package/dist/src/infrastructure/jwt/strategies/hmac-signature-strategy.d.ts +0 -54
- package/dist/src/infrastructure/jwt/strategies/hmac-signature-strategy.js +0 -129
- package/dist/src/infrastructure/jwt/strategies/hmac-signature.strategy.d.ts +0 -54
- package/dist/src/infrastructure/jwt/strategies/hmac-signature.strategy.js +0 -129
- package/dist/src/infrastructure/jwt/strategies/index.d.ts +0 -3
- package/dist/src/infrastructure/jwt/strategies/index.js +0 -19
- package/dist/src/infrastructure/jwt/strategies/rsa-signature-strategy.d.ts +0 -47
- package/dist/src/infrastructure/jwt/strategies/rsa-signature-strategy.js +0 -124
- package/dist/src/infrastructure/jwt/strategies/rsa-signature.strategy.d.ts +0 -47
- package/dist/src/infrastructure/jwt/strategies/rsa-signature.strategy.js +0 -124
- package/dist/src/infrastructure/jwt/token/actions/jwt-token-generator.d.ts +0 -57
- package/dist/src/infrastructure/jwt/token/actions/jwt-token-generator.js +0 -123
- package/dist/src/infrastructure/jwt/token/actions/jwt-token-verifier.d.ts +0 -59
- package/dist/src/infrastructure/jwt/token/actions/jwt-token-verifier.js +0 -100
- package/dist/src/infrastructure/jwt/token/index.d.ts +0 -5
- package/dist/src/infrastructure/jwt/token/index.js +0 -21
- package/dist/src/infrastructure/jwt/token/jwt-signer.d.ts +0 -33
- package/dist/src/infrastructure/jwt/token/jwt-signer.js +0 -46
- package/dist/src/infrastructure/jwt/token/jwt-token-parser.d.ts +0 -29
- package/dist/src/infrastructure/jwt/token/jwt-token-parser.js +0 -57
- package/dist/src/infrastructure/jwt/token/jwt-token-validator.d.ts +0 -32
- package/dist/src/infrastructure/jwt/token/jwt-token-validator.js +0 -77
- package/dist/src/infrastructure/jwt/token/tools/jwt-signer.d.ts +0 -33
- package/dist/src/infrastructure/jwt/token/tools/jwt-signer.js +0 -46
- package/dist/src/infrastructure/jwt/token/tools/jwt-token-parser.d.ts +0 -30
- package/dist/src/infrastructure/jwt/token/tools/jwt-token-parser.js +0 -57
- package/dist/src/infrastructure/jwt/token/tools/jwt-token-validator.d.ts +0 -32
- package/dist/src/infrastructure/jwt/token/tools/jwt-token-validator.js +0 -77
- package/dist/src/infrastructure/repositories/index.d.ts +0 -1
- package/dist/src/infrastructure/repositories/test/in-memory-token-session.repository.d.ts +0 -67
- package/dist/src/infrastructure/repositories/test/in-memory-token-session.repository.js +0 -128
- package/dist/src/infrastructure/services/default-token-session.service.d.ts +0 -18
- package/dist/src/infrastructure/services/jwt-token.service.d.ts +0 -15
- package/dist/src/infrastructure/services/jwt-token.service.js +0 -44
- package/dist/src/infrastructure/services/simple-jwt-token.service.d.ts +0 -15
- package/dist/src/infrastructure/services/simple-jwt-token.service.js +0 -46
- package/dist/src/infrastructure/services/token-session.service.d.ts +0 -24
- package/dist/src/infrastructure/services/token-session.service.js +0 -131
- package/dist/src/infrastructure/types/auth-service-container.d.ts +0 -14
- package/dist/src/shared/constants/index.d.ts +0 -1
- package/dist/src/shared/constants/jwt-algorithms.d.ts +0 -17
- package/dist/src/shared/constants/jwt-algorithms.js +0 -23
- package/dist/src/shared/encoders/base64-url-encoder.d.ts +0 -29
- package/dist/src/shared/encoders/base64-url-encoder.js +0 -45
- package/dist/src/shared/encoders/index.d.ts +0 -1
- package/dist/src/shared/encoders/index.js +0 -17
- package/dist/src/shared/index.d.ts +0 -4
- package/dist/src/shared/index.js +0 -20
- package/dist/src/shared/types/index.d.ts +0 -1
- package/dist/src/shared/types/jwt.d.ts +0 -25
- package/dist/src/shared/types/jwt.js +0 -2
- package/dist/src/shared/types/jwt.types.d.ts +0 -39
- package/dist/src/shared/types/jwt.types.js +0 -2
- package/dist/tests/application/factory/auth-service-factory.spec.d.ts +0 -1
- package/dist/tests/application/factory/auth-service-factory.spec.js +0 -97
- package/dist/tests/application/use-cases/login-with-password.integration.spec.d.ts +0 -1
- package/dist/tests/application/use-cases/login-with-password.integration.spec.js +0 -140
- package/dist/tests/application/use-cases/logout-use-case.spec.d.ts +0 -1
- package/dist/tests/application/use-cases/logout-use-case.spec.js +0 -40
- package/dist/tests/application/use-cases/refresh-token-use-case.spec.d.ts +0 -1
- package/dist/tests/application/use-cases/refresh-token-use-case.spec.js +0 -116
- package/dist/tests/application/use-cases/register-user.usecase.spec.d.ts +0 -1
- package/dist/tests/application/use-cases/register-user.usecase.spec.js +0 -151
- package/dist/tests/domain/entities/credential.spec.d.ts +0 -1
- package/dist/tests/domain/entities/credential.spec.js +0 -93
- package/dist/tests/domain/entities/user.spec.d.ts +0 -1
- package/dist/tests/domain/entities/user.spec.js +0 -93
- package/dist/tests/domain/object-values/email.spec.d.ts +0 -1
- package/dist/tests/domain/object-values/email.spec.js +0 -77
- package/dist/tests/domain/object-values/hashed-password.spec.d.ts +0 -1
- package/dist/tests/domain/object-values/hashed-password.spec.js +0 -54
- package/dist/tests/domain/object-values/id.spec.d.ts +0 -1
- package/dist/tests/domain/object-values/id.spec.js +0 -48
- package/dist/tests/domain/object-values/permission.spec.d.ts +0 -1
- package/dist/tests/domain/object-values/permission.spec.js +0 -75
- package/dist/tests/domain/object-values/role.spec.d.ts +0 -1
- package/dist/tests/domain/object-values/role.spec.js +0 -139
- package/dist/tests/domain/services/default-password-policy.spec.d.ts +0 -1
- package/dist/tests/domain/services/default-password-policy.spec.js +0 -69
- package/dist/tests/doman/entities/credential.spec.d.ts +0 -1
- package/dist/tests/doman/entities/credential.spec.js +0 -93
- package/dist/tests/doman/entities/user.spec.d.ts +0 -1
- package/dist/tests/doman/entities/user.spec.js +0 -93
- package/dist/tests/doman/object-values/email.spec.d.ts +0 -1
- package/dist/tests/doman/object-values/email.spec.js +0 -77
- package/dist/tests/doman/object-values/hashed-password.spec.d.ts +0 -1
- package/dist/tests/doman/object-values/hashed-password.spec.js +0 -54
- package/dist/tests/doman/object-values/id.spec.d.ts +0 -1
- package/dist/tests/doman/object-values/id.spec.js +0 -48
- package/dist/tests/doman/object-values/permission.spec.d.ts +0 -1
- package/dist/tests/doman/object-values/permission.spec.js +0 -75
- package/dist/tests/doman/object-values/role.spec.d.ts +0 -1
- package/dist/tests/doman/object-values/role.spec.js +0 -139
- package/dist/tests/helpers/make-jwt-subject.d.ts +0 -7
- package/dist/tests/helpers/make-jwt-subject.js +0 -16
- package/dist/tests/helpers/make-jwt-user.d.ts +0 -7
- package/dist/tests/helpers/make-jwt-user.js +0 -16
- package/dist/tests/helpers/make-user.d.ts +0 -2
- package/dist/tests/helpers/make-user.js +0 -15
- package/dist/tests/infrastructure/jwt/signature-strategy-factory.spec.d.ts +0 -1
- package/dist/tests/infrastructure/jwt/signature-strategy-factory.spec.js +0 -127
- package/dist/tests/infrastructure/jwt/strategies/ecdsa-signature-strategy.spec.d.ts +0 -1
- package/dist/tests/infrastructure/jwt/strategies/ecdsa-signature-strategy.spec.js +0 -157
- package/dist/tests/infrastructure/jwt/strategies/hmac-signature-strategy.spec.d.ts +0 -1
- package/dist/tests/infrastructure/jwt/strategies/hmac-signature-strategy.spec.js +0 -150
- package/dist/tests/infrastructure/jwt/strategies/rsa-signature-strategy..spec.d.ts +0 -1
- package/dist/tests/infrastructure/jwt/strategies/rsa-signature-strategy..spec.js +0 -156
- package/dist/tests/infrastructure/jwt/token/actions/jwt-token-generator.spec.d.ts +0 -1
- package/dist/tests/infrastructure/jwt/token/actions/jwt-token-generator.spec.js +0 -179
- package/dist/tests/infrastructure/jwt/token/actions/jwt-token-verifier.spec.d.ts +0 -1
- package/dist/tests/infrastructure/jwt/token/actions/jwt-token-verifier.spec.js +0 -142
- package/dist/tests/infrastructure/jwt/token/jwt-signer.spec.d.ts +0 -1
- package/dist/tests/infrastructure/jwt/token/jwt-signer.spec.js +0 -125
- package/dist/tests/infrastructure/jwt/token/jwt-token-parser.spec.d.ts +0 -1
- package/dist/tests/infrastructure/jwt/token/jwt-token-parser.spec.js +0 -116
- package/dist/tests/infrastructure/jwt/token/jwt-token-validator.spec.d.ts +0 -1
- package/dist/tests/infrastructure/jwt/token/jwt-token-validator.spec.js +0 -88
- package/dist/tests/infrastructure/jwt/token/tools/jwt-signer.spec.d.ts +0 -1
- package/dist/tests/infrastructure/jwt/token/tools/jwt-signer.spec.js +0 -126
- package/dist/tests/infrastructure/jwt/token/tools/jwt-token-parser.spec.d.ts +0 -1
- package/dist/tests/infrastructure/jwt/token/tools/jwt-token-parser.spec.js +0 -116
- package/dist/tests/infrastructure/jwt/token/tools/jwt-token-validator.spec.d.ts +0 -1
- package/dist/tests/infrastructure/jwt/token/tools/jwt-token-validator.spec.js +0 -88
- package/dist/tests/infrastructure/security/security/bcrypt-password-hasher.spec.d.ts +0 -1
- package/dist/tests/infrastructure/security/security/bcrypt-password-hasher.spec.js +0 -37
- package/dist/tests/infrastructure/services/jwt-token-service.spec.d.ts +0 -1
- package/dist/tests/infrastructure/services/jwt-token-service.spec.js +0 -145
- package/dist/tests/infrastructure/services/token-session.service.spec.d.ts +0 -1
- package/dist/tests/infrastructure/services/token-session.service.spec.js +0 -269
- package/dist/tests/shared/constants/jwt-algorithms.spec.d.ts +0 -1
- package/dist/tests/shared/constants/jwt-algorithms.spec.js +0 -27
- package/dist/tests/shared/encoders/base64-url-encoder.spec.d.ts +0 -1
- package/dist/tests/shared/encoders/base64-url-encoder.spec.js +0 -70
- package/dist/tests/shared/utils/time-parser.spec.d.ts +0 -1
- package/dist/tests/shared/utils/time-parser.spec.js +0 -80
- package/dist/utils/index.d.ts +0 -1
- package/dist/utils/index.js +0 -17
- package/dist/utils/time-parser.d.ts +0 -28
- package/dist/utils/time-parser.js +0 -76
- /package/dist/{src/application/dtos/login.dto.js → application/dtos/request/login.request.js} +0 -0
- /package/dist/{src/application/dtos/logout.dto.js → application/dtos/request/logout.request.js} +0 -0
- /package/dist/{src/application/dtos/refresh-token.dto.js → application/dtos/request/refresh-token.request.js} +0 -0
- /package/dist/{src/application/dtos/register-user.dto.js → application/dtos/request/register-user.request.js} +0 -0
- /package/dist/{src/domain/ports/auth/password-hasher.js → application/dtos/response/login.response.js} +0 -0
- /package/dist/{src/domain/ports/auth/password-policy.port.js → application/dtos/response/logout.response.js} +0 -0
- /package/dist/{src/domain/ports/jwt/factory/signature-strategy-factory.port.js → application/dtos/response/refresh-token.response.js} +0 -0
- /package/dist/{src/domain/ports/jwt/payload/jwt-payload.port.js → application/dtos/response/register-user.response.js} +0 -0
- /package/dist/{src/domain/ports/jwt/signature-strategy-factory.port.js → application/dtos/type/user-role.type.js} +0 -0
- /package/dist/{src/application → application}/factories/index.d.ts +0 -0
- /package/dist/{src/application → application}/factories/index.js +0 -0
- /package/dist/{src/domain/ports/repository/credential.repository.js → application/types/auth-service-factory-options.type.js} +0 -0
- /package/dist/{src/application → application}/use-cases/index.d.ts +0 -0
- /package/dist/{src/application → application}/use-cases/index.js +0 -0
- /package/dist/{src/domain → domain}/entities/credential.entity.d.ts +0 -0
- /package/dist/{src/domain → domain}/entities/credential.entity.js +0 -0
- /package/dist/{src/domain → domain}/entities/index.d.ts +0 -0
- /package/dist/{src/domain → domain}/entities/index.js +0 -0
- /package/dist/{src/domain → domain}/entities/user.entity.d.ts +0 -0
- /package/dist/{src/domain → domain}/entities/user.entity.js +0 -0
- /package/dist/{src/domain → domain}/errors/identity.errors.d.ts +0 -0
- /package/dist/{src/domain → domain}/errors/identity.errors.js +0 -0
- /package/dist/{src/domain → domain}/errors/index.d.ts +0 -0
- /package/dist/{src/domain → domain}/errors/index.js +0 -0
- /package/dist/{src/domain → domain}/object-values/email.d.ts +0 -0
- /package/dist/{src/domain → domain}/object-values/email.js +0 -0
- /package/dist/{src/domain → domain}/object-values/hashed-password.d.ts +0 -0
- /package/dist/{src/domain → domain}/object-values/hashed-password.js +0 -0
- /package/dist/{src/domain → domain}/object-values/id.d.ts +0 -0
- /package/dist/{src/domain → domain}/object-values/id.js +0 -0
- /package/dist/{src/domain → domain}/object-values/index.d.ts +0 -0
- /package/dist/{src/domain → domain}/object-values/index.js +0 -0
- /package/dist/{src/domain → domain}/object-values/permission.d.ts +0 -0
- /package/dist/{src/domain → domain}/object-values/permission.js +0 -0
- /package/dist/{src/domain → domain}/object-values/role.d.ts +0 -0
- /package/dist/{src/domain → domain}/object-values/role.js +0 -0
- /package/dist/{src/domain/ports/repository/user.repository.js → domain/ports/auth/password-hasher.port.js} +0 -0
- /package/dist/{src/domain/ports/token/token-session.port.js → domain/ports/auth/password-policy.port.js} +0 -0
- /package/dist/{src/domain → domain}/ports/jwt/payload/jwt-payload.port.d.ts +0 -0
- /package/dist/{src/domain/ports/token/token.service.port.js → domain/ports/jwt/payload/jwt-payload.port.js} +0 -0
- /package/dist/{src/domain/props/entities/credential.props.js → domain/ports/repository/credential.repository.js} +0 -0
- /package/dist/{src/domain/props/entities/user.props.js → domain/ports/repository/user-repository.port.js} +0 -0
- /package/dist/{src/domain/props/jwt/create-payload.props.js → domain/ports/token/token-session.port.js} +0 -0
- /package/dist/{src/domain/services → domain/ports/token}/token.service.port.js +0 -0
- /package/dist/{src/domain → domain}/props/entities/credential.props.d.ts +0 -0
- /package/dist/{src/domain/props/jwt/generate-access-token.props.js → domain/props/entities/credential.props.js} +0 -0
- /package/dist/{src/domain → domain}/props/entities/index.d.ts +0 -0
- /package/dist/{src/domain → domain}/props/entities/index.js +0 -0
- /package/dist/{src/domain → domain}/props/entities/user.props.d.ts +0 -0
- /package/dist/{src/domain/props/jwt/generate-refresh-token.props.js → domain/props/entities/user.props.js} +0 -0
- /package/dist/{src/domain → domain}/props/index.d.ts +0 -0
- /package/dist/{src/domain → domain}/props/index.js +0 -0
- /package/dist/{src/domain/props/services → domain/props/jwt}/generate-access-token.props.js +0 -0
- /package/dist/{src/domain/props/services → domain/props/jwt}/generate-refresh-token.props.js +0 -0
- /package/dist/{src/domain → domain}/props/jwt/jwt-user.d.ts +0 -0
- /package/dist/{src/domain → domain}/props/jwt/jwt-user.js +0 -0
- /package/dist/{src/domain → domain}/services/index.d.ts +0 -0
- /package/dist/{src/domain → domain}/services/index.js +0 -0
- /package/dist/{src/domain → domain}/services/password-policy.service.js +0 -0
- /package/dist/{src/infrastructure/repositories/test → in-memory}/in-memory-user.repository.js +0 -0
- /package/dist/{src/infrastructure/repositories/test → in-memory}/index.d.ts +0 -0
- /package/dist/{src/infrastructure/repositories/test → in-memory}/index.js +0 -0
- /package/dist/{src/domain/ports/auth/password-policy-config.port.d.ts → infrastructure/index.d.ts} +0 -0
- /package/dist/{src/infrastructure → infrastructure}/security/index.d.ts +0 -0
- /package/dist/{src/infrastructure → infrastructure}/security/index.js +0 -0
- /package/dist/{src/infrastructure → infrastructure}/types/auth-service-container.js +0 -0
- /package/dist/{src/infrastructure → infrastructure}/types/index.d.ts +0 -0
- /package/dist/{src/infrastructure → infrastructure}/types/index.js +0 -0
- /package/dist/{src/shared → shared}/utils/index.d.ts +0 -0
- /package/dist/{src/shared → shared}/utils/index.js +0 -0
- /package/dist/{src/shared → shared}/utils/time-parser.d.ts +0 -0
- /package/dist/{src/shared → shared}/utils/time-parser.js +0 -0
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
import { JwtSigner } from "..";
|
|
2
|
-
import { IGenerateAccessTokenProps, IGenerateRefreshTokenProps } from "../../../../domain/props";
|
|
3
|
-
import { Base64UrlEncoder } from "../../../../shared";
|
|
4
|
-
/**
|
|
5
|
-
*Crea tokens JWT válidos (tanto de acceso como de refresco)
|
|
6
|
-
*a partir de un usuario y una configuración.
|
|
7
|
-
*/
|
|
8
|
-
export declare class JwtTokenGenerator {
|
|
9
|
-
private readonly encoder;
|
|
10
|
-
private readonly signer;
|
|
11
|
-
/**
|
|
12
|
-
* Crea una nueva instancia de JwtTokenGenerator
|
|
13
|
-
* @param encoder El codificador Base64 URL-safe a usar
|
|
14
|
-
* @param signer El firmador JWT a usar
|
|
15
|
-
*/
|
|
16
|
-
constructor(encoder: Base64UrlEncoder, signer: JwtSigner);
|
|
17
|
-
/**
|
|
18
|
-
* Genera un access token con accessTokenSecret
|
|
19
|
-
* @param props Las propiedades necesarias para generar el access token
|
|
20
|
-
* @returns El token JWT generado como string
|
|
21
|
-
*/
|
|
22
|
-
generateAccessToken(props: IGenerateAccessTokenProps): string;
|
|
23
|
-
/**
|
|
24
|
-
* Genera un access token con refreshTokenSecret
|
|
25
|
-
* @param props Las propiedades necesarias para generar el refresh token
|
|
26
|
-
* @returns El token JWT generado como string
|
|
27
|
-
*/
|
|
28
|
-
generateRefreshToken(props: IGenerateRefreshTokenProps): string;
|
|
29
|
-
/**
|
|
30
|
-
* Genera un token JWT completo (header.payload.signature)
|
|
31
|
-
* @param user El usuario para quien se genera el token
|
|
32
|
-
* @param props Las propiedades necesarias para generar el token
|
|
33
|
-
* @returns El token JWT generado como string
|
|
34
|
-
*/
|
|
35
|
-
private generateToken;
|
|
36
|
-
/**
|
|
37
|
-
* Crea el payload del token JWT
|
|
38
|
-
* @param props Las propiedades necesarias para crear el payload
|
|
39
|
-
* @returns El payload del token JWT como objeto
|
|
40
|
-
*/
|
|
41
|
-
private createPayload;
|
|
42
|
-
/**
|
|
43
|
-
* Define la cabecera del token JWT
|
|
44
|
-
* @param config La configuración del servicio JWT
|
|
45
|
-
* @returns El header del token JWT como objeto
|
|
46
|
-
*/
|
|
47
|
-
private createHeader;
|
|
48
|
-
/**
|
|
49
|
-
* Codifica el header y el payload en Base64URL.
|
|
50
|
-
* Luego genera la firma y ensambla el token completo.
|
|
51
|
-
* @param header El header del token JWT
|
|
52
|
-
* @param payload El payload del token JWT
|
|
53
|
-
* @param secret La clave secreta para firmar el token
|
|
54
|
-
* @returns El token JWT completo como string
|
|
55
|
-
*/
|
|
56
|
-
private assembleToken;
|
|
57
|
-
}
|
|
@@ -1,123 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.JwtTokenGenerator = void 0;
|
|
4
|
-
const shared_1 = require("../../../../shared");
|
|
5
|
-
/**
|
|
6
|
-
*Crea tokens JWT válidos (tanto de acceso como de refresco)
|
|
7
|
-
*a partir de un usuario y una configuración.
|
|
8
|
-
*/
|
|
9
|
-
class JwtTokenGenerator {
|
|
10
|
-
/**
|
|
11
|
-
* Crea una nueva instancia de JwtTokenGenerator
|
|
12
|
-
* @param encoder El codificador Base64 URL-safe a usar
|
|
13
|
-
* @param signer El firmador JWT a usar
|
|
14
|
-
*/
|
|
15
|
-
constructor(
|
|
16
|
-
// Base64UrlEncoder → codifica texto (header y payload) al formato Base64URL, estándar de JWT.
|
|
17
|
-
encoder,
|
|
18
|
-
// JwtSigner → genera la firma criptográfica (signature) con el secreto correspondiente
|
|
19
|
-
signer // // Algoritmo de firma a usar (HS256, RS256, ES256, etc.) // private readonly algorithm: AnyAlgorithm
|
|
20
|
-
) {
|
|
21
|
-
this.encoder = encoder;
|
|
22
|
-
this.signer = signer;
|
|
23
|
-
}
|
|
24
|
-
/**
|
|
25
|
-
* Genera un access token con accessTokenSecret
|
|
26
|
-
* @param props Las propiedades necesarias para generar el access token
|
|
27
|
-
* @returns El token JWT generado como string
|
|
28
|
-
*/
|
|
29
|
-
generateAccessToken(props) {
|
|
30
|
-
return this.generateToken({
|
|
31
|
-
user: props.user,
|
|
32
|
-
expiresIn: props.expiresIn,
|
|
33
|
-
defaultExpirationMs: props.config.accessTokenExpirationMs,
|
|
34
|
-
secret: props.config.accessTokenSecret,
|
|
35
|
-
config: props.config,
|
|
36
|
-
customClaims: props.customClaims,
|
|
37
|
-
});
|
|
38
|
-
}
|
|
39
|
-
/**
|
|
40
|
-
* Genera un access token con refreshTokenSecret
|
|
41
|
-
* @param props Las propiedades necesarias para generar el refresh token
|
|
42
|
-
* @returns El token JWT generado como string
|
|
43
|
-
*/
|
|
44
|
-
generateRefreshToken(props) {
|
|
45
|
-
return this.generateToken({
|
|
46
|
-
user: props.user,
|
|
47
|
-
expiresIn: props.expiresIn,
|
|
48
|
-
defaultExpirationMs: props.config.refreshTokenExpirationMs,
|
|
49
|
-
secret: props.config.refreshTokenSecret,
|
|
50
|
-
config: props.config,
|
|
51
|
-
customClaims: props.customClaims,
|
|
52
|
-
});
|
|
53
|
-
}
|
|
54
|
-
/**
|
|
55
|
-
* Genera un token JWT completo (header.payload.signature)
|
|
56
|
-
* @param user El usuario para quien se genera el token
|
|
57
|
-
* @param props Las propiedades necesarias para generar el token
|
|
58
|
-
* @returns El token JWT generado como string
|
|
59
|
-
*/
|
|
60
|
-
generateToken(props) {
|
|
61
|
-
const { secret, config } = props;
|
|
62
|
-
// Crea el payload (datos que lleva el token).
|
|
63
|
-
const payload = this.createPayload(props);
|
|
64
|
-
// Crea el header (metadatos sobre el algoritmo).
|
|
65
|
-
const header = this.createHeader(config);
|
|
66
|
-
// une todo y lo firma.
|
|
67
|
-
return this.assembleToken(header, payload, secret, props.config.algorithm);
|
|
68
|
-
}
|
|
69
|
-
/**
|
|
70
|
-
* Crea el payload del token JWT
|
|
71
|
-
* @param props Las propiedades necesarias para crear el payload
|
|
72
|
-
* @returns El payload del token JWT como objeto
|
|
73
|
-
*/
|
|
74
|
-
createPayload(props) {
|
|
75
|
-
const { user, expiresIn, defaultExpirationMs, customClaims } = props;
|
|
76
|
-
// Calcula el tiempo de expiración (exp) en milisegundos.
|
|
77
|
-
// Convierte el valor expiresIn (ej. "15m" o "1h") usando
|
|
78
|
-
// Si no se especifica, usa el valor por defecto del config
|
|
79
|
-
const expirationMs = expiresIn
|
|
80
|
-
? shared_1.TimeParser.parseToMilliseconds(expiresIn)
|
|
81
|
-
: defaultExpirationMs;
|
|
82
|
-
const now = Date.now();
|
|
83
|
-
const exp = now + expirationMs;
|
|
84
|
-
// Luego construye el payload
|
|
85
|
-
return {
|
|
86
|
-
sub: user.id,
|
|
87
|
-
roles: user.roles.map((r) => r),
|
|
88
|
-
customClaims: customClaims || {},
|
|
89
|
-
jti: crypto.randomUUID(), // ID único del token
|
|
90
|
-
iat: Math.floor(now / 1000),
|
|
91
|
-
exp: Math.floor(exp / 1000),
|
|
92
|
-
iss: props.config.issuer,
|
|
93
|
-
aud: props.config.audience,
|
|
94
|
-
};
|
|
95
|
-
}
|
|
96
|
-
/**
|
|
97
|
-
* Define la cabecera del token JWT
|
|
98
|
-
* @param config La configuración del servicio JWT
|
|
99
|
-
* @returns El header del token JWT como objeto
|
|
100
|
-
*/
|
|
101
|
-
createHeader(config) {
|
|
102
|
-
return {
|
|
103
|
-
alg: config.algorithm,
|
|
104
|
-
typ: "JWT",
|
|
105
|
-
};
|
|
106
|
-
}
|
|
107
|
-
/**
|
|
108
|
-
* Codifica el header y el payload en Base64URL.
|
|
109
|
-
* Luego genera la firma y ensambla el token completo.
|
|
110
|
-
* @param header El header del token JWT
|
|
111
|
-
* @param payload El payload del token JWT
|
|
112
|
-
* @param secret La clave secreta para firmar el token
|
|
113
|
-
* @returns El token JWT completo como string
|
|
114
|
-
*/
|
|
115
|
-
assembleToken(header, payload, secret, algorithm) {
|
|
116
|
-
const encodedHeader = this.encoder.encode(JSON.stringify(header));
|
|
117
|
-
const encodedPayload = this.encoder.encode(JSON.stringify(payload));
|
|
118
|
-
// Une las tres partes
|
|
119
|
-
const signature = this.signer.sign(`${encodedHeader}.${encodedPayload}`, secret, algorithm);
|
|
120
|
-
return `${encodedHeader}.${encodedPayload}.${signature}`;
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
exports.JwtTokenGenerator = JwtTokenGenerator;
|
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
import { JwtSigner, JwtTokenParser } from "..";
|
|
2
|
-
import { IJWTPayload } from "../../../../domain/ports";
|
|
3
|
-
import { AnyAlgorithm, JwtTokenServiceConfig } from "../../../../shared";
|
|
4
|
-
/**
|
|
5
|
-
*Esta clase es el verificador de tokens JWT dentro de una arquitectura limpia
|
|
6
|
-
*Su papel es comprobar la validez y vigencia de un token (tanto access como refresh),
|
|
7
|
-
*sin depender de frameworks externos directamente.
|
|
8
|
-
*/
|
|
9
|
-
export declare class JwtTokenVerifier {
|
|
10
|
-
private readonly signer;
|
|
11
|
-
private readonly parser;
|
|
12
|
-
private readonly algorithm;
|
|
13
|
-
/**
|
|
14
|
-
* Crea una nueva instancia de JwtTokenVerifier
|
|
15
|
-
* @param signer firma y verifica la firma de un token JWT
|
|
16
|
-
* @param parser separa y valida las partes del token (header.payload.signature) y convierte el payload en objeto.
|
|
17
|
-
*/
|
|
18
|
-
constructor(signer: JwtSigner, parser: JwtTokenParser, algorithm: AnyAlgorithm);
|
|
19
|
-
/**
|
|
20
|
-
*Verifica un token de acceso usando la clave accessTokenSecret definida en JwtTokenServiceConfig.
|
|
21
|
-
*Devuelve un objeto TokenPayload con los datos del usuario.
|
|
22
|
-
* @param token El token JWT completo como string
|
|
23
|
-
* @param config La configuración del servicio JWT
|
|
24
|
-
* @returns Un objeto TokenPayload con los datos del usuario
|
|
25
|
-
*/
|
|
26
|
-
verifyAccessToken(token: string, config: JwtTokenServiceConfig): IJWTPayload;
|
|
27
|
-
/**
|
|
28
|
-
*Verifica un token de acceso usando la clave refreshTokenSecret definida en JwtTokenServiceConfig.
|
|
29
|
-
*Devuelve un objeto TokenPayload con los datos del usuario.
|
|
30
|
-
* @param token El token JWT completo como string
|
|
31
|
-
* @param config La configuración del servicio JWT
|
|
32
|
-
* @returns Un objeto TokenPayload con los datos del usuario
|
|
33
|
-
*/
|
|
34
|
-
verifyRefreshToken(token: string, config: JwtTokenServiceConfig): IJWTPayload;
|
|
35
|
-
/**
|
|
36
|
-
* Extrae la parte payload del token y devuelve la fecha de expiración (exp) como un objeto Date.
|
|
37
|
-
* No valida la firma ni la validez temporal.
|
|
38
|
-
* @param token El token JWT completo como string
|
|
39
|
-
* @returns La fecha de expiración del token como objeto Date
|
|
40
|
-
*/
|
|
41
|
-
getTokenExpiration(token: string): Date;
|
|
42
|
-
/**
|
|
43
|
-
* Verifica el token JWT completo:
|
|
44
|
-
* - Extrae las partes usando JwtTokenParser
|
|
45
|
-
* - Verifica la firma con JwtSigner
|
|
46
|
-
* - Valida la expiración del token
|
|
47
|
-
* - Devuelve un TokenPayload limpio
|
|
48
|
-
* @param token El token JWT completo como string
|
|
49
|
-
* @param secret La clave secreta para verificar la firma
|
|
50
|
-
* @returns Un objeto TokenPayload con los datos del usuario
|
|
51
|
-
*/
|
|
52
|
-
private verifyToken;
|
|
53
|
-
/**
|
|
54
|
-
* Valida si el token ha expirado basándose en el campo 'exp' del payload.
|
|
55
|
-
* @param payload El payload decodificado del token JWT
|
|
56
|
-
* @throws TokenExpiredError si el token ha expirado
|
|
57
|
-
*/
|
|
58
|
-
private validateExpiration;
|
|
59
|
-
}
|
|
@@ -1,100 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.JwtTokenVerifier = void 0;
|
|
4
|
-
const errors_1 = require("../../../../domain/errors");
|
|
5
|
-
/**
|
|
6
|
-
*Esta clase es el verificador de tokens JWT dentro de una arquitectura limpia
|
|
7
|
-
*Su papel es comprobar la validez y vigencia de un token (tanto access como refresh),
|
|
8
|
-
*sin depender de frameworks externos directamente.
|
|
9
|
-
*/
|
|
10
|
-
class JwtTokenVerifier {
|
|
11
|
-
/**
|
|
12
|
-
* Crea una nueva instancia de JwtTokenVerifier
|
|
13
|
-
* @param signer firma y verifica la firma de un token JWT
|
|
14
|
-
* @param parser separa y valida las partes del token (header.payload.signature) y convierte el payload en objeto.
|
|
15
|
-
*/
|
|
16
|
-
constructor(
|
|
17
|
-
// Se encarga de firmar y verificar firmas digitales usando el secreto correspondiente.
|
|
18
|
-
signer,
|
|
19
|
-
// Separa y valida las partes del token (header.payload.signature) y convierte el payload en objeto.
|
|
20
|
-
parser,
|
|
21
|
-
// Algoritmo de firma a usar (HS256, RS256, ES256, etc.)
|
|
22
|
-
algorithm) {
|
|
23
|
-
this.signer = signer;
|
|
24
|
-
this.parser = parser;
|
|
25
|
-
this.algorithm = algorithm;
|
|
26
|
-
}
|
|
27
|
-
/**
|
|
28
|
-
*Verifica un token de acceso usando la clave accessTokenSecret definida en JwtTokenServiceConfig.
|
|
29
|
-
*Devuelve un objeto TokenPayload con los datos del usuario.
|
|
30
|
-
* @param token El token JWT completo como string
|
|
31
|
-
* @param config La configuración del servicio JWT
|
|
32
|
-
* @returns Un objeto TokenPayload con los datos del usuario
|
|
33
|
-
*/
|
|
34
|
-
verifyAccessToken(token, config) {
|
|
35
|
-
return this.verifyToken(token, config.accessTokenSecret);
|
|
36
|
-
}
|
|
37
|
-
/**
|
|
38
|
-
*Verifica un token de acceso usando la clave refreshTokenSecret definida en JwtTokenServiceConfig.
|
|
39
|
-
*Devuelve un objeto TokenPayload con los datos del usuario.
|
|
40
|
-
* @param token El token JWT completo como string
|
|
41
|
-
* @param config La configuración del servicio JWT
|
|
42
|
-
* @returns Un objeto TokenPayload con los datos del usuario
|
|
43
|
-
*/
|
|
44
|
-
verifyRefreshToken(token, config) {
|
|
45
|
-
return this.verifyToken(token, config.refreshTokenSecret);
|
|
46
|
-
}
|
|
47
|
-
/**
|
|
48
|
-
* Extrae la parte payload del token y devuelve la fecha de expiración (exp) como un objeto Date.
|
|
49
|
-
* No valida la firma ni la validez temporal.
|
|
50
|
-
* @param token El token JWT completo como string
|
|
51
|
-
* @returns La fecha de expiración del token como objeto Date
|
|
52
|
-
*/
|
|
53
|
-
getTokenExpiration(token) {
|
|
54
|
-
const payload = this.parser.parsePayload(token);
|
|
55
|
-
return new Date(payload.exp * 1000);
|
|
56
|
-
}
|
|
57
|
-
/**
|
|
58
|
-
* Verifica el token JWT completo:
|
|
59
|
-
* - Extrae las partes usando JwtTokenParser
|
|
60
|
-
* - Verifica la firma con JwtSigner
|
|
61
|
-
* - Valida la expiración del token
|
|
62
|
-
* - Devuelve un TokenPayload limpio
|
|
63
|
-
* @param token El token JWT completo como string
|
|
64
|
-
* @param secret La clave secreta para verificar la firma
|
|
65
|
-
* @returns Un objeto TokenPayload con los datos del usuario
|
|
66
|
-
*/
|
|
67
|
-
verifyToken(token, secret) {
|
|
68
|
-
// Divide el token en sus tres partes
|
|
69
|
-
const [headerPart, payloadPart, signaturePart] = this.parser.extractParts(token);
|
|
70
|
-
// Verifica la firma con el JwtSigner: Si la firma no coincide, lanza un InvalidSignatureError.
|
|
71
|
-
if (!this.signer.verifySignature(`${headerPart}.${payloadPart}`, signaturePart, secret, this.algorithm)) {
|
|
72
|
-
throw new errors_1.InvalidSignatureError("Invalid token signature");
|
|
73
|
-
}
|
|
74
|
-
// Verifica el tiempo de expiración del token.
|
|
75
|
-
const payload = this.parser.parseAndValidatePayload(payloadPart);
|
|
76
|
-
this.validateExpiration(payload);
|
|
77
|
-
// Devuelve un TokenPayload limpio
|
|
78
|
-
return {
|
|
79
|
-
sub: payload.sub,
|
|
80
|
-
roles: payload.roles,
|
|
81
|
-
customClaims: payload.customClaims || {},
|
|
82
|
-
iat: payload.iat,
|
|
83
|
-
exp: payload.exp,
|
|
84
|
-
jti: payload.jti,
|
|
85
|
-
iss: payload.iss,
|
|
86
|
-
aud: payload.aud,
|
|
87
|
-
};
|
|
88
|
-
}
|
|
89
|
-
/**
|
|
90
|
-
* Valida si el token ha expirado basándose en el campo 'exp' del payload.
|
|
91
|
-
* @param payload El payload decodificado del token JWT
|
|
92
|
-
* @throws TokenExpiredError si el token ha expirado
|
|
93
|
-
*/
|
|
94
|
-
validateExpiration(payload) {
|
|
95
|
-
if (payload.exp && Date.now() >= payload.exp * 1000) {
|
|
96
|
-
throw new errors_1.TokenExpiredError("Token expired");
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
exports.JwtTokenVerifier = JwtTokenVerifier;
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
-
};
|
|
16
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
__exportStar(require("./actions/jwt-token-generator"), exports);
|
|
18
|
-
__exportStar(require("./actions/jwt-token-verifier"), exports);
|
|
19
|
-
__exportStar(require("./tools/jwt-signer"), exports);
|
|
20
|
-
__exportStar(require("./tools/jwt-token-parser"), exports);
|
|
21
|
-
__exportStar(require("./tools/jwt-token-validator"), exports);
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
import { AnyAlgorithm, Base64UrlEncoder } from "../../../shared";
|
|
2
|
-
/**
|
|
3
|
-
*Firma y verifica la firma de un token JWT
|
|
4
|
-
*convierte el texto del token en algo criptográficamente confiable, usando el algoritmo configurado
|
|
5
|
-
*/
|
|
6
|
-
export declare class JwtSigner {
|
|
7
|
-
/**
|
|
8
|
-
* La fábrica de estrategias de firma
|
|
9
|
-
*/
|
|
10
|
-
private readonly factory;
|
|
11
|
-
/**
|
|
12
|
-
* Crea una nueva instancia de JwtSigner
|
|
13
|
-
* @param encoder El codificador Base64 URL-safe a usar
|
|
14
|
-
*/
|
|
15
|
-
constructor(encoder: Base64UrlEncoder);
|
|
16
|
-
/**
|
|
17
|
-
*Pide a la fábrica una estrategia de firma compatible con el algoritmo
|
|
18
|
-
* @param data Los datos a firmar (normalmente "header.payload")
|
|
19
|
-
* @param key La clave para firmar (secreta para HMAC, privada para RSA/ECDSA)
|
|
20
|
-
* @param algorithm El algoritmo de firma (por defecto 'HS256')
|
|
21
|
-
* @returns La firma digital como string codificado
|
|
22
|
-
*/
|
|
23
|
-
sign(data: string, key: string, algorithm?: AnyAlgorithm): string;
|
|
24
|
-
/**
|
|
25
|
-
* Verifica si la firma proporcionada coincide con la que se generaría al firmar data con la misma clave
|
|
26
|
-
* @param data Los datos a firmar (normalmente "header.payload")
|
|
27
|
-
* @param signature La firma digital a verificar
|
|
28
|
-
* @param key La clave para verificar (secreta para HMAC, pública para RSA/ECDSA)
|
|
29
|
-
* @param algorithm El algoritmo de firma (por defecto 'HS256')
|
|
30
|
-
* @returns true si la firma es válida, false si no lo es
|
|
31
|
-
*/
|
|
32
|
-
verifySignature(data: string, signature: string, key: string, algorithm?: AnyAlgorithm): boolean;
|
|
33
|
-
}
|
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.JwtSigner = void 0;
|
|
4
|
-
const factory_1 = require("../factory");
|
|
5
|
-
/**
|
|
6
|
-
*Firma y verifica la firma de un token JWT
|
|
7
|
-
*convierte el texto del token en algo criptográficamente confiable, usando el algoritmo configurado
|
|
8
|
-
*/
|
|
9
|
-
class JwtSigner {
|
|
10
|
-
/**
|
|
11
|
-
* Crea una nueva instancia de JwtSigner
|
|
12
|
-
* @param encoder El codificador Base64 URL-safe a usar
|
|
13
|
-
*/
|
|
14
|
-
constructor(encoder) {
|
|
15
|
-
// Usa una fábrica de estrategias de firma (SignatureStrategyFactory) para decidir cómo firmar o verificar
|
|
16
|
-
// La fábrica entrega una implementación distinta según el algoritmo
|
|
17
|
-
// El Base64UrlEncoder se usa internamente para codificar los resultados de la firma en formato JWT-seguro
|
|
18
|
-
this.factory = new factory_1.SignatureStrategyFactory(encoder);
|
|
19
|
-
}
|
|
20
|
-
/**
|
|
21
|
-
*Pide a la fábrica una estrategia de firma compatible con el algoritmo
|
|
22
|
-
* @param data Los datos a firmar (normalmente "header.payload")
|
|
23
|
-
* @param key La clave para firmar (secreta para HMAC, privada para RSA/ECDSA)
|
|
24
|
-
* @param algorithm El algoritmo de firma (por defecto 'HS256')
|
|
25
|
-
* @returns La firma digital como string codificado
|
|
26
|
-
*/
|
|
27
|
-
sign(data, key, algorithm = "HS256") {
|
|
28
|
-
// Firma el data (normalmente "header.payload") con la key usando esa estrategia
|
|
29
|
-
const strategy = this.factory.create(algorithm);
|
|
30
|
-
// Devuelve una cadena Base64URL que representa la firma digital del token.
|
|
31
|
-
return strategy.sign(data, key);
|
|
32
|
-
}
|
|
33
|
-
/**
|
|
34
|
-
* Verifica si la firma proporcionada coincide con la que se generaría al firmar data con la misma clave
|
|
35
|
-
* @param data Los datos a firmar (normalmente "header.payload")
|
|
36
|
-
* @param signature La firma digital a verificar
|
|
37
|
-
* @param key La clave para verificar (secreta para HMAC, pública para RSA/ECDSA)
|
|
38
|
-
* @param algorithm El algoritmo de firma (por defecto 'HS256')
|
|
39
|
-
* @returns true si la firma es válida, false si no lo es
|
|
40
|
-
*/
|
|
41
|
-
verifySignature(data, signature, key, algorithm = "HS256") {
|
|
42
|
-
const strategy = this.factory.create(algorithm);
|
|
43
|
-
return strategy.verify(data, signature, key);
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
exports.JwtSigner = JwtSigner;
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
import { Base64UrlEncoder } from "../../../shared";
|
|
2
|
-
/**
|
|
3
|
-
*Leer y decodificar el contenido de un JWT (sin verificar la firma ni la validez temporal).
|
|
4
|
-
*Separa las partes, decodifica el payload, y valida que sea un objeto JSON bien formado.
|
|
5
|
-
*/
|
|
6
|
-
export declare class JwtTokenParser {
|
|
7
|
-
private readonly encoder;
|
|
8
|
-
/**
|
|
9
|
-
* Recibe un Base64UrlEncoder, encargado de decodificar texto en formato Base64URL
|
|
10
|
-
* @param encoder El codificador Base64 URL-safe a usar
|
|
11
|
-
*/
|
|
12
|
-
constructor(encoder: Base64UrlEncoder);
|
|
13
|
-
extractParts(token: string): [string, string, string];
|
|
14
|
-
/**
|
|
15
|
-
* Leer el contenido del token (por ejemplo, para obtener exp, userId, etc.).
|
|
16
|
-
* No valida la firma ni la validez temporal.
|
|
17
|
-
* @param token El token JWT completo como string
|
|
18
|
-
* @returns El payload decodificado como objeto
|
|
19
|
-
*/
|
|
20
|
-
parsePayload(token: string): any;
|
|
21
|
-
/**
|
|
22
|
-
*Una versión más estricta, usada cuando necesitas asegurarte de que el payload es
|
|
23
|
-
*válido antes de continuar
|
|
24
|
-
* @param payloadPart La parte del payload del token JWT (Base64URL)
|
|
25
|
-
* @returns El payload decodificado como objeto
|
|
26
|
-
* @throws InvalidTokenFormatError si el payload no es un objeto JSON válido
|
|
27
|
-
*/
|
|
28
|
-
parseAndValidatePayload(payloadPart: string): any;
|
|
29
|
-
}
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.JwtTokenParser = void 0;
|
|
4
|
-
const domain_1 = require("../../../domain");
|
|
5
|
-
/**
|
|
6
|
-
*Leer y decodificar el contenido de un JWT (sin verificar la firma ni la validez temporal).
|
|
7
|
-
*Separa las partes, decodifica el payload, y valida que sea un objeto JSON bien formado.
|
|
8
|
-
*/
|
|
9
|
-
class JwtTokenParser {
|
|
10
|
-
/**
|
|
11
|
-
* Recibe un Base64UrlEncoder, encargado de decodificar texto en formato Base64URL
|
|
12
|
-
* @param encoder El codificador Base64 URL-safe a usar
|
|
13
|
-
*/
|
|
14
|
-
constructor(encoder) {
|
|
15
|
-
this.encoder = encoder;
|
|
16
|
-
}
|
|
17
|
-
// Divide el token en sus tres partes estándar: header, payload y signature.
|
|
18
|
-
extractParts(token) {
|
|
19
|
-
const parts = token.split(".");
|
|
20
|
-
return [parts[0], parts[1], parts[2]];
|
|
21
|
-
}
|
|
22
|
-
/**
|
|
23
|
-
* Leer el contenido del token (por ejemplo, para obtener exp, userId, etc.).
|
|
24
|
-
* No valida la firma ni la validez temporal.
|
|
25
|
-
* @param token El token JWT completo como string
|
|
26
|
-
* @returns El payload decodificado como objeto
|
|
27
|
-
*/
|
|
28
|
-
parsePayload(token) {
|
|
29
|
-
const [, payloadPart] = this.extractParts(token);
|
|
30
|
-
return JSON.parse(this.encoder.decode(payloadPart));
|
|
31
|
-
}
|
|
32
|
-
/**
|
|
33
|
-
*Una versión más estricta, usada cuando necesitas asegurarte de que el payload es
|
|
34
|
-
*válido antes de continuar
|
|
35
|
-
* @param payloadPart La parte del payload del token JWT (Base64URL)
|
|
36
|
-
* @returns El payload decodificado como objeto
|
|
37
|
-
* @throws InvalidTokenFormatError si el payload no es un objeto JSON válido
|
|
38
|
-
*/
|
|
39
|
-
parseAndValidatePayload(payloadPart) {
|
|
40
|
-
let payload;
|
|
41
|
-
try {
|
|
42
|
-
// Intenta decodificarlo: Si falla, lanza InvalidTokenFormatError
|
|
43
|
-
payload = JSON.parse(this.encoder.decode(payloadPart));
|
|
44
|
-
}
|
|
45
|
-
catch (decodeError) {
|
|
46
|
-
throw new domain_1.InvalidTokenFormatError("Invalid token payload encoding");
|
|
47
|
-
}
|
|
48
|
-
// Verifica que el resultado sea un objeto JSON válido (no null ni array)
|
|
49
|
-
if (payload === null ||
|
|
50
|
-
typeof payload !== "object" ||
|
|
51
|
-
Array.isArray(payload)) {
|
|
52
|
-
throw new domain_1.InvalidTokenFormatError("Token payload must be an object");
|
|
53
|
-
}
|
|
54
|
-
return payload;
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
exports.JwtTokenParser = JwtTokenParser;
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
*Esta clase es el validador sintáctico del token JWT.
|
|
3
|
-
*Su función es detectar tokens mal formados o sospechosos antes de intentar decodificarlos.
|
|
4
|
-
*/
|
|
5
|
-
export declare class JwtTokenValidator {
|
|
6
|
-
/**
|
|
7
|
-
* Valida que el token JWT tenga un formato básico correcto.
|
|
8
|
-
* @param token El token JWT completo como string
|
|
9
|
-
* @throws InvalidTokenFormatError si el token no cumple con el formato básico JWT
|
|
10
|
-
*/
|
|
11
|
-
validateTokenInput(token: string): void;
|
|
12
|
-
/**
|
|
13
|
-
* Comprueba lo más elemental sobre el formato del token JWT.
|
|
14
|
-
* @param token El token JWT completo como string
|
|
15
|
-
* @throws InvalidTokenFormatError si el token no cumple con los requisitos básicos
|
|
16
|
-
*/
|
|
17
|
-
private validateBasicFormat;
|
|
18
|
-
/**
|
|
19
|
-
* Se asegura de que tenga una estructura básica JWT:
|
|
20
|
-
* - Mínimo 10 caracteres
|
|
21
|
-
* - Contener exactamente dos puntos (.) separando header, payload y signature
|
|
22
|
-
* @param token El token JWT completo como string
|
|
23
|
-
* @throws InvalidTokenFormatError si la estructura no es válida
|
|
24
|
-
*/
|
|
25
|
-
private validateJwtStructure;
|
|
26
|
-
/**
|
|
27
|
-
* Verifica que el token solo contenga caracteres válidos Base64URL
|
|
28
|
-
* @param token El token JWT completo como string
|
|
29
|
-
* @throws InvalidTokenFormatError si se encuentran caracteres inválidos
|
|
30
|
-
*/
|
|
31
|
-
private validateCharacters;
|
|
32
|
-
}
|
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.JwtTokenValidator = void 0;
|
|
4
|
-
const errors_1 = require("../../../domain/errors");
|
|
5
|
-
/**
|
|
6
|
-
*Esta clase es el validador sintáctico del token JWT.
|
|
7
|
-
*Su función es detectar tokens mal formados o sospechosos antes de intentar decodificarlos.
|
|
8
|
-
*/
|
|
9
|
-
class JwtTokenValidator {
|
|
10
|
-
/**
|
|
11
|
-
* Valida que el token JWT tenga un formato básico correcto.
|
|
12
|
-
* @param token El token JWT completo como string
|
|
13
|
-
* @throws InvalidTokenFormatError si el token no cumple con el formato básico JWT
|
|
14
|
-
*/
|
|
15
|
-
validateTokenInput(token) {
|
|
16
|
-
this.validateBasicFormat(token);
|
|
17
|
-
this.validateJwtStructure(token);
|
|
18
|
-
this.validateCharacters(token);
|
|
19
|
-
}
|
|
20
|
-
/**
|
|
21
|
-
* Comprueba lo más elemental sobre el formato del token JWT.
|
|
22
|
-
* @param token El token JWT completo como string
|
|
23
|
-
* @throws InvalidTokenFormatError si el token no cumple con los requisitos básicos
|
|
24
|
-
*/
|
|
25
|
-
validateBasicFormat(token) {
|
|
26
|
-
// Null o undefined
|
|
27
|
-
if (token == null) {
|
|
28
|
-
throw new errors_1.InvalidTokenFormatError("Token cannot be null or undefined");
|
|
29
|
-
}
|
|
30
|
-
// Tipo de dato
|
|
31
|
-
if (typeof token !== "string") {
|
|
32
|
-
throw new errors_1.InvalidTokenFormatError(`Token must be a string, received: ${typeof token}`);
|
|
33
|
-
}
|
|
34
|
-
// Cadena vacía o con espacios en blanco
|
|
35
|
-
if (token.length === 0) {
|
|
36
|
-
throw new errors_1.InvalidTokenFormatError("Token cannot be empty");
|
|
37
|
-
}
|
|
38
|
-
// Solo espacios en blanco o con espacios al inicio/final
|
|
39
|
-
if (token.trim().length === 0) {
|
|
40
|
-
throw new errors_1.InvalidTokenFormatError("Token cannot be only whitespace");
|
|
41
|
-
}
|
|
42
|
-
// Espacios al inicio o al final
|
|
43
|
-
if (token !== token.trim()) {
|
|
44
|
-
throw new errors_1.InvalidTokenFormatError("Token cannot have leading or trailing whitespace");
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
/**
|
|
48
|
-
* Se asegura de que tenga una estructura básica JWT:
|
|
49
|
-
* - Mínimo 10 caracteres
|
|
50
|
-
* - Contener exactamente dos puntos (.) separando header, payload y signature
|
|
51
|
-
* @param token El token JWT completo como string
|
|
52
|
-
* @throws InvalidTokenFormatError si la estructura no es válida
|
|
53
|
-
*/
|
|
54
|
-
validateJwtStructure(token) {
|
|
55
|
-
// Mínimo viable: debe tener al menos 10 caracteres para ser un JWT válido
|
|
56
|
-
if (token.length < 10) {
|
|
57
|
-
throw new errors_1.InvalidTokenFormatError("Token is too short to be a valid JWT");
|
|
58
|
-
}
|
|
59
|
-
// Debe contener exactamente dos puntos (.) separando header, payload y signature
|
|
60
|
-
const dotCount = (token.match(/\./g) || []).length;
|
|
61
|
-
if (dotCount !== 2) {
|
|
62
|
-
throw new errors_1.InvalidTokenFormatError(`Invalid JWT format: expected 2 dots, found ${dotCount}`);
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
/**
|
|
66
|
-
* Verifica que el token solo contenga caracteres válidos Base64URL
|
|
67
|
-
* @param token El token JWT completo como string
|
|
68
|
-
* @throws InvalidTokenFormatError si se encuentran caracteres inválidos
|
|
69
|
-
*/
|
|
70
|
-
validateCharacters(token) {
|
|
71
|
-
const base64UrlPattern = /^[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+$/;
|
|
72
|
-
if (!base64UrlPattern.test(token)) {
|
|
73
|
-
throw new errors_1.InvalidTokenFormatError("Token contains invalid characters for JWT format");
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
exports.JwtTokenValidator = JwtTokenValidator;
|