@jmlq/auth 0.0.1-alpha.1 → 0.0.1-alpha.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (361) hide show
  1. package/README.md +259 -306
  2. package/dist/application/dtos/index.d.ts +3 -0
  3. package/dist/application/dtos/index.js +19 -0
  4. package/dist/application/dtos/request/index.d.ts +4 -0
  5. package/dist/{src/application/dtos → application/dtos/request}/index.js +4 -4
  6. package/dist/{src/application/dtos/login.dto.d.ts → application/dtos/request/login.request.d.ts} +0 -4
  7. package/dist/application/dtos/request/logout.request.d.ts +3 -0
  8. package/dist/application/dtos/request/refresh-token.request.d.ts +3 -0
  9. package/dist/application/dtos/request/register-user.request.d.ts +6 -0
  10. package/dist/application/dtos/response/index.d.ts +4 -0
  11. package/dist/application/dtos/response/index.js +20 -0
  12. package/dist/application/dtos/response/login.response.d.ts +4 -0
  13. package/dist/{src/application/dtos/logout.dto.d.ts → application/dtos/response/logout.response.d.ts} +0 -3
  14. package/dist/{src/application/dtos/refresh-token.dto.d.ts → application/dtos/response/refresh-token.response.d.ts} +0 -3
  15. package/dist/application/dtos/response/register-user.response.d.ts +7 -0
  16. package/dist/application/dtos/type/index.d.ts +1 -0
  17. package/dist/{src/shared/constants → application/dtos/type}/index.js +1 -1
  18. package/dist/application/dtos/type/user-role.type.d.ts +4 -0
  19. package/dist/application/factories/auth-service.factory.d.ts +11 -0
  20. package/dist/application/factories/auth-service.factory.js +40 -0
  21. package/dist/{src/application → application}/index.d.ts +1 -0
  22. package/dist/{src/application → application}/index.js +1 -0
  23. package/dist/application/types/auth-service-factory-options.type.d.ts +5 -0
  24. package/dist/application/types/index.d.ts +1 -0
  25. package/dist/{src/infrastructure/jwt/factory → application/types}/index.js +1 -1
  26. package/dist/{src/application → application}/use-cases/login-with-password.use-case.d.ts +2 -2
  27. package/dist/{src/application → application}/use-cases/login-with-password.use-case.js +6 -5
  28. package/dist/{src/application → application}/use-cases/logout.use-case.d.ts +2 -2
  29. package/dist/{src/application → application}/use-cases/logout.use-case.js +2 -2
  30. package/dist/{src/application → application}/use-cases/refresh-token.use-case.d.ts +2 -2
  31. package/dist/{src/application → application}/use-cases/refresh-token.use-case.js +2 -2
  32. package/dist/application/use-cases/register-user.use-case.d.ts +12 -0
  33. package/dist/{src/application → application}/use-cases/register-user.use-case.js +27 -1
  34. package/dist/{src/domain → domain}/errors/auth.errors.d.ts +1 -14
  35. package/dist/{src/domain → domain}/errors/auth.errors.js +1 -15
  36. package/dist/{src/domain → domain}/index.d.ts +0 -1
  37. package/dist/{src/domain → domain}/index.js +0 -1
  38. package/dist/domain/ports/auth/index.d.ts +2 -0
  39. package/dist/domain/ports/auth/index.js +18 -0
  40. package/dist/{src/domain/ports/auth/password-hasher.d.ts → domain/ports/auth/password-hasher.port.d.ts} +1 -1
  41. package/dist/{src/domain → domain}/ports/auth/password-policy.port.d.ts +1 -1
  42. package/dist/domain/ports/index.d.ts +4 -0
  43. package/dist/{src/infrastructure/jwt → domain/ports}/index.js +3 -2
  44. package/dist/domain/ports/jwt/index.d.ts +1 -0
  45. package/dist/{src/shared/types → domain/ports/jwt}/index.js +1 -1
  46. package/dist/domain/ports/jwt/payload/index.d.ts +1 -0
  47. package/dist/domain/ports/jwt/payload/index.js +17 -0
  48. package/dist/{src/domain → domain}/ports/repository/credential.repository.d.ts +1 -1
  49. package/dist/{src/domain → domain}/ports/repository/index.d.ts +1 -1
  50. package/dist/{src/domain → domain}/ports/repository/index.js +1 -1
  51. package/dist/{src/domain/ports/repository/user.repository.d.ts → domain/ports/repository/user-repository.port.d.ts} +1 -1
  52. package/dist/domain/ports/token/index.d.ts +2 -0
  53. package/dist/domain/ports/token/index.js +18 -0
  54. package/dist/{src/domain → domain}/ports/token/token-session.port.d.ts +2 -2
  55. package/dist/{src/domain → domain}/ports/token/token.service.port.d.ts +2 -2
  56. package/dist/{src/domain → domain}/props/jwt/generate-access-token.props.d.ts +0 -2
  57. package/dist/{src/domain → domain}/props/jwt/generate-refresh-token.props.d.ts +0 -2
  58. package/dist/{src/domain/props/services → domain/props/jwt}/index.d.ts +1 -0
  59. package/dist/{src/domain/props/services → domain/props/jwt}/index.js +1 -0
  60. package/dist/{src/domain → domain}/services/password-policy.service.d.ts +2 -2
  61. package/dist/{src/infrastructure/repositories/test → in-memory}/in-memory-credential.repository.d.ts +2 -2
  62. package/dist/{src/infrastructure/repositories/test → in-memory}/in-memory-credential.repository.js +12 -2
  63. package/dist/{src/infrastructure/repositories/test → in-memory}/in-memory-user.repository.d.ts +2 -2
  64. package/dist/index.d.ts +4 -1
  65. package/dist/index.js +11 -1
  66. package/dist/infrastructure/index.js +1 -0
  67. package/dist/{src/infrastructure → infrastructure}/security/bcrypt-password-hasher.d.ts +7 -2
  68. package/dist/{src/infrastructure → infrastructure}/security/bcrypt-password-hasher.js +7 -2
  69. package/dist/{src/infrastructure → infrastructure}/services/index.d.ts +0 -1
  70. package/dist/{src/infrastructure → infrastructure}/services/index.js +0 -1
  71. package/dist/infrastructure/services/token-session.service.d.ts +22 -0
  72. package/dist/{src/infrastructure/services/default-token-session.service.js → infrastructure/services/token-session.service.js} +30 -31
  73. package/dist/infrastructure/types/auth-service-container.d.ts +14 -0
  74. package/dist/shared/index.d.ts +1 -0
  75. package/dist/{src/infrastructure/repositories → shared}/index.js +1 -1
  76. package/package.json +5 -8
  77. package/dist/examples/bcrypt-password-hasher.example.d.ts +0 -3
  78. package/dist/examples/bcrypt-password-hasher.example.js +0 -78
  79. package/dist/examples/entity-object.example.d.ts +0 -39
  80. package/dist/examples/entity-object.example.js +0 -411
  81. package/dist/examples/factory-auth-service-example.d.ts +0 -3
  82. package/dist/examples/factory-auth-service-example.js +0 -84
  83. package/dist/examples/index.example.d.ts +0 -12
  84. package/dist/examples/index.example.js +0 -171
  85. package/dist/examples/jwt-algoritm.example.d.ts +0 -47
  86. package/dist/examples/jwt-algoritm.example.js +0 -447
  87. package/dist/examples/jwt-token-generator.example.d.ts +0 -6
  88. package/dist/examples/jwt-token-generator.example.js +0 -49
  89. package/dist/examples/jwt-verifier.example.d.ts +0 -3
  90. package/dist/examples/jwt-verifier.example.js +0 -80
  91. package/dist/examples/password-policy.example.d.ts +0 -7
  92. package/dist/examples/password-policy.example.js +0 -57
  93. package/dist/examples/service-jwt-token.example.d.ts +0 -3
  94. package/dist/examples/service-jwt-token.example.js +0 -154
  95. package/dist/examples/service-token-session.example.d.ts +0 -3
  96. package/dist/examples/service-token-session.example.js +0 -139
  97. package/dist/examples/use-case-login-with-password.example.d.ts +0 -6
  98. package/dist/examples/use-case-login-with-password.example.js +0 -105
  99. package/dist/examples/use-case-logout.example.d.ts +0 -7
  100. package/dist/examples/use-case-logout.example.js +0 -134
  101. package/dist/examples/use-case-refresh-token.example.d.ts +0 -11
  102. package/dist/examples/use-case-refresh-token.example.js +0 -164
  103. package/dist/examples/use-case-register-user.example.d.ts +0 -9
  104. package/dist/examples/use-case-register-user.example.js +0 -110
  105. package/dist/src/application/dtos/index.d.ts +0 -4
  106. package/dist/src/application/dtos/register-user.dto.d.ts +0 -16
  107. package/dist/src/application/factories/auth-service.factory.d.ts +0 -5
  108. package/dist/src/application/factories/auth-service.factory.js +0 -51
  109. package/dist/src/application/use-cases/register-user.use-case.d.ts +0 -10
  110. package/dist/src/domain/errors/auth-domain-error.d.ts +0 -82
  111. package/dist/src/domain/errors/auth-domain-error.js +0 -112
  112. package/dist/src/domain/ports/auth/password-policy-config.port.js +0 -10
  113. package/dist/src/domain/ports/config/auth-config.port.d.ts +0 -19
  114. package/dist/src/domain/ports/config/auth-config.port.js +0 -3
  115. package/dist/src/domain/ports/index.d.ts +0 -9
  116. package/dist/src/domain/ports/index.js +0 -25
  117. package/dist/src/domain/ports/jwt/factory/signature-strategy-factory.port.d.ts +0 -14
  118. package/dist/src/domain/ports/jwt/signature-strategy-factory.port.d.ts +0 -14
  119. package/dist/src/domain/ports/jwt/signature-strategy.d.ts +0 -30
  120. package/dist/src/domain/ports/jwt/signature-strategy.js +0 -4
  121. package/dist/src/domain/ports/jwt/signature-strategy.port.d.ts +0 -31
  122. package/dist/src/domain/ports/jwt/signature-strategy.port.js +0 -4
  123. package/dist/src/domain/ports/jwt/strategy/signature-strategy.port.d.ts +0 -31
  124. package/dist/src/domain/ports/jwt/strategy/signature-strategy.port.js +0 -4
  125. package/dist/src/domain/props/create-payload-props.port.d.ts +0 -0
  126. package/dist/src/domain/props/create-payload-props.port.js +0 -8
  127. package/dist/src/domain/props/jwt/create-payload.props.d.ts +0 -9
  128. package/dist/src/domain/props/jwt/generate-token.props.d.ts +0 -10
  129. package/dist/src/domain/props/jwt/generate-token.props.js +0 -2
  130. package/dist/src/domain/props/jwt/index.d.ts +0 -5
  131. package/dist/src/domain/props/jwt/index.js +0 -21
  132. package/dist/src/domain/props/jwt/jwt-subject.d.ts +0 -7
  133. package/dist/src/domain/props/jwt/jwt-subject.js +0 -2
  134. package/dist/src/domain/props/services/generate-access-token.props.d.ts +0 -8
  135. package/dist/src/domain/props/services/generate-refresh-token.props.d.ts +0 -8
  136. package/dist/src/domain/services/token.service.port.d.ts +0 -9
  137. package/dist/src/index.d.ts +0 -78
  138. package/dist/src/index.js +0 -94
  139. package/dist/src/infrastructure/index.d.ts +0 -5
  140. package/dist/src/infrastructure/index.js +0 -21
  141. package/dist/src/infrastructure/jwt/factory/index.d.ts +0 -1
  142. package/dist/src/infrastructure/jwt/factory/signature-strategy.factory.d.ts +0 -21
  143. package/dist/src/infrastructure/jwt/factory/signature-strategy.factory.js +0 -61
  144. package/dist/src/infrastructure/jwt/index.d.ts +0 -3
  145. package/dist/src/infrastructure/jwt/signature-strategy.factory.d.ts +0 -21
  146. package/dist/src/infrastructure/jwt/signature-strategy.factory.js +0 -61
  147. package/dist/src/infrastructure/jwt/strategies/ecdsa-signature-strategy.d.ts +0 -47
  148. package/dist/src/infrastructure/jwt/strategies/ecdsa-signature-strategy.js +0 -124
  149. package/dist/src/infrastructure/jwt/strategies/ecdsa-signature.strategy.d.ts +0 -47
  150. package/dist/src/infrastructure/jwt/strategies/ecdsa-signature.strategy.js +0 -124
  151. package/dist/src/infrastructure/jwt/strategies/hmac-signature-strategy.d.ts +0 -54
  152. package/dist/src/infrastructure/jwt/strategies/hmac-signature-strategy.js +0 -129
  153. package/dist/src/infrastructure/jwt/strategies/hmac-signature.strategy.d.ts +0 -54
  154. package/dist/src/infrastructure/jwt/strategies/hmac-signature.strategy.js +0 -129
  155. package/dist/src/infrastructure/jwt/strategies/index.d.ts +0 -3
  156. package/dist/src/infrastructure/jwt/strategies/index.js +0 -19
  157. package/dist/src/infrastructure/jwt/strategies/rsa-signature-strategy.d.ts +0 -47
  158. package/dist/src/infrastructure/jwt/strategies/rsa-signature-strategy.js +0 -124
  159. package/dist/src/infrastructure/jwt/strategies/rsa-signature.strategy.d.ts +0 -47
  160. package/dist/src/infrastructure/jwt/strategies/rsa-signature.strategy.js +0 -124
  161. package/dist/src/infrastructure/jwt/token/actions/jwt-token-generator.d.ts +0 -57
  162. package/dist/src/infrastructure/jwt/token/actions/jwt-token-generator.js +0 -123
  163. package/dist/src/infrastructure/jwt/token/actions/jwt-token-verifier.d.ts +0 -59
  164. package/dist/src/infrastructure/jwt/token/actions/jwt-token-verifier.js +0 -100
  165. package/dist/src/infrastructure/jwt/token/index.d.ts +0 -5
  166. package/dist/src/infrastructure/jwt/token/index.js +0 -21
  167. package/dist/src/infrastructure/jwt/token/jwt-signer.d.ts +0 -33
  168. package/dist/src/infrastructure/jwt/token/jwt-signer.js +0 -46
  169. package/dist/src/infrastructure/jwt/token/jwt-token-parser.d.ts +0 -29
  170. package/dist/src/infrastructure/jwt/token/jwt-token-parser.js +0 -57
  171. package/dist/src/infrastructure/jwt/token/jwt-token-validator.d.ts +0 -32
  172. package/dist/src/infrastructure/jwt/token/jwt-token-validator.js +0 -77
  173. package/dist/src/infrastructure/jwt/token/tools/jwt-signer.d.ts +0 -33
  174. package/dist/src/infrastructure/jwt/token/tools/jwt-signer.js +0 -46
  175. package/dist/src/infrastructure/jwt/token/tools/jwt-token-parser.d.ts +0 -30
  176. package/dist/src/infrastructure/jwt/token/tools/jwt-token-parser.js +0 -57
  177. package/dist/src/infrastructure/jwt/token/tools/jwt-token-validator.d.ts +0 -32
  178. package/dist/src/infrastructure/jwt/token/tools/jwt-token-validator.js +0 -77
  179. package/dist/src/infrastructure/repositories/index.d.ts +0 -1
  180. package/dist/src/infrastructure/repositories/test/in-memory-token-session.repository.d.ts +0 -67
  181. package/dist/src/infrastructure/repositories/test/in-memory-token-session.repository.js +0 -128
  182. package/dist/src/infrastructure/services/default-token-session.service.d.ts +0 -18
  183. package/dist/src/infrastructure/services/jwt-token.service.d.ts +0 -15
  184. package/dist/src/infrastructure/services/jwt-token.service.js +0 -44
  185. package/dist/src/infrastructure/services/simple-jwt-token.service.d.ts +0 -15
  186. package/dist/src/infrastructure/services/simple-jwt-token.service.js +0 -46
  187. package/dist/src/infrastructure/services/token-session.service.d.ts +0 -24
  188. package/dist/src/infrastructure/services/token-session.service.js +0 -131
  189. package/dist/src/infrastructure/types/auth-service-container.d.ts +0 -14
  190. package/dist/src/shared/constants/index.d.ts +0 -1
  191. package/dist/src/shared/constants/jwt-algorithms.d.ts +0 -17
  192. package/dist/src/shared/constants/jwt-algorithms.js +0 -23
  193. package/dist/src/shared/encoders/base64-url-encoder.d.ts +0 -29
  194. package/dist/src/shared/encoders/base64-url-encoder.js +0 -45
  195. package/dist/src/shared/encoders/index.d.ts +0 -1
  196. package/dist/src/shared/encoders/index.js +0 -17
  197. package/dist/src/shared/index.d.ts +0 -4
  198. package/dist/src/shared/index.js +0 -20
  199. package/dist/src/shared/types/index.d.ts +0 -1
  200. package/dist/src/shared/types/jwt.d.ts +0 -25
  201. package/dist/src/shared/types/jwt.js +0 -2
  202. package/dist/src/shared/types/jwt.types.d.ts +0 -39
  203. package/dist/src/shared/types/jwt.types.js +0 -2
  204. package/dist/tests/application/factory/auth-service-factory.spec.d.ts +0 -1
  205. package/dist/tests/application/factory/auth-service-factory.spec.js +0 -97
  206. package/dist/tests/application/use-cases/login-with-password.integration.spec.d.ts +0 -1
  207. package/dist/tests/application/use-cases/login-with-password.integration.spec.js +0 -140
  208. package/dist/tests/application/use-cases/logout-use-case.spec.d.ts +0 -1
  209. package/dist/tests/application/use-cases/logout-use-case.spec.js +0 -40
  210. package/dist/tests/application/use-cases/refresh-token-use-case.spec.d.ts +0 -1
  211. package/dist/tests/application/use-cases/refresh-token-use-case.spec.js +0 -116
  212. package/dist/tests/application/use-cases/register-user.usecase.spec.d.ts +0 -1
  213. package/dist/tests/application/use-cases/register-user.usecase.spec.js +0 -151
  214. package/dist/tests/domain/entities/credential.spec.d.ts +0 -1
  215. package/dist/tests/domain/entities/credential.spec.js +0 -93
  216. package/dist/tests/domain/entities/user.spec.d.ts +0 -1
  217. package/dist/tests/domain/entities/user.spec.js +0 -93
  218. package/dist/tests/domain/object-values/email.spec.d.ts +0 -1
  219. package/dist/tests/domain/object-values/email.spec.js +0 -77
  220. package/dist/tests/domain/object-values/hashed-password.spec.d.ts +0 -1
  221. package/dist/tests/domain/object-values/hashed-password.spec.js +0 -54
  222. package/dist/tests/domain/object-values/id.spec.d.ts +0 -1
  223. package/dist/tests/domain/object-values/id.spec.js +0 -48
  224. package/dist/tests/domain/object-values/permission.spec.d.ts +0 -1
  225. package/dist/tests/domain/object-values/permission.spec.js +0 -75
  226. package/dist/tests/domain/object-values/role.spec.d.ts +0 -1
  227. package/dist/tests/domain/object-values/role.spec.js +0 -139
  228. package/dist/tests/domain/services/default-password-policy.spec.d.ts +0 -1
  229. package/dist/tests/domain/services/default-password-policy.spec.js +0 -69
  230. package/dist/tests/doman/entities/credential.spec.d.ts +0 -1
  231. package/dist/tests/doman/entities/credential.spec.js +0 -93
  232. package/dist/tests/doman/entities/user.spec.d.ts +0 -1
  233. package/dist/tests/doman/entities/user.spec.js +0 -93
  234. package/dist/tests/doman/object-values/email.spec.d.ts +0 -1
  235. package/dist/tests/doman/object-values/email.spec.js +0 -77
  236. package/dist/tests/doman/object-values/hashed-password.spec.d.ts +0 -1
  237. package/dist/tests/doman/object-values/hashed-password.spec.js +0 -54
  238. package/dist/tests/doman/object-values/id.spec.d.ts +0 -1
  239. package/dist/tests/doman/object-values/id.spec.js +0 -48
  240. package/dist/tests/doman/object-values/permission.spec.d.ts +0 -1
  241. package/dist/tests/doman/object-values/permission.spec.js +0 -75
  242. package/dist/tests/doman/object-values/role.spec.d.ts +0 -1
  243. package/dist/tests/doman/object-values/role.spec.js +0 -139
  244. package/dist/tests/helpers/make-jwt-subject.d.ts +0 -7
  245. package/dist/tests/helpers/make-jwt-subject.js +0 -16
  246. package/dist/tests/helpers/make-jwt-user.d.ts +0 -7
  247. package/dist/tests/helpers/make-jwt-user.js +0 -16
  248. package/dist/tests/helpers/make-user.d.ts +0 -2
  249. package/dist/tests/helpers/make-user.js +0 -15
  250. package/dist/tests/infrastructure/jwt/signature-strategy-factory.spec.d.ts +0 -1
  251. package/dist/tests/infrastructure/jwt/signature-strategy-factory.spec.js +0 -127
  252. package/dist/tests/infrastructure/jwt/strategies/ecdsa-signature-strategy.spec.d.ts +0 -1
  253. package/dist/tests/infrastructure/jwt/strategies/ecdsa-signature-strategy.spec.js +0 -157
  254. package/dist/tests/infrastructure/jwt/strategies/hmac-signature-strategy.spec.d.ts +0 -1
  255. package/dist/tests/infrastructure/jwt/strategies/hmac-signature-strategy.spec.js +0 -150
  256. package/dist/tests/infrastructure/jwt/strategies/rsa-signature-strategy..spec.d.ts +0 -1
  257. package/dist/tests/infrastructure/jwt/strategies/rsa-signature-strategy..spec.js +0 -156
  258. package/dist/tests/infrastructure/jwt/token/actions/jwt-token-generator.spec.d.ts +0 -1
  259. package/dist/tests/infrastructure/jwt/token/actions/jwt-token-generator.spec.js +0 -179
  260. package/dist/tests/infrastructure/jwt/token/actions/jwt-token-verifier.spec.d.ts +0 -1
  261. package/dist/tests/infrastructure/jwt/token/actions/jwt-token-verifier.spec.js +0 -142
  262. package/dist/tests/infrastructure/jwt/token/jwt-signer.spec.d.ts +0 -1
  263. package/dist/tests/infrastructure/jwt/token/jwt-signer.spec.js +0 -125
  264. package/dist/tests/infrastructure/jwt/token/jwt-token-parser.spec.d.ts +0 -1
  265. package/dist/tests/infrastructure/jwt/token/jwt-token-parser.spec.js +0 -116
  266. package/dist/tests/infrastructure/jwt/token/jwt-token-validator.spec.d.ts +0 -1
  267. package/dist/tests/infrastructure/jwt/token/jwt-token-validator.spec.js +0 -88
  268. package/dist/tests/infrastructure/jwt/token/tools/jwt-signer.spec.d.ts +0 -1
  269. package/dist/tests/infrastructure/jwt/token/tools/jwt-signer.spec.js +0 -126
  270. package/dist/tests/infrastructure/jwt/token/tools/jwt-token-parser.spec.d.ts +0 -1
  271. package/dist/tests/infrastructure/jwt/token/tools/jwt-token-parser.spec.js +0 -116
  272. package/dist/tests/infrastructure/jwt/token/tools/jwt-token-validator.spec.d.ts +0 -1
  273. package/dist/tests/infrastructure/jwt/token/tools/jwt-token-validator.spec.js +0 -88
  274. package/dist/tests/infrastructure/security/security/bcrypt-password-hasher.spec.d.ts +0 -1
  275. package/dist/tests/infrastructure/security/security/bcrypt-password-hasher.spec.js +0 -37
  276. package/dist/tests/infrastructure/services/jwt-token-service.spec.d.ts +0 -1
  277. package/dist/tests/infrastructure/services/jwt-token-service.spec.js +0 -145
  278. package/dist/tests/infrastructure/services/token-session.service.spec.d.ts +0 -1
  279. package/dist/tests/infrastructure/services/token-session.service.spec.js +0 -269
  280. package/dist/tests/shared/constants/jwt-algorithms.spec.d.ts +0 -1
  281. package/dist/tests/shared/constants/jwt-algorithms.spec.js +0 -27
  282. package/dist/tests/shared/encoders/base64-url-encoder.spec.d.ts +0 -1
  283. package/dist/tests/shared/encoders/base64-url-encoder.spec.js +0 -70
  284. package/dist/tests/shared/utils/time-parser.spec.d.ts +0 -1
  285. package/dist/tests/shared/utils/time-parser.spec.js +0 -80
  286. package/dist/utils/index.d.ts +0 -1
  287. package/dist/utils/index.js +0 -17
  288. package/dist/utils/time-parser.d.ts +0 -28
  289. package/dist/utils/time-parser.js +0 -76
  290. /package/dist/{src/application/dtos/login.dto.js → application/dtos/request/login.request.js} +0 -0
  291. /package/dist/{src/application/dtos/logout.dto.js → application/dtos/request/logout.request.js} +0 -0
  292. /package/dist/{src/application/dtos/refresh-token.dto.js → application/dtos/request/refresh-token.request.js} +0 -0
  293. /package/dist/{src/application/dtos/register-user.dto.js → application/dtos/request/register-user.request.js} +0 -0
  294. /package/dist/{src/domain/ports/auth/password-hasher.js → application/dtos/response/login.response.js} +0 -0
  295. /package/dist/{src/domain/ports/auth/password-policy.port.js → application/dtos/response/logout.response.js} +0 -0
  296. /package/dist/{src/domain/ports/jwt/factory/signature-strategy-factory.port.js → application/dtos/response/refresh-token.response.js} +0 -0
  297. /package/dist/{src/domain/ports/jwt/payload/jwt-payload.port.js → application/dtos/response/register-user.response.js} +0 -0
  298. /package/dist/{src/domain/ports/jwt/signature-strategy-factory.port.js → application/dtos/type/user-role.type.js} +0 -0
  299. /package/dist/{src/application → application}/factories/index.d.ts +0 -0
  300. /package/dist/{src/application → application}/factories/index.js +0 -0
  301. /package/dist/{src/domain/ports/repository/credential.repository.js → application/types/auth-service-factory-options.type.js} +0 -0
  302. /package/dist/{src/application → application}/use-cases/index.d.ts +0 -0
  303. /package/dist/{src/application → application}/use-cases/index.js +0 -0
  304. /package/dist/{src/domain → domain}/entities/credential.entity.d.ts +0 -0
  305. /package/dist/{src/domain → domain}/entities/credential.entity.js +0 -0
  306. /package/dist/{src/domain → domain}/entities/index.d.ts +0 -0
  307. /package/dist/{src/domain → domain}/entities/index.js +0 -0
  308. /package/dist/{src/domain → domain}/entities/user.entity.d.ts +0 -0
  309. /package/dist/{src/domain → domain}/entities/user.entity.js +0 -0
  310. /package/dist/{src/domain → domain}/errors/identity.errors.d.ts +0 -0
  311. /package/dist/{src/domain → domain}/errors/identity.errors.js +0 -0
  312. /package/dist/{src/domain → domain}/errors/index.d.ts +0 -0
  313. /package/dist/{src/domain → domain}/errors/index.js +0 -0
  314. /package/dist/{src/domain → domain}/object-values/email.d.ts +0 -0
  315. /package/dist/{src/domain → domain}/object-values/email.js +0 -0
  316. /package/dist/{src/domain → domain}/object-values/hashed-password.d.ts +0 -0
  317. /package/dist/{src/domain → domain}/object-values/hashed-password.js +0 -0
  318. /package/dist/{src/domain → domain}/object-values/id.d.ts +0 -0
  319. /package/dist/{src/domain → domain}/object-values/id.js +0 -0
  320. /package/dist/{src/domain → domain}/object-values/index.d.ts +0 -0
  321. /package/dist/{src/domain → domain}/object-values/index.js +0 -0
  322. /package/dist/{src/domain → domain}/object-values/permission.d.ts +0 -0
  323. /package/dist/{src/domain → domain}/object-values/permission.js +0 -0
  324. /package/dist/{src/domain → domain}/object-values/role.d.ts +0 -0
  325. /package/dist/{src/domain → domain}/object-values/role.js +0 -0
  326. /package/dist/{src/domain/ports/repository/user.repository.js → domain/ports/auth/password-hasher.port.js} +0 -0
  327. /package/dist/{src/domain/ports/token/token-session.port.js → domain/ports/auth/password-policy.port.js} +0 -0
  328. /package/dist/{src/domain → domain}/ports/jwt/payload/jwt-payload.port.d.ts +0 -0
  329. /package/dist/{src/domain/ports/token/token.service.port.js → domain/ports/jwt/payload/jwt-payload.port.js} +0 -0
  330. /package/dist/{src/domain/props/entities/credential.props.js → domain/ports/repository/credential.repository.js} +0 -0
  331. /package/dist/{src/domain/props/entities/user.props.js → domain/ports/repository/user-repository.port.js} +0 -0
  332. /package/dist/{src/domain/props/jwt/create-payload.props.js → domain/ports/token/token-session.port.js} +0 -0
  333. /package/dist/{src/domain/services → domain/ports/token}/token.service.port.js +0 -0
  334. /package/dist/{src/domain → domain}/props/entities/credential.props.d.ts +0 -0
  335. /package/dist/{src/domain/props/jwt/generate-access-token.props.js → domain/props/entities/credential.props.js} +0 -0
  336. /package/dist/{src/domain → domain}/props/entities/index.d.ts +0 -0
  337. /package/dist/{src/domain → domain}/props/entities/index.js +0 -0
  338. /package/dist/{src/domain → domain}/props/entities/user.props.d.ts +0 -0
  339. /package/dist/{src/domain/props/jwt/generate-refresh-token.props.js → domain/props/entities/user.props.js} +0 -0
  340. /package/dist/{src/domain → domain}/props/index.d.ts +0 -0
  341. /package/dist/{src/domain → domain}/props/index.js +0 -0
  342. /package/dist/{src/domain/props/services → domain/props/jwt}/generate-access-token.props.js +0 -0
  343. /package/dist/{src/domain/props/services → domain/props/jwt}/generate-refresh-token.props.js +0 -0
  344. /package/dist/{src/domain → domain}/props/jwt/jwt-user.d.ts +0 -0
  345. /package/dist/{src/domain → domain}/props/jwt/jwt-user.js +0 -0
  346. /package/dist/{src/domain → domain}/services/index.d.ts +0 -0
  347. /package/dist/{src/domain → domain}/services/index.js +0 -0
  348. /package/dist/{src/domain → domain}/services/password-policy.service.js +0 -0
  349. /package/dist/{src/infrastructure/repositories/test → in-memory}/in-memory-user.repository.js +0 -0
  350. /package/dist/{src/infrastructure/repositories/test → in-memory}/index.d.ts +0 -0
  351. /package/dist/{src/infrastructure/repositories/test → in-memory}/index.js +0 -0
  352. /package/dist/{src/domain/ports/auth/password-policy-config.port.d.ts → infrastructure/index.d.ts} +0 -0
  353. /package/dist/{src/infrastructure → infrastructure}/security/index.d.ts +0 -0
  354. /package/dist/{src/infrastructure → infrastructure}/security/index.js +0 -0
  355. /package/dist/{src/infrastructure → infrastructure}/types/auth-service-container.js +0 -0
  356. /package/dist/{src/infrastructure → infrastructure}/types/index.d.ts +0 -0
  357. /package/dist/{src/infrastructure → infrastructure}/types/index.js +0 -0
  358. /package/dist/{src/shared → shared}/utils/index.d.ts +0 -0
  359. /package/dist/{src/shared → shared}/utils/index.js +0 -0
  360. /package/dist/{src/shared → shared}/utils/time-parser.d.ts +0 -0
  361. /package/dist/{src/shared → shared}/utils/time-parser.js +0 -0
package/README.md CHANGED
@@ -1,306 +1,259 @@
1
- # @ml-dev-core/jwt.auth
2
-
3
- 🔐 **Paquete de autenticación JWT** con **Arquitectura Limpia** para aplicaciones TypeScript.
4
-
5
- ## 🚀 Instalación Rápida
6
-
7
- ```bash
8
- npm install @ml-dev-core/jwt.auth bcryptjs
9
- npm install --save-dev @types/bcryptjs
10
- ```
11
-
12
- ## 📖 Documentación
13
-
14
- - **[📋 Instalación y Configuración](./install.md)** - Guías detalladas para Express.js, NestJS y más
15
- - **[🏗️ Documentación de Arquitectura](./architecture.md)** - Clean Architecture, capas y patrones
16
- - **[📚 Ejemplos de Código](./examples/)** - Casos de uso reales y implementaciones
17
-
18
- ## ✨ Características Principales
19
-
20
- - ✅ **Clean Architecture**: Separación clara de responsabilidades
21
- - ✅ **Framework Agnostic**: Compatible con Express, NestJS, Fastify, etc.
22
- - **Database Independent**: Repositorios como interfaces
23
- - ✅ **TypeScript Native**: Tipado fuerte y autocompletado
24
- - **JWT Completo**: Access + Refresh tokens con rotación
25
- - **Multi-Algorithm**: HS256, RS256, ES256 y más
26
- - ✅ **Password Security**: Bcrypt con políticas configurables
27
- - **Testing Ready**: Repositorios in-memory incluidos
28
- - **Production Ready**: Manejo de errores y validaciones
29
-
30
- ## 🏃‍♂️ Inicio Rápido
31
-
32
- ### 1. Configuración Básica
33
-
34
- ```typescript
35
- import {
36
- AuthServiceFactory,
37
- IAuthConfig,
38
- InMemoryUserRepository,
39
- InMemoryCredentialRepository,
40
- } from "@ml-dev-core/jwt.auth";
41
-
42
- const config: IAuthConfig = {
43
- jwt: {
44
- accessTokenSecret: process.env.JWT_ACCESS_SECRET!,
45
- refreshTokenSecret: process.env.JWT_REFRESH_SECRET!,
46
- accessTokenExpirationMs: 15 * 60 * 1000, // 15 minutos
47
- refreshTokenExpirationMs: 7 * 24 * 60 * 60 * 1000, // 7 días
48
- accessTokenExpiration: "15m",
49
- refreshTokenExpiration: "7d",
50
- },
51
- bcrypt: { saltRounds: 12 },
52
- algorithm: "HS256",
53
- info: {
54
- issuer: "your-app",
55
- audience: "your-client",
56
- },
57
- };
58
-
59
- const authServices = AuthServiceFactory.create(
60
- config,
61
- new InMemoryUserRepository(),
62
- new InMemoryCredentialRepository()
63
- );
64
- ```
65
-
66
- ### 2. Casos de Uso
67
-
68
- ```typescript
69
- // Registro
70
- const registerResult = await authServices.registerUserUseCase.execute({
71
- email: "user@example.com",
72
- password: "SecurePassword123!",
73
- confirmPassword: "SecurePassword123!",
74
- });
75
-
76
- // Login
77
- const loginResult = await authServices.loginWithPasswordUseCase.execute({
78
- email: "user@example.com",
79
- password: "SecurePassword123!",
80
- });
81
-
82
- console.log("Access Token:", loginResult.accessToken);
83
- console.log("Refresh Token:", loginResult.refreshToken);
84
-
85
- // Refresh
86
- const refreshResult = await authServices.refreshTokenUseCase.execute({
87
- refreshToken: loginResult.refreshToken,
88
- });
89
-
90
- // Logout
91
- await authServices.logoutUseCase.execute({
92
- refreshToken: refreshResult.refreshToken,
93
- });
94
- ```
95
-
96
- ### 3. Middleware (Express)
97
-
98
- ```typescript
99
- import { JwtTokenVerifier } from "@ml-dev-core/jwt.auth";
100
-
101
- export const authMiddleware = async (req, res, next) => {
102
- try {
103
- const token = req.headers.authorization?.substring(7);
104
- const verifier = new JwtTokenVerifier();
105
-
106
- const isValid = await verifier.verify(
107
- token,
108
- config.jwt.accessTokenSecret,
109
- config.algorithm
110
- );
111
-
112
- if (!isValid) {
113
- return res.status(401).json({ error: "Token inválido" });
114
- }
115
-
116
- const payload = await verifier.parsePayload(token);
117
- req.user = payload;
118
- next();
119
- } catch (error) {
120
- res.status(401).json({ error: "Error de autenticación" });
121
- }
122
- };
123
- ```
124
-
125
- ## 🏗️ Arquitectura
126
-
127
- ```
128
- ┌─────────────────────────────────────────┐
129
- │ APPLICATION LAYER │
130
- (Use Cases, DTOs, Factories)
131
- ├─────────────────────────────────────────┤
132
- │ DOMAIN LAYER │
133
- │ (Entities, Value Objects, Ports) │
134
- ├─────────────────────────────────────────┤
135
- │ INFRASTRUCTURE LAYER │
136
- │ (JWT, Repositories, Security) │
137
- ├─────────────────────────────────────────┤
138
- │ SHARED LAYER │
139
- (Types, Constants, Utils)
140
- └─────────────────────────────────────────┘
141
- ```
142
-
143
- ### Capas y Responsabilidades
144
-
145
- - **Domain**: Lógica de negocio pura (entities, value objects, interfaces)
146
- - **Application**: Orquestación de casos de uso y DTOs
147
- - **Infrastructure**: Implementaciones concretas (JWT, bcrypt, repositorios)
148
- - **Shared**: Utilidades y tipos compartidos
149
-
150
- ## 📦 Exports Principales
151
-
152
- ```typescript
153
- // Factory principal
154
- import { AuthServiceFactory } from "@ml-dev-core/jwt.auth";
155
-
156
- // Casos de uso
157
- import {
158
- LoginWithPasswordUseCase,
159
- RegisterUserUseCase,
160
- RefreshTokenUseCase,
161
- LogoutUseCase,
162
- } from "@ml-dev-core/jwt.auth";
163
-
164
- // DTOs
165
- import {
166
- LoginRequest,
167
- LoginResponse,
168
- RegisterUserRequest,
169
- RefreshTokenRequest,
170
- } from "@ml-dev-core/jwt.auth";
171
-
172
- // Entidades del dominio
173
- import { User, Credential } from "@ml-dev-core/jwt.auth";
174
-
175
- // Value Objects
176
- import { Email, HashedPassword, Role, Id } from "@ml-dev-core/jwt.auth";
177
-
178
- // Componentes JWT
179
- import { JwtTokenGenerator, JwtTokenVerifier } from "@ml-dev-core/jwt.auth";
180
-
181
- // Implementaciones de seguridad
182
- import { BcryptPasswordHasher } from "@ml-dev-core/jwt.auth";
183
-
184
- // Repositorios in-memory (testing)
185
- import {
186
- InMemoryUserRepository,
187
- InMemoryCredentialRepository,
188
- } from "@ml-dev-core/jwt.auth";
189
-
190
- // Interfaces
191
- import {
192
- IUserRepository,
193
- ICredentialRepository,
194
- IAuthConfig,
195
- } from "@ml-dev-core/jwt.auth";
196
- ```
197
-
198
- ## 🔧 Configuración de Variables de Entorno
199
-
200
- ```bash
201
- # JWT Secrets
202
- JWT_ACCESS_SECRET=your_super_secret_access_key_here
203
- JWT_REFRESH_SECRET=your_super_secret_refresh_key_here
204
-
205
- # JWT Timing
206
- JWT_ACCESS_EXPIRATION=15m
207
- JWT_REFRESH_EXPIRATION=7d
208
-
209
- # JWT Info
210
- JWT_ISSUER=your-app-name
211
- JWT_AUDIENCE=your-client-app
212
- JWT_ALGORITHM=HS256
213
-
214
- # Security
215
- BCRYPT_SALT_ROUNDS=12
216
- ```
217
-
218
- ## 🧪 Testing
219
-
220
- ```typescript
221
- import {
222
- AuthServiceFactory,
223
- InMemoryUserRepository,
224
- InMemoryCredentialRepository,
225
- } from "@ml-dev-core/jwt.auth";
226
-
227
- describe("Auth Tests", () => {
228
- let authServices;
229
-
230
- beforeEach(() => {
231
- authServices = AuthServiceFactory.create(
232
- testConfig,
233
- new InMemoryUserRepository(),
234
- new InMemoryCredentialRepository()
235
- );
236
- });
237
-
238
- it("should register and login user", async () => {
239
- // Test implementation
240
- });
241
- });
242
- ```
243
-
244
- ## 📱 Frameworks Soportados
245
-
246
- ### Express.js
247
-
248
- ```typescript
249
- app.use("/auth", authRoutes);
250
- app.use("/api", authMiddleware);
251
- ```
252
-
253
- ### NestJS
254
-
255
- ```typescript
256
- @UseGuards(JwtAuthGuard)
257
- @Controller("protected")
258
- export class ProtectedController {}
259
- ```
260
-
261
- ### Fastify
262
-
263
- ```typescript
264
- fastify.addHook("onRequest", authMiddleware);
265
- ```
266
-
267
- ## 🔐 Algoritmos JWT Soportados
268
-
269
- - **HMAC**: HS256, HS384, HS512 (clave simétrica)
270
- - **RSA**: RS256, RS384, RS512 (clave asimétrica)
271
- - **ECDSA**: ES256, ES384, ES512 (curva elíptica)
272
-
273
- ## 📄 Scripts Disponibles
274
-
275
- ```bash
276
- # Construcción
277
- npm run build
278
-
279
- # Testing
280
- npm test
281
- npm run test:coverage
282
- npm run test:watch
283
-
284
- # Ejemplos
285
- npm run example:help # Ver todos los comandos
286
- npm run example:all # Ejecutar todos los ejemplos
287
- npm run example:use-cases # Ejemplos de casos de uso
288
- npm run example:jwt # Ejemplos de JWT
289
- npm run example:factories # Ejemplos de factories
290
- ```
291
-
292
- ## 📋 Roadmap
293
-
294
- - [ ] Integración con Prisma ORM
295
- - [ ] Soporte para OAuth2
296
- - [ ] Rate limiting integrado
297
- - [ ] Audit logging
298
- - [ ] Multi-tenancy support
299
-
300
- ## 📜 Licencia
301
-
302
- MIT © MLahuasi
303
-
304
- ---
305
-
306
- **¿Necesitas ayuda?** Consulta la [documentación completa](./install.md) o revisa los [ejemplos](./examples/).
1
+ # @jmlq/auth
2
+
3
+ 🔐 **Core de autenticación JWT** basado en **Arquitectura Limpia**, diseñado como **librería npm agnóstica de framework** para aplicaciones TypeScript/Node.js.
4
+
5
+ Este paquete **no expone endpoints HTTP**, **no depende de Express/Nest/Fastify** y **no usa `.env` internamente**.
6
+ Proporciona **casos de uso, servicios y contratos** listos para integrarse en APIs reales.
7
+
8
+ ---
9
+
10
+ ## 🚀 Instalación
11
+
12
+ ```bash
13
+ npm install @jmlq/auth
14
+ ```
15
+
16
+ ### Dependencias directas
17
+
18
+ - `bcryptjs`
19
+
20
+ ---
21
+
22
+ ## 📖 Documentación
23
+
24
+ - **[🏗️ Documentación de Arquitectura](./architecture.md)** - Clean Architecture, capas y patrones
25
+ - **[📚 Ejemplos de Código](./examples/)** - Casos de uso reales y implementaciones
26
+
27
+ - Arquitectura basada en **Clean Architecture**
28
+ - Separación estricta:
29
+
30
+ ```
31
+ domain → application → infrastructure
32
+ ```
33
+
34
+ - Punto de entrada del paquete: **AuthServiceFactory**
35
+
36
+ ---
37
+
38
+ ## ✨ Características Principales
39
+
40
+ - Clean Architecture real
41
+ - ✅ Framework agnostic
42
+ - Access Token + Refresh Token
43
+ - ✅ Rotación de refresh tokens
44
+ - ✅ Logout por revocación
45
+ - ✅ Autorización por Roles y Permissions
46
+ - Password hashing con bcrypt
47
+ - Repositorios in-memory para testing
48
+ - ✅ TypeScript first
49
+
50
+ ---
51
+
52
+ ## 🏃‍♂️ Inicio Rápido
53
+
54
+ ### 1️⃣ Bootstrap con AuthServiceFactory
55
+
56
+ La composición de dependencias se realiza fuera del paquete, en el composition root de tu aplicación.
57
+
58
+ ```ts
59
+ import {
60
+ AuthServiceFactory,
61
+ InMemoryUserRepository,
62
+ InMemoryCredentialRepository,
63
+ } from "@jmlq/auth";
64
+ import { JoseTokenService } from "@jmlq/auth/infrastructure";
65
+
66
+ const auth = AuthServiceFactory.create(
67
+ new InMemoryUserRepository(),
68
+ new InMemoryCredentialRepository(),
69
+ new JoseTokenService({
70
+ issuer: "my-api",
71
+ audience: "my-api-clients",
72
+ algorithm: "HS256",
73
+ accessTokenSecret: "dev-access-secret",
74
+ refreshTokenSecret: "dev-refresh-secret",
75
+ accessTokenExpiration: "15m",
76
+ refreshTokenExpiration: "7d",
77
+ }),
78
+ { bcryptSaltRounds: 10 }
79
+ );
80
+ ```
81
+
82
+ 👉 AuthServiceFactory devuelve un **contenedor tipado** con:
83
+
84
+ - Casos de uso
85
+ - TokenSessionService
86
+ - TokenService
87
+
88
+ ---
89
+
90
+ ### 🧩 Casos de Uso Disponibles
91
+
92
+ ```ts
93
+ auth.registerUserUseCase;
94
+ auth.loginWithPasswordUseCase;
95
+ auth.refreshTokenUseCase;
96
+ auth.logoutUseCase;
97
+ ```
98
+
99
+ ---
100
+
101
+ ## 🔐 Ejemplo de Integración (Express)
102
+
103
+ ### Registro
104
+
105
+ ```ts
106
+ router.post("/auth/register", async (req, res) => {
107
+ try {
108
+ const result = await auth.registerUserUseCase.execute(req.body);
109
+ return res.status(201).json(result);
110
+ } catch (err) {
111
+ return res.status(400).json({ error: err.message });
112
+ }
113
+ });
114
+ ```
115
+
116
+ ---
117
+
118
+ ### Login
119
+
120
+ ```ts
121
+ router.post("/auth/login", async (req, res) => {
122
+ const result = await auth.loginWithPasswordUseCase.execute(req.body);
123
+
124
+ res.cookie("refreshToken", result.refreshToken, {
125
+ httpOnly: true,
126
+ sameSite: "lax",
127
+ path: "/auth/refresh",
128
+ });
129
+
130
+ res.json({ accessToken: result.accessToken });
131
+ });
132
+ ```
133
+
134
+ ---
135
+
136
+ ### Refresh Token
137
+
138
+ ```ts
139
+ router.post("/auth/refresh", async (req, res) => {
140
+ try {
141
+ const result = await auth.refreshTokenUseCase.execute({
142
+ refreshToken: req.cookies.refreshToken,
143
+ });
144
+
145
+ res.cookie("refreshToken", result.refreshToken, {
146
+ httpOnly: true,
147
+ sameSite: "lax",
148
+ path: "/auth/refresh",
149
+ });
150
+
151
+ return res.json({ accessToken: result.accessToken });
152
+ } catch {
153
+ return res.status(401).json({ error: "INVALID_REFRESH_TOKEN" });
154
+ }
155
+ });
156
+ ```
157
+
158
+ ---
159
+
160
+ ### Logout
161
+
162
+ ```ts
163
+ router.post("/auth/logout", async (req, res) => {
164
+ await auth.logoutUseCase.execute({
165
+ refreshToken: req.cookies.refreshToken,
166
+ });
167
+
168
+ res.clearCookie("refreshToken", { path: "/auth/refresh" });
169
+ return res.json({ ok: true });
170
+ });
171
+ ```
172
+
173
+ ---
174
+
175
+ ## 🛡️ Middleware de Autenticación
176
+
177
+ ```ts
178
+ export function authenticate(tokenService) {
179
+ return async (req, res, next) => {
180
+ const header = req.headers.authorization ?? "";
181
+ const token = header.startsWith("Bearer ") ? header.slice(7) : null;
182
+
183
+ if (!token) {
184
+ return res.status(401).json({ error: "UNAUTHORIZED" });
185
+ }
186
+
187
+ try {
188
+ req.auth = await tokenService.verifyAccessToken(token);
189
+ next();
190
+ } catch {
191
+ return res.status(401).json({ error: "INVALID_TOKEN" });
192
+ }
193
+ };
194
+ }
195
+ ```
196
+
197
+ ---
198
+
199
+ ## 🔒 Middleware de Autorización por Permission
200
+
201
+ ```ts
202
+ import { Permission, Id } from "@jmlq/auth";
203
+
204
+ export function requirePermission(userRepository, permission: string) {
205
+ return async (req, res, next) => {
206
+ const userId = req.auth?.sub;
207
+ if (!userId) {
208
+ return res.status(401).json({ error: "UNAUTHENTICATED" });
209
+ }
210
+
211
+ const user = await userRepository.findById(new Id(userId));
212
+ const allowed = user.roles.some((r) =>
213
+ r.hasPermission(new Permission(permission))
214
+ );
215
+
216
+ if (!allowed) {
217
+ return res.status(403).json({ error: "FORBIDDEN" });
218
+ }
219
+
220
+ next();
221
+ };
222
+ }
223
+ ```
224
+
225
+ ---
226
+
227
+ ## 🧠 Flujo de Autenticación Completo
228
+
229
+ ```pgsql
230
+ Register Login → Access → Refresh → Logout → Authorization
231
+
232
+ ```
233
+
234
+ - **Register**: crea el agregado User
235
+ - **Login**: valida credenciales y crea sesión
236
+ - **Access**: access token por request
237
+ - **Refresh**: rotación de refresh token
238
+ - **Logout**: revocación de sesión
239
+ - **Authorization**: permisos evaluados en dominio
240
+
241
+ ---
242
+
243
+ ## 🔧 Variables de Entorno Recomendadas
244
+
245
+ ```bash
246
+ JWT_ACCESS_SECRET=super-secret
247
+ JWT_REFRESH_SECRET=super-refresh-secret
248
+ JWT_ACCESS_TTL=15m
249
+ JWT_REFRESH_TTL=7d
250
+ JWT_ISSUER=my-api
251
+ JWT_AUDIENCE=my-api-clients
252
+ BCRYPT_SALT_ROUNDS=10
253
+ ```
254
+
255
+ ---
256
+
257
+ ## 📜 Licencia
258
+
259
+ MIT © MLahuasi
@@ -0,0 +1,3 @@
1
+ export * from "./request";
2
+ export * from "./response";
3
+ export * from "./type";
@@ -0,0 +1,19 @@
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("./request"), exports);
18
+ __exportStar(require("./response"), exports);
19
+ __exportStar(require("./type"), exports);
@@ -0,0 +1,4 @@
1
+ export * from "./login.request";
2
+ export * from "./logout.request";
3
+ export * from "./refresh-token.request";
4
+ export * from "./register-user.request";
@@ -14,7 +14,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./login.dto"), exports);
18
- __exportStar(require("./logout.dto"), exports);
19
- __exportStar(require("./refresh-token.dto"), exports);
20
- __exportStar(require("./register-user.dto"), exports);
17
+ __exportStar(require("./login.request"), exports);
18
+ __exportStar(require("./logout.request"), exports);
19
+ __exportStar(require("./refresh-token.request"), exports);
20
+ __exportStar(require("./register-user.request"), exports);
@@ -3,7 +3,3 @@ export interface LoginRequest {
3
3
  password: string;
4
4
  rememberMe?: boolean;
5
5
  }
6
- export interface LoginResponse {
7
- accessToken: string;
8
- refreshToken: string;
9
- }
@@ -0,0 +1,3 @@
1
+ export interface LogoutRequest {
2
+ refreshToken: string;
3
+ }
@@ -0,0 +1,3 @@
1
+ export interface RefreshTokenRequest {
2
+ refreshToken: string;
3
+ }
@@ -0,0 +1,6 @@
1
+ import { UserRole } from "../type";
2
+ export interface RegisterUserRequest {
3
+ email: string;
4
+ password: string;
5
+ roles: UserRole[];
6
+ }
@@ -0,0 +1,4 @@
1
+ export * from "./login.response";
2
+ export * from "./logout.response";
3
+ export * from "./refresh-token.response";
4
+ export * from "./register-user.response";
@@ -0,0 +1,20 @@
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("./login.response"), exports);
18
+ __exportStar(require("./logout.response"), exports);
19
+ __exportStar(require("./refresh-token.response"), exports);
20
+ __exportStar(require("./register-user.response"), exports);