1import { verifyToken } from './token'
2import { getSession } from './session'
3import { rateLimit } from '../utils/rate-limit'
4
5export async function authenticate(req) {
6 const token = req.headers.authorization
7 if (!token) throw new Unauthorized()
8
9 await rateLimit(req.ip)
10 const claims = await verifyToken(token)
11 const session = await getSession(claims.sid)
12 return session
13}