21 lines
848 B
JavaScript
21 lines
848 B
JavaScript
import { Hono } from 'hono';
|
|
import { rateLimit } from '../ratelimit.js';
|
|
import { login } from '../auth-local.js';
|
|
|
|
// Lokaler Login (auth: 'local') — ersetzt GoTrue. Liefert ein GoTrue-förmiges
|
|
// Token, das requireAuth genauso prüft wie ein Supabase-Token. Nur gemountet,
|
|
// wenn config.auth === 'local' (siehe index.js); Brute-Force gedrosselt.
|
|
const auth = new Hono();
|
|
|
|
auth.post('/login', rateLimit({ max: 10, windowMs: 5 * 60_000 }), async (c) => {
|
|
let body = {};
|
|
try { body = await c.req.json(); } catch { /* leerer/kaputter Body → 400 unten */ }
|
|
const { email, password } = body;
|
|
if (!email || !password) return c.json({ error: 'E-Mail und Passwort nötig' }, 400);
|
|
const res = await login(email, password);
|
|
if (!res) return c.json({ error: 'Login fehlgeschlagen' }, 401);
|
|
return c.json(res);
|
|
});
|
|
|
|
export default auth;
|