Documentation
¶
Overview ¶
Package authmw provides route-level authentication/authorization middleware.
This package depends on server/router types, while the core auth package remains provider-agnostic and server-independent.
Index ¶
Constants ¶
This section is empty.
Variables ¶
var RequireAuth router.Middleware = router.MiddlewareFunc( func(ctx server.Ctx, next func() error) error { if !auth.IsAuthenticated(ctx) { return auth.ErrUnauthorized } return next() }, )
RequireAuth is Vango middleware that requires authentication. Use on routes that should only be accessible to logged-in users.
Usage in file-based routing:
// app/routes/dashboard/middleware.go
func Middleware() []router.Middleware {
return []router.Middleware{
authmw.RequireAuth,
}
}
Functions ¶
func RequireAll ¶
func RequireAll[T any](checks ...func(T) bool) router.Middleware
RequireAll returns middleware that requires all checks to pass.
Usage:
authmw.RequireAll(
func(u *User) bool { return u.IsActive },
func(u *User) bool { return u.EmailVerified },
)
func RequireAny ¶
func RequireAny[T any](checks ...func(T) bool) router.Middleware
RequireAny returns middleware that requires at least one of the checks to pass.
Usage:
authmw.RequireAny(
func(u *User) bool { return u.IsAdmin },
func(u *User) bool { return u.IsOwner(resourceID) },
)
func RequirePermission ¶
func RequirePermission[T any](check func(T) bool) router.Middleware
RequirePermission returns middleware that checks for a specific permission. This is semantically equivalent to RequireRole but communicates intent better for permission-based authorization.
Usage:
authmw.RequirePermission(func(u *models.User) bool {
return u.Can("projects.delete")
})
func RequireRole ¶
func RequireRole[T any](check func(T) bool) router.Middleware
RequireRole returns middleware that requires a specific role. The check function receives the user and returns true if authorized.
Usage:
func Middleware() []router.Middleware {
return []router.Middleware{
authmw.RequireRole(func(u *models.User) bool {
return u.Role == "admin"
}),
}
}
Types ¶
This section is empty.