Something went wrong. Try again.
[READ-ONLY] Mirror of https://github.com/danielroe/roe.dev. This is the code and content for my personal website, built in Nuxt. roe.dev
Something went wrong. Try again.
793 B · 24 lines
TypeScript
12345678910111213141516171819202122232425import { getAdminSessionCookie } from '../utils/admin/oauth'
const PUBLIC_PATHS = new Set<string>([ '/api/admin/auth/callback', '/api/admin/auth/logout',])
export default defineEventHandler(async event => { const path = event.path?.split('?')[0] ?? '' const isAdminPage = path === '/admin' || path.startsWith('/admin/') const isAdminApi = path.startsWith('/api/admin/')
if (!isAdminPage && !isAdminApi) return if (PUBLIC_PATHS.has(path)) return
const expectedHandle = useRuntimeConfig(event).atproto.handle const sess = await getAdminSessionCookie(event) if (sess.data.handle === expectedHandle && sess.data.did) return
if (isAdminApi) { throw createError({ statusCode: 401, statusMessage: 'Not signed in.' }) } return sendRedirect(event, '/login', 303)})