chore(work): finish 05-auth-signin-rate-limit-backfill
This commit is contained in:
@@ -1,5 +1,5 @@
|
|||||||
{
|
{
|
||||||
"updated_at": "2026-05-20T09:05:32.004Z",
|
"updated_at": "2026-05-20T09:27:20.316Z",
|
||||||
"epics": {
|
"epics": {
|
||||||
"binder-wrap-helper": {
|
"binder-wrap-helper": {
|
||||||
"status": "done",
|
"status": "done",
|
||||||
@@ -616,10 +616,10 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"05-auth-signin-rate-limit-backfill": {
|
"05-auth-signin-rate-limit-backfill": {
|
||||||
"status": "todo",
|
"status": "done",
|
||||||
"title": "auth.signIn rate-limit backfill",
|
"title": "auth.signIn rate-limit backfill",
|
||||||
"ac_total": 1,
|
"ac_total": 1,
|
||||||
"ac_completed": 0,
|
"ac_completed": 1,
|
||||||
"depends_on": [],
|
"depends_on": [],
|
||||||
"blocks": []
|
"blocks": []
|
||||||
},
|
},
|
||||||
@@ -686,11 +686,6 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"ready": [
|
"ready": [
|
||||||
{
|
|
||||||
"epic": "security-headers-rate-limit-sbom",
|
|
||||||
"story": "05-auth-signin-rate-limit-backfill",
|
|
||||||
"title": "auth.signIn rate-limit backfill"
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
"epic": "security-headers-rate-limit-sbom",
|
"epic": "security-headers-rate-limit-sbom",
|
||||||
"story": "06-security-headers-core-module",
|
"story": "06-security-headers-core-module",
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ id: 05-auth-signin-rate-limit-backfill
|
|||||||
epic: security-headers-rate-limit-sbom
|
epic: security-headers-rate-limit-sbom
|
||||||
title: auth.signIn rate-limit backfill
|
title: auth.signIn rate-limit backfill
|
||||||
type: technical-story
|
type: technical-story
|
||||||
status: todo
|
status: done
|
||||||
feature: auth
|
feature: auth
|
||||||
depends-on:
|
depends-on:
|
||||||
[
|
[
|
||||||
@@ -14,7 +14,7 @@ depends-on:
|
|||||||
]
|
]
|
||||||
blocks: []
|
blocks: []
|
||||||
created: 2026-05-20T00:00:00Z
|
created: 2026-05-20T00:00:00Z
|
||||||
updated: 2026-05-20T08:14:55.907Z
|
updated: 2026-05-20T09:27:20.152Z
|
||||||
---
|
---
|
||||||
|
|
||||||
## Goal
|
## Goal
|
||||||
@@ -51,4 +51,4 @@ Apply the rate-limit primitive to `auth.signIn` as the canonical reference examp
|
|||||||
|
|
||||||
## Tasks
|
## Tasks
|
||||||
|
|
||||||
- [ ] Add `rateLimit: [{ name: "ip", window: "1m", budget: 5 }, { name: "account", window: "1h", budget: 10 }]` to the `signIn` entry in `packages/auth/src/feature.manifest.ts`; add `rateLimit: IRateLimit` to `signInUseCase` deps; add `TooManyRequestsError` to auth error types if absent; insert dual `rateLimit.consume` calls with `TooManyRequestsError` throws in the use-case body; update `bind-production.ts` + `bind-dev-seed.ts` to pass `ctx.rateLimit ?? new NoopRateLimit()` into signIn's `wireUseCase`; extend signIn unit tests with `RecordingRateLimit` dual-consume assertion and `InMemoryRateLimit` budget-1 rejection; all gates pass.
|
- [x] Add `rateLimit: [{ name: "ip", window: "1m", budget: 5 }, { name: "account", window: "1h", budget: 10 }]` to the `signIn` entry in `packages/auth/src/feature.manifest.ts`; add `rateLimit: IRateLimit` to `signInUseCase` deps; add `TooManyRequestsError` to auth error types if absent; insert dual `rateLimit.consume` calls with `TooManyRequestsError` throws in the use-case body; update `bind-production.ts` + `bind-dev-seed.ts` to pass `ctx.rateLimit ?? new NoopRateLimit()` into signIn's `wireUseCase`; extend signIn unit tests with `RecordingRateLimit` dual-consume assertion and `InMemoryRateLimit` budget-1 rejection; all gates pass.
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ status: in-progress
|
|||||||
features:
|
features:
|
||||||
[core-shared, core-testing, core-eslint, auth, web-next, web-tanstack, cms]
|
[core-shared, core-testing, core-eslint, auth, web-next, web-tanstack, cms]
|
||||||
created: 2026-05-20T00:00:00Z
|
created: 2026-05-20T00:00:00Z
|
||||||
updated: 2026-05-20T09:05:31.838Z
|
updated: 2026-05-20T09:27:20.152Z
|
||||||
---
|
---
|
||||||
|
|
||||||
## Goal
|
## Goal
|
||||||
@@ -24,7 +24,7 @@ Security scanners flag the absence of HSTS, X-Frame-Options, X-Content-Type-Opti
|
|||||||
- [x] [02 — Rate-limit implementations: Noop, InMemory, Recording](02-rate-limit-implementations/_story.md)
|
- [x] [02 — Rate-limit implementations: Noop, InMemory, Recording](02-rate-limit-implementations/_story.md)
|
||||||
- [x] [03 — `no-undeclared-rate-limit` ESLint rule](03-no-undeclared-rate-limit-eslint-rule/_story.md)
|
- [x] [03 — `no-undeclared-rate-limit` ESLint rule](03-no-undeclared-rate-limit-eslint-rule/_story.md)
|
||||||
- [x] [04 — `withRateLimit` wrapper and conformance extensions](04-with-rate-limit-wrapper-and-conformance/_story.md)
|
- [x] [04 — `withRateLimit` wrapper and conformance extensions](04-with-rate-limit-wrapper-and-conformance/_story.md)
|
||||||
- [ ] [05 — auth.signIn rate-limit backfill](05-auth-signin-rate-limit-backfill/_story.md)
|
- [x] [05 — auth.signIn rate-limit backfill](05-auth-signin-rate-limit-backfill/_story.md)
|
||||||
- [ ] [06 — Security headers core module](06-security-headers-core-module/_story.md)
|
- [ ] [06 — Security headers core module](06-security-headers-core-module/_story.md)
|
||||||
- [ ] [07 — Per-framework security header adapters](07-security-header-adapters/_story.md)
|
- [ ] [07 — Per-framework security header adapters](07-security-header-adapters/_story.md)
|
||||||
- [ ] [08 — App wiring: web-next](08-app-wiring-web-next/_story.md)
|
- [ ] [08 — App wiring: web-next](08-app-wiring-web-next/_story.md)
|
||||||
|
|||||||
Reference in New Issue
Block a user