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/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) {
|
2024-11-25 14:12:44 -05:00
|
|
|
let { user, pass } = req.body;
|
2024-11-25 14:12:43 -05:00
|
|
|
|
|
|
|
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);
|
|
|
|
|
2024-11-25 14:12:44 -05:00
|
|
|
return {'success': true, 'message': 'Log in succeeded', 'redirect': (req.query.redirect + '?token=' + token) || '/', 'data': token};
|
2024-11-25 14:12:43 -05:00
|
|
|
});
|
|
|
|
|
|
|
|
export default main;
|