import { sValidator } from '@hono/standard-validator'; import { Hono } from 'hono'; import { z } from 'zod'; import { GoogleAuthOptions, OidcAuthOptions } from '../config'; import { handleOAuthAuthorizeUrl } from '../lib/utils/handle-oauth-authorize-url'; import type { HonoAuthContext } from '../types/context'; const ZOAuthAuthorizeSchema = z.object({ redirectPath: z.string().optional(), }); export const oauthRoute = new Hono() /** * Google authorize endpoint. */ .post('/authorize/google', sValidator('json', ZOAuthAuthorizeSchema), async (c) => { const { redirectPath } = c.req.valid('json'); return handleOAuthAuthorizeUrl({ c, clientOptions: GoogleAuthOptions, redirectPath, }); }) /** * OIDC authorize endpoint. */ .post('/authorize/oidc', sValidator('json', ZOAuthAuthorizeSchema), async (c) => { const { redirectPath } = c.req.valid('json'); return handleOAuthAuthorizeUrl({ c, clientOptions: OidcAuthOptions, redirectPath, }); });