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.
863 B · 26 lines
TypeScript
at feat/nuxt-v5
123456789101112131415161718192021222324252627import { createError, defineEventHandler, sendRedirect, useRuntimeConfig } from 'nuxt/server'
import { 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.url.pathname 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().atproto.handle const sess = await getAdminSessionCookie(event) if (sess.data.handle === expectedHandle && sess.data.did) return
if (isAdminApi) { throw createError({ status: 401, statusText: 'Not signed in.' }) } return sendRedirect(event, '/login', 303)})