login WIP

This commit is contained in:
newtbot
2024-01-20 04:13:20 +08:00
parent 2ecb69c828
commit 32be41ea46
7 changed files with 141 additions and 54 deletions

View File

@ -2,10 +2,11 @@ const { sequelize } = require("../database/mySql.js");
const { apikeyModel } = require("../database/model/apikeyModel.js");
const { userModel } = require("../database/model/userModel.js");
const { Op, Sequelize } = require("sequelize");
const { hashAPIKey } = require("../functions/bcrypt.js");
const { generateUUID } = require("../functions/generateUUID.js");
const { hashPassword , comparePassword , hashAPIKey } = require("../functions/bcrypt.js");
//helper function
//api/v0/user/register
@ -19,15 +20,76 @@ async function addUser(user) {
//hash password
let hash = await hashPassword(user.password);
await userModel.create({
const addRes = await userModel.create({
username: user.username,
password: hash,
email: user.email,
address: user.address,
phone: user.phone,
});
if (addRes){
return true;
}
else{
return false;
}
}
//add token to db
async function addToken(userid , token) {
console.log(userid);
console.log(token);
}
async function loginUser(user) {
//look up username or email in db
const userRes = await userModel.findOne({
where: {
[Op.or]: [
{
username: user.userInfo,
},
{
email: user.userInfo,
},
],
},
})
//if user exists
if (userRes){
//compare password
let match = await comparePassword(user.password, userRes.password);
if (match){
console.log(userRes.id);
console.log(userRes.username);
//generate token
let token = await generateUUID();
//add to db
addToken(userRes.id, token);
//sucessful login
/*
1) generate token
2) store in db and localstorage (maybe hash it?)
3) return userid and username and token and store in localstorage
*/
return { token: token, userid: userRes.id, username: userRes.username };
}
else {
return false;
}
}
else{
return false;
}
}
async function getAPIKey() {
const apikey = await apikeyModel.findAll();
return apikey;