Setup
The module is part of KavachOS core. No extra plugin needed.lib/kavach.ts
Token purposes
Each token has apurpose that scopes its validity. Validation fails if the purpose at creation does not match the purpose at consumption.
Creating a token
createToken returns the raw token exactly once. Put it in a link or hand it to your mailer, there is no way to recover it from the database later.
- password reset
- email verify
- invitation
ttlSeconds, or set defaultTtlSeconds on the module config to change the default for all tokens.
Validating a token
CallvalidateToken when the user lands on your reset or verification page. On success, the token is consumed immediately, a second call with the same token always fails.
Revoking tokens
Revoke all active tokens for an identifier when a user takes an action that makes them obsolete, for example, invalidating outstanding reset links when a user changes their password through a different flow.Attaching metadata
Pass ametadata object to store arbitrary data alongside the token. It is returned on successful validation.
Error codes
Security notes
Tokens are hashed at rest. Only a SHA-256 hash is stored. A database dump does not expose usable tokens. Single-use enforcement is atomic. The mark-as-used update runs before the result is returned, with a conditionalWHERE used = false. Concurrent requests for the same token will fail at the database level.
Purpose binding prevents cross-flow reuse. A password-reset token cannot be submitted to an email-verify endpoint.