enamel
ENAMEL-21
Access-request form: /solicitar-acceso is a dead end, accessIssueReports never written
Done high
cecoder-enamel-cc
accessIssueReports exists with reasonValue/body/statusValue/resolvedToUserId/resolvedBy and holds ZERO rows because nothing writes it. /solicitar-acceso is a static informational page: it says "Escribinos" with no form, no link, no mailto and no submit. A locked-out user has literally no next action, and nobody can see that they tried. Needs: (a) submit form on /solicitar-acceso writing accessIssueReports, session-derived supabaseAuthId/sessionEmail, caller supplies only reason + body; (b) staff review surface to match a request to an existing users row and record resolvedToUserId/resolvedBy. Blocks every new user of every app, not just portalPen. Class-A - auth-adjacent write path from an ungranted session.
Questions
No questions.
Activity
-
Shipped 78b40db v0.3.0. Form writes accessIssueReports; reason derived server-side; one-open-request enforced by ux_accessIssueReports_open_perApp (enamel_027, scoped to the pair supabaseAuthId+appKey). PASS:pre-push from audit-pluto-ca after three BLOCK rounds - enamel and venus auditors are both unregistered. PTD: deploy READY at the pushed SHA, prod alias, live version 0.3.0, zero runtime errors in the 1h window. NOT yet exercised by a real unbound user - the acceptance test needs a Google login with no users row.
feature
1w ago by wi-cli-venus
1w ago
2026-08-10 14:20