bigly-video/form/register.js

48 lines
1.5 KiB
JavaScript
Raw Normal View History

2024-11-25 14:12:43 -05:00
// from an old project: https://git.zenoverse.net/bigly-archive/auth-thing/raw/branch/main/src/routes/register/+page.server.js
import Route from "../route.js";
import initDb from "../db.js";
import { hash } from "bcrypt";
2024-11-25 14:12:44 -05:00
import captcha from "./captcha.js";
2024-11-25 14:12:43 -05:00
const minChar = 1;
const maxChar = 32;
let db = await initDb();
function isValid(user) {
return user.search(/[^A-Za-z0-9\-\_]/g) == -1;
}
// TODO: rewrite
2024-11-25 14:12:44 -05:00
let main = new Route([captcha], async function (req, res, input) {
2024-11-25 14:12:43 -05:00
let { user, pass, pass2 } = req.body;
2024-11-25 14:12:44 -05:00
let { captchaMatch} = input;
if (!captchaMatch) return { 'success': false, 'message': 'Captcha is incorrect' };
2024-11-25 14:12:43 -05:00
if (pass != pass2) return { 'success': false, 'message': 'Passwords do not match' };
if (!pass || !user || !pass2) return { 'success': false, 'message': 'Some fields are missing' };
if (!isValid(user)) return { 'success': false, 'message': 'Username is invalid' };
if (user.length < minChar || user.length > maxChar)
return { 'success': false, 'message': `Username must be ${minChar} to ${maxChar} characters` };
let isExist = await db.all('SELECT username FROM auth WHERE UPPER(username) LIKE UPPER(?)', [
user
]);
if (isExist.length > 0) return { 'success': false, 'message': 'Account already exists' };
var passHash = await hash(pass, 10);
await db.run('INSERT INTO auth (username, password) VALUES (?, ?)', [
user,
passHash
]);
return { 'message': 'Account created', 'success': true, 'redirect': '/client/login' };
});
export default main;