allof-space/src/routes/api/account/register/+server.js
2022-10-06 18:00:27 -04:00

46 lines
1.2 KiB
JavaScript

/** @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';
}