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;
const currentUser = (req, res, next) => {
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');
......@@ -21,7 +21,7 @@ const ensureSignedOut = (req, res, next) => {
const ensureSignedIn = (req, res, next) => {
if (!req.session.jwt) {
return res.send("You must sign in");
return res.send("You must log in");
}
next();
};
......
......@@ -6,19 +6,20 @@ const { register } = require("../services/register");
const auth = require("../middlewares/auth");
const { createASessionToken } = require('../services/utils');
const { logout } = require('../services/logout');
const userService = require("../services/user");
var router = express.Router();
// router.get('/me', auth.ensureSignedIn, auth.currentUser, async (req, res) => {
// const { currentUser } = req;
// const result = await userService.findById(currentUser?.id);
// res.json(result);
// })
router.get('/me', auth.ensureSignedIn, auth.currentUser, async (req, res) => {
const { currentUser } = req;
const result = await userService.findById(currentUser?._id);
res.json(result);
})
// router.get('/user/:id', auth.ensureSignedIn, auth.currentUser, async (req, res) => {
// const { id } = req.params;
// const result = await userService.findById(id);
// res.json(result);
// })
router.get('/user/:id', auth.ensureSignedIn, auth.currentUser, async (req, res) => {
const { id } = req.params;
const result = await userService.findById(id);
res.json(result);
})
router.post('/logout', auth.ensureSignedIn, async (req, res) => {
const result = logout(req.session);
......@@ -38,4 +39,27 @@ router.post("/register", auth.ensureSignedOut, joiValidation(registerSchema), as
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;
\ No newline at end of file
......@@ -9,8 +9,8 @@ const login = async (email, password) => {
return { success: false, error: 'Email not registered'};
} else {
if (user.matchesPasswords(password)) {
const token = createASessionToken(user?.id, user?.email);
return { success: true, data: user, token};
const token = createASessionToken(user?._id, user?.email);
return { success: true, data: {user, token}};
} else {
return { success: false, error: 'Password do not match'};
}
......
const Users = require("../models/user");
const bcrypt = require('bcryptjs');
const register = async (email, username, firstName, lastName, pass, repeatPassword) =>{
if (pass == repeatPassword) {
try {
var bcrypt = require('bcryptjs');
var salt = bcrypt.genSaltSync(10);
var password = bcrypt.hashSync(pass, salt);
......
const Users = require("../models/user");
const bcrypt = require('bcryptjs');
const findById = async (id) => {
try {
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) {
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 = {
findById
findById,
getUsers,
deleteById,
updatePassword
}
......@@ -2,7 +2,7 @@ const jwt = require("jsonwebtoken");
const createASessionToken = (userId, email) => {
return jwt.sign({
id: userId,
_id: userId,
email,
}, '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