Description
The issuer.js middleware checks the JWT role but does not verify the wallet address against the on-chain issuer allowlist at request time. A revoked issuer with a valid JWT can still mint.
Acceptance Criteria
- On each issuer-gated request, wallet from JWT verified against contract's issuer allowlist
- Revoked issuers receive
403 even with a valid JWT
- Allowlist lookups cached with a 30s TTL to avoid per-request RPC calls
- Cache invalidated on issuer revocation events
Priority: Critical | Effort: Medium
Description
The
issuer.jsmiddleware checks the JWT role but does not verify the wallet address against the on-chain issuer allowlist at request time. A revoked issuer with a valid JWT can still mint.Acceptance Criteria
403even with a valid JWTPriority: Critical | Effort: Medium