chattie
4d0970df5d
feat(F-091): completed feature
2026-08-20 21:47:31 +02:00
chattie
84bf380987
feat(F-090): completed feature
2026-08-20 21:40:41 +02:00
chattie
a591992840
feat(F-089): completed feature
2026-08-20 21:34:12 +02:00
chattie
699c01ade5
feat(F-088): completed feature
2026-08-20 21:29:14 +02:00
chattie
63fdc775d9
feat(F-087): completed feature
2026-08-20 06:16:38 +02:00
chattie
822bc7546c
feat(F-086): completed feature
2026-08-20 06:13:37 +02:00
chattie
7ece045e13
feat(F-085): completed feature
2026-08-20 06:10:48 +02:00
chattie
3b5ea8f261
feat(F-084): completed feature
2026-08-20 06:09:17 +02:00
chattie
22ad15325f
feat(F-083): completed feature
2026-08-20 06:08:32 +02:00
chattie
23e84efe80
feat(F-082): completed feature
2026-08-20 06:04:22 +02:00
chattie
baec2a43c3
feat(F-081): completed feature
2026-08-20 06:01:32 +02:00
chattie
506dfd0cce
feat(F-080): completed feature
2026-08-20 05:59:47 +02:00
chattie
60206d88eb
feat(F-079): completed feature
2026-08-20 05:57:24 +02:00
chattie
fffb52721a
feat(F-078): completed feature
2026-08-20 05:55:46 +02:00
chattie
77b9b590b3
feat(F-077): completed feature
2026-08-19 19:33:26 +02:00
chattie
5a31f3945e
feat(F-076): completed feature
2026-08-19 19:31:46 +02:00
chattie
a17dad6bd0
feat(F-075): completed feature
2026-08-19 19:29:11 +02:00
chattie
e699285b1d
feat(F-074): completed feature
2026-08-19 19:25:39 +02:00
chattie
1fe9b8babd
feat(F-073): completed feature
2026-08-19 19:23:44 +02:00
chattie
352033e3fc
feat(F-072): completed feature
2026-08-19 19:22:08 +02:00
chattie
cf67f51d07
feat(F-071): completed feature
2026-08-19 19:04:41 +02:00
chattie
4b12cacd65
feat(F-070): completed feature
2026-08-19 18:21:01 +02:00
chattie
ddcf2e0c28
feat(F-069): completed feature
2026-08-19 18:09:23 +02:00
chattie
ba2ac939c7
feat(F-068): completed feature
2026-08-19 17:36:09 +02:00
chattie
f62bd6a578
feat(F-067): completed feature
2026-08-19 17:30:00 +02:00
chattie
9f1858f6d7
feat(F-066): completed feature
2026-08-19 17:22:39 +02:00
chattie
e60e22ca30
feat(F-065): completed feature
2026-08-19 17:12:25 +02:00
chattie
a6d65310df
feat(F-064): completed feature
2026-08-19 17:09:37 +02:00
chattie
c34241134f
feat(F-063): completed feature
2026-08-19 17:07:45 +02:00
chattie
52e30c39d7
feat(F-062): completed feature
2026-08-19 17:02:14 +02:00
chattie
e0411bc5a4
feat(F-061): completed feature
2026-08-19 16:56:06 +02:00
chattie
5e2e935f76
feat(F-060): completed feature
2026-08-19 16:49:16 +02:00
chattie
72ba84456c
feat(F-059): completed feature
2026-08-19 15:32:56 +02:00
chattie
4cdb5fb487
feat(F-058): completed feature
2026-08-19 15:17:51 +02:00
chattie
9c4557a1bf
feat(F-057): completed feature
2026-08-19 15:10:47 +02:00
chattie
a967e49851
feat(F-056): completed feature
2026-08-19 15:10:09 +02:00
chattie
cc84f24658
feat(F-055): completed feature
2026-08-19 13:48:32 +02:00
chattie
de41a42d88
feat(F-054): completed feature
2026-08-19 13:15:30 +02:00
chattie
6a74f5ede6
feat(F-053): completed feature
2026-08-19 10:48:35 +02:00
chattie
adf1d20c4c
feat(F-052): completed feature
2026-08-19 10:47:17 +02:00
chattie
30c131a809
feat(F-051): completed feature
2026-08-19 10:43:17 +02:00
chattie
984f278bca
feat(F-050): completed feature
2026-08-19 07:54:36 +02:00
chattie
e86034a62c
feat(F-049): completed feature
2026-08-19 07:34:15 +02:00
chattie
835ab66eda
feat(F-048): completed feature
2026-08-19 07:17:14 +02:00
chattie
8ee1938af9
feat(BD-09): completed feature
2026-08-18 06:23:37 +02:00
chattie
60a8dc01ed
feat(ADM-41): completed feature
2026-08-17 22:34:41 +02:00
chattie
6e9006f32d
feat(FE-04): completed feature
2026-08-17 22:33:40 +02:00
chattie
d595b4871f
feat(ADM-018): completed feature
2026-08-17 22:23:10 +02:00
rikrdo
546971280f
feat(F-006): users profile, addresses and RBAC
...
- users module: profile + address CRUD behind use cases (users_profiles,
users_addresses)
- roles customer/admin on identity_users; role resolved from DB per request
- shared auth contract (Authenticate, requireRole, requireOwnerOrAdmin)
injected from composition root; users never imports identity
- authorization runs before existence checks; address SQL scoped by user_id
- @fastify/cookie registered once at app root (cross-module)
- migrations 003_identity_roles + 004_users (reversible)
- no new npm dependencies; tests: unit 52, integration 22
Gates: reviewer/security/qa APPROVED; verify.sh green
2026-08-15 09:28:15 +02:00
rikrdo
75293f39bc
feat(identity): F-005 register/login/logout with argon2 sessions and rate limiting
...
- Hexagonal identity module: domain ports, use cases, argon2id hasher, pg repos
- Migration 002_identity: identity_users + identity_sessions (token hash only)
- Opaque 512-bit session tokens; DB stores SHA-256 hash; 7-day TTL in SQL
- Cookie HttpOnly + Secure (COOKIE_SECURE, default true) + SameSite=Lax
- LoginRateLimiter: 10 failures -> 429 + Retry-After, 15-min cooldown
- Anti-enumeration: identical generic 401 + dummy-hash timing equalization
- buildApp gains optional pool/cookieSecure; foundation-only app preserved
- 47 unit + 14 integration tests; live smoke covers all acceptance criteria
2026-08-14 22:58:32 +02:00