From dc5a002144ff7165e73fb38f4be186d827df98c6 Mon Sep 17 00:00:00 2001 From: Julien Dessaux Date: Sun, 30 Oct 2022 23:16:47 +0100 Subject: Added register and login database functions, and use the last one in the login route --- database/users.js | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 database/users.js (limited to 'database/users.js') diff --git a/database/users.js b/database/users.js new file mode 100644 index 0000000..4b534b8 --- /dev/null +++ b/database/users.js @@ -0,0 +1,34 @@ +import bcrypt from "bcrypt"; + +import db from "./db.js"; + +const saltRounds = 10; + +const createUserStatement = db.prepare("INSERT INTO users (username, hash, email) VALUES (?, ?, ?);"); +const loginStatement = db.prepare("SELECT id, hash, email FROM users WHERE username = ?;"); + +export async function createUser(username, password, email) { + const hash = await bcrypt.hash(password, saltRounds); + try { + return createUserStatement.run(username, hash, email).lastInsertRowid; + } catch { + return null; + } +} + +export async function login(username, password) { + try { + var user = loginStatement.get(username); + } catch { + return null; + } + const result = await bcrypt.compare(password, user.hash); + if (result === true) { + return { + id: user.id, + username: username, + email: user.email, + }; + } + return null; +} -- cgit v1.2.3