← back to IWasCute
src/lib/auth.ts
24 lines
import { cookies } from 'next/headers'
import { query } from './db'
export async function getSession() {
const cookieStore = await cookies()
const token = cookieStore.get('iwascute-session')?.value
if (!token) return null
const result = await query(
`SELECT s.*, u.id as user_id, u.email, u.display_name, u.role
FROM sessions s JOIN users u ON s.user_id = u.id
WHERE s.token = $1 AND s.expires_at > NOW()`,
[token]
)
return result.rows[0] || null
}
export async function requireAdmin() {
const session = await getSession()
if (!session || session.role !== 'admin') return null
return session
}