UNPKG

hono

Version:

Web framework built on Web Standards

76 lines (75 loc) 2.56 kB
/** * @module * Basic Auth Middleware for Hono. */ import type { Context } from '../../context'; import type { MiddlewareHandler } from '../../types'; type MessageFunction = (c: Context) => string | object | Promise<string | object>; type BasicAuthOptions = { username: string; password: string; realm?: string; hashFunction?: Function; invalidUserMessage?: string | object | MessageFunction; onAuthSuccess?: (c: Context, username: string) => void | Promise<void>; } | { verifyUser: (username: string, password: string, c: Context) => boolean | Promise<boolean>; realm?: string; hashFunction?: Function; invalidUserMessage?: string | object | MessageFunction; onAuthSuccess?: (c: Context, username: string) => void | Promise<void>; }; /** * Basic Auth Middleware for Hono. * * @see {@link https://hono.dev/docs/middleware/builtin/basic-auth} * * @param {BasicAuthOptions} options - The options for the basic authentication middleware. * @param {string} options.username - The username for authentication. * @param {string} options.password - The password for authentication. * @param {string} [options.realm="Secure Area"] - The realm attribute for the WWW-Authenticate header. * @param {Function} [options.hashFunction] - The hash function used for secure comparison. * @param {Function} [options.verifyUser] - The function to verify user credentials. * @param {string | object | MessageFunction} [options.invalidUserMessage="Unauthorized"] - The invalid user message. * @param {Function} [options.onAuthSuccess] - Callback function called on successful authentication. * @returns {MiddlewareHandler} The middleware handler function. * @throws {HTTPException} If neither "username and password" nor "verifyUser" options are provided. * * @example * ```ts * const app = new Hono() * * app.use( * '/auth/*', * basicAuth({ * username: 'hono', * password: 'ahotproject', * }) * ) * * app.get('/auth/page', (c) => { * return c.text('You are authorized') * }) * ``` * * @example * ```ts * // With onAuthSuccess callback * app.use( * '/auth/*', * basicAuth({ * username: 'hono', * password: 'ahotproject', * onAuthSuccess: (c, username) => { * c.set('user', { name: username, role: 'admin' }) * console.log(`User ${username} authenticated`) * }, * }) * ) * ``` */ export declare const basicAuth: (options: BasicAuthOptions, ...users: { username: string; password: string; }[]) => MiddlewareHandler; export {};