← 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
}