Documentation / @zerotal/auth
@zerotal/auth
Authentication and authorization for Zerotal.
Covers the whole surface: session login via the Auth facade (Auth.attempt, Auth.user, Auth.logout), bearer API tokens (PersonalAccessToken) and JWTs, Gate/Policy authorization, relational roles & permissions (RBAC), password reset and magic-link brokers, TOTP two-factor auth, WebAuthn Passkeys, and social/OAuth login (Social — GitHub, Google, Apple, and more). Password hashing (Hash) defaults to argon2id and every token is stored hashed.
Builds on @zerotal/session — register SessionProvider then AuthProvider.
Examples
Log a user in
import { Auth } from "@zerotal/auth";
if (await Auth.attempt({ email, password }, remember)) {
return redirect("/dashboard");
}
return redirect().back().withErrors({ email: "These credentials do not match our records." });
Authorize an action
import { Gate } from "@zerotal/auth";
Gate.define("update-post", (user, post) => post.authorId === user.id);
if (await Gate.allows("update-post", post)) {
// …
}
Remarks
Discovers the authenticatable model from the registry, so ctx.user and
Auth.user work with no extra wiring. Requires Bun ≥ 1.1.
Auth
- LoginAttempted
- LoginSucceeded
- LoginFailed
- LoggedOut
- Lockout
- Registered
- EmailVerified
- PasswordResetLinkSent
- PasswordResetEvent
- PasswordConfirmed
- CurrentDeviceLogout
- OtherDeviceLogout
- TokenIssued
- AuthorizationDenied
Creating
Other
- AuthOptions
- AuthMiddleware
- AuthUser
- AUTHENTICATABLE
- isAuthenticatable
- Authenticatable
- AUTH_PASSWORD_HASH_KEY
- AuthenticateSessionOptions
- AuthenticateSessionMiddleware
- BasicAuthOptions
- BasicAuthMiddleware
- BearerTokenMiddleware
- CompromisedCheckOptions
- isPasswordCompromised
- PASSWORD_CONFIRMED_AT_KEY
- DEFAULT_PASSWORD_TIMEOUT
- ConfirmPasswordOptions
- ConfirmPasswordMiddleware
- EmailOtpOptions
- EmailOtpBroker
- EMAIL_VERIFICATION
- hasEmailVerification
- EmailVerification
- Gate
- GateService
- GuestOptions
- GuestMiddleware
- HashService
- JwtSignOptions
- JwtPayload
- Jwt
- JwtGuardOptions
- JwtGuardMiddleware
- LoginThrottleOptions
- LoginRateLimiter
- loginThrottle
- MAGIC
- MagicLinkBrokerResult
- MagicLinkUser
- MagicLinkBrokerOptions
- MagicLinkBroker
- PasskeyCredential
- PasskeyUser
- PasskeysOptions
- PasskeyService
- PASSWORDS
- PasswordBrokerResult
- PasswordBrokerOptions
- PasswordBroker
- PASSWORD_RESET
- hasPasswordReset
- PasswordReset
- PersistUserMiddleware
- TokenRow
- NewToken
- Policy
- REMEMBER_COOKIE
- REMEMBER_MAX_AGE
- mintRememberToken
- hashRememberToken
- rememberTokenMatches
- RememberMeOptions
- RememberMeMiddleware
- TWO_FACTOR_SESSION_KEY
- TWO_FACTOR_PENDING_KEY
- TWO_FACTOR_REMEMBER_KEY
- TwoFactorMiddleware
- RECOVERY_CODE_BITS
- TwoFactorOptions
- TwoFactorService
- ValidateSignatureMiddleware
- AuthConfigShape
- AuthConfig
- Credentials
- LoginOptions
- UserModel
- Auth
- Hash
- TwoFactor
- RequestGuardResolver
- Guard
- RequestGuard
- AuthProvider
- SocialProvider
- Permission
- definePermission
- registeredPermissions
- PermissionRegistry
- PERMISSIONS_MIXIN
- hasPermissionsMixin
- Permissions
- RequirePermissionMiddleware
- Role
- ROLES_MIXIN
- hasRolesMixin
- Roles
- RequireRoleMiddleware
- SocialManager
- SocialConfigShape
- SocialConfig
- AppleDriver
- TokenBundle
- OAuth2Driver
- SocialError
- UnknownSocialDriverError
- OAuthStateMismatchError
- OAuthMissingCodeError
- SocialContextUnavailableError
- OAuthTokenExchangeError
- OAuthUserFetchError
- AppleClientSecretError
- Social
- fakeSocialUser
- FakeSocialDriver
- SocialUser
- OAuth2Config
- AppleOAuth2Config
- SocialSession
Providers
- DiscordDriver
- FacebookDriver
- GitHubDriver
- GitLabDriver
- GoogleDriver
- LinkedInDriver
- MicrosoftDriver
- TwitterDriver