← back to ClawCoder

src/app/api/auth/route.ts

36 lines

import { NextRequest, NextResponse } from 'next/server'

const AUTH_USER = 'Steve'
const AUTH_PASS = 'DWSecure2024!'
const SESSION_COOKIE = 'clawcoder_session'
const THIRTY_DAYS = 30 * 24 * 60 * 60

export async function POST(request: NextRequest) {
  const { username, password } = await request.json()

  if (username === AUTH_USER && password === AUTH_PASS) {
    const session = Buffer.from(JSON.stringify({
      authenticated: true,
      username,
      loginTime: Date.now(),
    })).toString('base64url')

    const response = NextResponse.json({ ok: true })
    response.cookies.set(SESSION_COOKIE, session, {
      httpOnly: true,
      sameSite: 'lax',
      maxAge: THIRTY_DAYS,
      path: '/',
    })
    return response
  }

  return NextResponse.json({ error: 'Invalid credentials' }, { status: 401 })
}

export async function DELETE() {
  const response = NextResponse.json({ ok: true })
  response.cookies.delete(SESSION_COOKIE)
  return response
}