22 lines
718 B
JavaScript
22 lines
718 B
JavaScript
import { sql, param, ok, fail, hashPassword } from '../lib/db.js';
|
|
|
|
export default async function handler(req, res) {
|
|
const name = param(req, 'user');
|
|
const pass = param(req, 'pass');
|
|
|
|
if (!/^[A-Za-z0-9_-]{2,20}$/.test(name))
|
|
return fail(res, 'Name: 2-20 Zeichen, a-z 0-9 _ -');
|
|
if (pass.length < 4)
|
|
return fail(res, 'Passwort zu kurz (min. 4)');
|
|
|
|
try {
|
|
const exists = await sql`SELECT id FROM users WHERE LOWER(name) = LOWER(${name})`;
|
|
if (exists.length) return fail(res, 'Name bereits vergeben');
|
|
|
|
await sql`INSERT INTO users (name, pass_hash) VALUES (${name}, ${hashPassword(pass)})`;
|
|
ok(res, 'OK|registriert\n');
|
|
} catch (e) {
|
|
fail(res, 'Serverfehler: ' + e.message);
|
|
}
|
|
}
|