Skip to main content
zerotal

Documentation


Documentation / zerotal / auth / JwtGuardMiddleware

Class: JwtGuardMiddleware

Defined in: packages/auth/src/JwtGuardMiddleware.ts:38

Authenticate a request from a stateless HS256 JWT bearer token (a populate step, like BearerTokenMiddleware / PersistUserMiddleware — it never blocks; guard the route with AuthMiddleware).

Reads the bearer token, verifies it with Jwt, and sets ctx.user from the resolve callback. Provide secret and resolve via .with(...):

Remarks

When secret is omitted it falls back to JWT_SECRET, then APP_KEY, from the environment. If neither a secret nor a resolve callback is available the middleware is a no-op (the request passes through unauthenticated). A token that fails Jwt.verify — malformed, non-HS256, tampered, wrong-secret, or expired — leaves ctx.user unset rather than throwing.

Example

const JwtGuard = JwtGuardMiddleware.with({
  secret: Bun.env.JWT_SECRET!,
  resolve: (claims) => User.find(Number(claims.sub)),
});
Router.get("/api/me", MeController, "show", [JwtGuard, AuthMiddleware]);

Extends

Constructors

Constructor

new JwtGuardMiddleware(): JwtGuardMiddleware

Defined in: packages/core/src/middleware/BaseMiddleware.ts:36

Returns

JwtGuardMiddleware

Inherited from

BaseMiddleware.constructor

Properties

options

protected options: JwtGuardOptions = {}

Defined in: packages/auth/src/JwtGuardMiddleware.ts:39

Subclasses must declare this with their default option values. TypeScript enforces this at compile time — forgetting it is a type error.

Overrides

BaseMiddleware.options

Methods

handle()

handle(http, next): Promise<void | Response>

Defined in: packages/auth/src/JwtGuardMiddleware.ts:41

Parameters

http

HttpContext

next

NextFn

Returns

Promise<void | Response>

Overrides

BaseMiddleware.handle


with()

static with<T, Opts>(this, options): () => InstanceType<T>

Defined in: packages/core/src/middleware/BaseMiddleware.ts:48

Returns a zero-arg subclass with the given options deep-merged on top of the subclass defaults, usable directly in app.use([...]).

Type Parameters

T

T extends (...args) => BaseMiddleware<any>

Opts

Opts = T extends (...args) => BaseMiddleware<U> ? U : object

Parameters

this

T

options

Partial<Opts>

Returns

() => InstanceType<T>

Inherited from

BaseMiddleware.with


afterResponse()?

optional afterResponse(ctx): Promise<void>

Defined in: packages/core/src/middleware/BaseMiddleware.ts:70

Parameters

ctx

HttpContext

Returns

Promise<void>

Inherited from

BaseMiddleware.afterResponse


onError()?

optional onError(ctx, error): Promise<void>

Defined in: packages/core/src/middleware/BaseMiddleware.ts:71

Parameters

ctx

HttpContext

error

Error

Returns

Promise<void>

Inherited from

BaseMiddleware.onError