// from an old project: https://git.zenoverse.net/bigly-archive/auth-thing/raw/branch/main/src/routes/login/+page.server.js import Route from "../route.js"; import initDb from "../db.js"; import { compare } from "bcrypt"; import { randomBytes } from 'node:crypto'; let db = await initDb(); // TODO: rewrite let main = new Route([], async function (req, res, input) { let { user, pass } = req.body; if (!pass || !user) return { 'success': false, 'message': 'Some fields are missing' }; let isExist = await db.all('SELECT * FROM auth WHERE UPPER(username) LIKE UPPER(?)', [ user ]); if (isExist.length < 1) return { 'success': false, 'message': 'Account does not exist' }; let passHash = await compare(pass, isExist[0].password); if (!passHash) return { 'success': false, 'message': 'Incorrect password' }; let token = randomBytes(32).toString('hex'); await db.run('INSERT INTO token (username, token) VALUES (?, ?)', [ user, token ]) res.cookie('token', token); return { 'success': true, 'message': 'Log in succeeded', 'redirect': (req.query.redirect == 'undefined' ? '/' : req.query.redirect) + '?token=' + token, 'data': token }; }); export default main;