Skip to content
Snippets Groups Projects
Commit dd31abca authored by Arthur.Pautrel's avatar Arthur.Pautrel
Browse files

Almost finished TP10

parent b9fcf9e9
No related branches found
No related tags found
No related merge requests found
...@@ -4,7 +4,7 @@ const config = process.env; ...@@ -4,7 +4,7 @@ const config = process.env;
const currentUser = (req, res, next) => { const currentUser = (req, res, next) => {
if (!req.session.jwt) { if (!req.session.jwt) {
return res.send("You must sign in"); return res.send("You must log in");
} }
const user = jwt.verify(req.session.jwt, 'jwt-secret'); const user = jwt.verify(req.session.jwt, 'jwt-secret');
...@@ -21,7 +21,7 @@ const ensureSignedOut = (req, res, next) => { ...@@ -21,7 +21,7 @@ const ensureSignedOut = (req, res, next) => {
const ensureSignedIn = (req, res, next) => { const ensureSignedIn = (req, res, next) => {
if (!req.session.jwt) { if (!req.session.jwt) {
return res.send("You must sign in"); return res.send("You must log in");
} }
next(); next();
}; };
......
...@@ -6,19 +6,20 @@ const { register } = require("../services/register"); ...@@ -6,19 +6,20 @@ const { register } = require("../services/register");
const auth = require("../middlewares/auth"); const auth = require("../middlewares/auth");
const { createASessionToken } = require('../services/utils'); const { createASessionToken } = require('../services/utils');
const { logout } = require('../services/logout'); const { logout } = require('../services/logout');
const userService = require("../services/user");
var router = express.Router(); var router = express.Router();
// router.get('/me', auth.ensureSignedIn, auth.currentUser, async (req, res) => { router.get('/me', auth.ensureSignedIn, auth.currentUser, async (req, res) => {
// const { currentUser } = req; const { currentUser } = req;
// const result = await userService.findById(currentUser?.id); const result = await userService.findById(currentUser?._id);
// res.json(result); res.json(result);
// }) })
// router.get('/user/:id', auth.ensureSignedIn, auth.currentUser, async (req, res) => { router.get('/user/:id', auth.ensureSignedIn, auth.currentUser, async (req, res) => {
// const { id } = req.params; const { id } = req.params;
// const result = await userService.findById(id); const result = await userService.findById(id);
// res.json(result); res.json(result);
// }) })
router.post('/logout', auth.ensureSignedIn, async (req, res) => { router.post('/logout', auth.ensureSignedIn, async (req, res) => {
const result = logout(req.session); const result = logout(req.session);
...@@ -38,4 +39,27 @@ router.post("/register", auth.ensureSignedOut, joiValidation(registerSchema), as ...@@ -38,4 +39,27 @@ router.post("/register", auth.ensureSignedOut, joiValidation(registerSchema), as
res.json(result); res.json(result);
}) })
router.get('/users', auth.ensureSignedIn, async (req, res) => {
const users = await userService.getUsers();
res.json(users);
})
router.post('/update-password', auth.ensureSignedIn, auth.currentUser, async (req, res, next) => {
const {newPassword} = req.body;
const {id} = req.params;
const updatedPass = await userService.updatePassword(id, newPassword);
res.json(updatedPass);
})
router.post('/update-user', auth.ensureSignedIn, async (req, res, next) => {
const {newUsername} = req.body;
})
router.post('/delete-user', auth.ensureSignedIn, async (req, res, next) => {
const { id } = req.params;
const deletedUser = await userService.deleteById();
logout(req.session);
res.json(deletedUser);
})
module.exports = router; module.exports = router;
\ No newline at end of file
...@@ -9,8 +9,8 @@ const login = async (email, password) => { ...@@ -9,8 +9,8 @@ const login = async (email, password) => {
return { success: false, error: 'Email not registered'}; return { success: false, error: 'Email not registered'};
} else { } else {
if (user.matchesPasswords(password)) { if (user.matchesPasswords(password)) {
const token = createASessionToken(user?.id, user?.email); const token = createASessionToken(user?._id, user?.email);
return { success: true, data: user, token}; return { success: true, data: {user, token}};
} else { } else {
return { success: false, error: 'Password do not match'}; return { success: false, error: 'Password do not match'};
} }
......
const Users = require("../models/user"); const Users = require("../models/user");
const bcrypt = require('bcryptjs');
const register = async (email, username, firstName, lastName, pass, repeatPassword) =>{ const register = async (email, username, firstName, lastName, pass, repeatPassword) =>{
if (pass == repeatPassword) { if (pass == repeatPassword) {
try { try {
var bcrypt = require('bcryptjs');
var salt = bcrypt.genSaltSync(10); var salt = bcrypt.genSaltSync(10);
var password = bcrypt.hashSync(pass, salt); var password = bcrypt.hashSync(pass, salt);
......
const Users = require("../models/user"); const Users = require("../models/user");
const bcrypt = require('bcryptjs');
const findById = async (id) => { const findById = async (id) => {
try { try {
const user = await Users.findById(id); const user = await Users.findById(id);
return {success: true, data: user}; if (user) {
return {success: true, data: user};
} else {
return {sucess: false, error: "User's id does not exist"};
}
} catch (err) { } catch (err) {
return {sucess: false, error: err || 'err'}; return {sucess: false, error: err};
}
}
const deleteById = async (id) => {
try {
const retDelete = await Users.deleteOne(id);
if (retDelete) {
return {success: true, data: retDelete};
} else {
return {sucess: false, error: "User's id does not exist"};
}
} catch (err) {
return {sucess: false, error: err};
}
}
const updatePassword = async (id, newPassword) => {
try {
var salt = bcrypt.genSaltSync(10);
var hashedPass = bcrypt.hashSync(newPassword, salt);
const updatePass = await Users.updateOne({"_id": id}, {"password": hashedPass});
if (updatePass) {
return {success: true, data: updatePass};
} else {
return {sucess: false, error: "Failed to change password"};
}
} catch (err) {
return {sucess: false, error: err};
}
}
const getUsers = async () => {
try {
const users = await Users.find();
if (users) {
return {success: true, data: users};
} else {
return {sucess: false, error: "User's id does not exist"};
}
} catch (err) {
return {sucess: false, error: err};
} }
} }
module.exports = { module.exports = {
findById findById,
getUsers,
deleteById,
updatePassword
} }
...@@ -2,7 +2,7 @@ const jwt = require("jsonwebtoken"); ...@@ -2,7 +2,7 @@ const jwt = require("jsonwebtoken");
const createASessionToken = (userId, email) => { const createASessionToken = (userId, email) => {
return jwt.sign({ return jwt.sign({
id: userId, _id: userId,
email, email,
}, 'jwt-secret'); }, 'jwt-secret');
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment