a34d406375
- Add user contribution system (memories, timeline entries) - Add AI content moderation with Ollama (bad word detection + qwen3:4b) - Add family photo/video upload with admin approval - Add candle lighting feature - Add timeline and recipe sections - Add QR code page and OG image - Add site authentication (password-protected access) - Add proxy middleware for auth routing - Add admin dashboard for content management - Remove email fields, make name optional (default: Anonym) - Add CI/CD pipeline for Gitea Actions - Add Docker deployment configuration - Optimize Ollama RAM usage (42GB → 2.9GB) - Fix API routes accessibility through proxy middleware Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
29 lines
771 B
TypeScript
29 lines
771 B
TypeScript
import { NextRequest, NextResponse } from 'next/server'
|
|
import { createHash } from 'crypto'
|
|
|
|
export const runtime = 'nodejs'
|
|
|
|
function getExpectedToken() {
|
|
return createHash('sha256')
|
|
.update(process.env.SITE_PASSWORD || 'familie')
|
|
.digest('hex')
|
|
}
|
|
|
|
export async function POST(req: NextRequest) {
|
|
const { password } = await req.json()
|
|
|
|
if (password !== (process.env.SITE_PASSWORD || 'familie')) {
|
|
return NextResponse.json({ error: 'Falsches Passwort' }, { status: 401 })
|
|
}
|
|
|
|
const response = NextResponse.json({ success: true })
|
|
response.cookies.set('site_auth', getExpectedToken(), {
|
|
httpOnly: true,
|
|
secure: process.env.NODE_ENV === 'production',
|
|
sameSite: 'lax',
|
|
maxAge: 60 * 60 * 24 * 30,
|
|
path: '/',
|
|
})
|
|
return response
|
|
}
|