# Clerk middleware for Hono [![codecov](https://codecov.io/github/honojs/middleware/graph/badge.svg?flag=clerk-auth)](https://codecov.io/github/honojs/middleware) This is a [Clerk](https://clerk.com) third-party middleware for [Hono](https://github.com/honojs/hono). This middleware can be used to inject the active Clerk session into the request context. ## Installation ```plain npm i hono @hono/clerk-auth @clerk/backend ``` ## Configuration Before starting using the middleware you must set the following environment variables: ```plain CLERK_SECRET_KEY= CLERK_PUBLISHABLE_KEY= ``` ## How to Use ```ts import { clerkMiddleware, getAuth } from '@hono/clerk-auth' import { Hono } from 'hono' const app = new Hono() app.use('*', clerkMiddleware()) app.get('/', (c) => { const auth = getAuth(c) if (!auth?.userId) { return c.json({ message: 'You are not logged in.', }) } return c.json({ message: 'You are logged in!', userId: auth.userId, }) }) export default app ``` ## Accessing instance of Backend API client ```ts import { clerkMiddleware, getAuth } from '@hono/clerk-auth' import { Hono } from 'hono' const app = new Hono() app.use('*', clerkMiddleware()) app.get('/', async (c) => { const clerkClient = c.get('clerk') try { const user = await clerkClient.users.getUser('user_id_....') return c.json({ user, }) } catch (e) { return c.json( { message: 'User not found.', }, 404 ) } }) export default app ``` ## Author Vaggelis Yfantis