Compare commits

..

No commits in common. "a468f037c6869077866a9b79618ea6e06a1ccbb2" and "da3da0c7c645677d134edb22ecc912b7c66021a6" have entirely different histories.

3 changed files with 60 additions and 161 deletions

View File

@ -1,52 +0,0 @@
import jwt from "jsonwebtoken";
import passport from "passport";
import jwtSecret from "../config/jwtConfig";
import { db } from "../db.mjs";
import logger from "../logger.mjs";
module.exports = (app) => {
app.post("/loginUser", (req, res, next) => {
passport.authenticate("login", (err, users, info) => {
if (err) {
logger.error(`error ${err}`);
}
if (info !== undefined) {
logger.error(info.message);
if (info.message === "bad username") {
res.status(401).send(info.message);
} else {
res.status(403).send(info.message);
}
} else {
req.logIn(users, async () => {
let user = await db("users")
.select("*")
.where({ username: req.body.username });
user = user[0];
const token = jwt.sign({ id: user.id }, jwtSecret.secret, {
expiresIn: 60 * 60,
});
res.status(200).send({
auth: true,
token,
message: "user found & logged in",
});
// User.findOne({
// where: {
// username: req.body.username,
// },
// }).then((user) => {
// const token = jwt.sign({ id: user.id }, jwtSecret.secret, {
// expiresIn: 60 * 60,
// });
// res.status(200).send({
// auth: true,
// token,
// message: "user found & logged in",
// });
// });
});
}
})(req, res, next);
});
};

View File

@ -1,8 +1,7 @@
import bcrypt from "bcrypt";
import jwtSecret from "./jwtConfig";
const BCRYPT_SALT_ROUNDS = 12;
import { db } from "../db.mjs";
import logger from "../logger.mjs";
const passport = require("passport");
const LocalStrategy = require("passport-local").Strategy;
@ -19,49 +18,35 @@ passport.use(
passReqToCallback: true,
session: false,
},
async (req, username, password, done) => {
(req, username, password, done) => {
try {
let user = await db("users").where({ username }).select("*");
if (user.length > 0) {
logger.warn("username already taken");
return done(null, false, { message: "username already taken" });
}
user = user[0];
const hashedPwd = await bcrypt.hash(password, BCRYPT_SALT_ROUNDS);
const userCreated = await db("users").insert({
User.findOne({
where: {
[Op.or]: [
{
username,
password: hashedPwd,
},
{ email: req.body.email },
],
},
}).then((user) => {
if (user != null) {
console.log("username or email already taken");
return done(null, false, {
message: "username or email already taken",
});
}
bcrypt.hash(password, BCRYPT_SALT_ROUNDS).then((hashedPassword) => {
User.create({
username,
password: hashedPassword,
email: req.body.email,
}).then((user) => {
console.log("user created");
return done(null, user);
});
});
});
logger.info(`user ${username} created`);
return done(null, userCreated);
// User.findOne({
// where: {
// [Op.or]: [
// {
// username,
// },
// { email: req.body.email },
// ],
// },
// }).then((user) => {
// if (user != null) {
// console.log("username or email already taken");
// return done(null, false, {
// message: "username or email already taken",
// });
// }
// bcrypt.hash(password, BCRYPT_SALT_ROUNDS).then((hashedPassword) => {
// User.create({
// username,
// password: hashedPassword,
// email: req.body.email,
// }).then((user) => {
// console.log("user created");
// return done(null, user);
// });
// });
// });
} catch (err) {
return done(err);
}
@ -77,51 +62,31 @@ passport.use(
passwordField: "password",
session: false,
},
async (username, password, done) => {
(username, password, done) => {
try {
const user = db("users").select("*").where({ username });
if (user.length === 0) {
logger.info(`username ${username} does not exist`);
User.findOne({
where: {
username,
},
}).then((user) => {
if (user === null) {
return done(null, false, { message: "bad username" });
}
user = user[0];
const pwdMatch = await bcrypt.compare(password, user.password);
if (pwdMatch !== true) {
logger.info(`passwords do not match`);
bcrypt.compare(password, user.password).then((response) => {
if (response !== true) {
console.log("passwords do not match");
return done(null, false, { message: "passwords do not match" });
}
logger.info(`password found and authenticated`);
console.log("user found & authenticated");
return done(null, user);
});
});
} catch (err) {
done(err);
}
},
),
);
// User.findOne({
// where: {
// username,
// },
// }).then((user) => {
// if (user === null) {
// return done(null, false, { message: "bad username" });
// }
// bcrypt.compare(password, user.password).then((response) => {
// if (response !== true) {
// console.log("passwords do not match");
// return done(null, false, { message: "passwords do not match" });
// }
// console.log("user found & authenticated");
// return done(null, user);
// });
// });
// } catch (err) {
// done(err);
// }
// },
// ),
// );
const opts = {
jwtFromRequest: ExtractJWT.fromAuthHeaderWithScheme("JWT"),
@ -130,37 +95,23 @@ const opts = {
passport.use(
"jwt",
new JWTstrategy(opts, async (jwt_payload, done) => {
new JWTstrategy(opts, (jwt_payload, done) => {
try {
let user = await db("users").select("*").where({ id: jwt_payload.id });
if (user.length === 1) {
logger.info("user found");
done(null, user[0]);
User.findOne({
where: {
id: jwt_payload.id,
},
}).then((user) => {
if (user) {
console.log("user found in db in passport");
done(null, user);
} else {
logger.info("user not found");
console.log("user not found in db");
done(null, false);
}
});
} catch (err) {
done(err);
}
}),
);
// User.findOne({
// where: {
// id: jwt_payload.id,
// },
// }).then((user) => {
// if (user) {
// console.log("user found in db in passport");
// done(null, user);
// } else {
// console.log("user not found in db");
// done(null, false);
// }
// });
// } catch (err) {
// done(err);
// }
// }),
// );

Binary file not shown.