/** @type {import('./$types').Actions} */ import {hash} from 'bcrypt'; import {initDb} from '$lib/db/db.js'; const db = await initDb(); const saltRounds = 10; /** @type {import('./$types').RequestHandler} */ export async function POST(event) { var data = await event.request.formData(); var user = data.get("username"); var rows = await db.all( "SELECT * from auth WHERE user = ?", [user] ); if (rows.length == 0) { var state = await register(data); return {success: state}; } else { return {success: 'exists'}; } }; async function register(data) { var user = data.get("username"); var email = data.get("email"); var password = data.get("password"); if (!password || !email || !user) return 'missing'; if (password.length > 256 || email.length > 64 || user.length > 32) return 'long'; const userTest = new RegExp("^[A-Za-z0-9_-]+$"); if (!userTest.test(user)) return 'invalid'; var passHash = await hash(password,saltRounds); await db.run( "INSERT INTO auth (user,email,password) VALUES (?,?,?)", [user,email,passHash] ); return 'login'; }