Mise à jour de routes et models
This commit is contained in:
+54
-48
@@ -3,72 +3,78 @@ const asyncHandler = require("../middlewares/asyncHandler");
|
||||
const ErrorResponse = require("../util/errorResponse");
|
||||
|
||||
module.exports.getProfile = asyncHandler(async (req, res, next) => {
|
||||
const username = req.params.username;
|
||||
const { loggedUser } = req;
|
||||
const user = await User.findOne({ where: { username: username } });
|
||||
const username = req.params.username;
|
||||
const { loggedUser } = req;
|
||||
const user = await User.findOne({ where: { username: username } });
|
||||
|
||||
if (!user) {
|
||||
return next(new ErrorResponse(`User not found`, 404));
|
||||
}
|
||||
if (!user) {
|
||||
return next(new ErrorResponse(`User not found`, 404));
|
||||
}
|
||||
|
||||
let isFollowing = false;
|
||||
let isFollowing = false;
|
||||
|
||||
if (loggedUser) {
|
||||
const followers = await user.getFollowers();
|
||||
isFollowing = followers.some((user) => user.id === loggedUser.id);
|
||||
}
|
||||
if (loggedUser) {
|
||||
const followers = await user.getFollowers();
|
||||
isFollowing = followers.some((user) => user.id === loggedUser.id);
|
||||
}
|
||||
|
||||
const profile = {
|
||||
username,
|
||||
bio: user.bio,
|
||||
image: user.image,
|
||||
following: isFollowing,
|
||||
};
|
||||
res.status(200).json({ profile });
|
||||
const profile = {
|
||||
username,
|
||||
firstname: user.firstname,
|
||||
lastname: user.lastname,
|
||||
bio: user.bio,
|
||||
image: user.image,
|
||||
following: isFollowing,
|
||||
};
|
||||
res.status(200).json({ profile });
|
||||
});
|
||||
|
||||
module.exports.followUser = asyncHandler(async (req, res, next) => {
|
||||
const username = req.params.username;
|
||||
const { loggedUser } = req;
|
||||
const userToFollow = await User.findOne({ where: { username: username } });
|
||||
const username = req.params.username;
|
||||
const { loggedUser } = req;
|
||||
const userToFollow = await User.findOne({ where: { username: username } });
|
||||
|
||||
if (!userToFollow) {
|
||||
return next(new ErrorResponse(`User not found`, 404));
|
||||
}
|
||||
if (!userToFollow) {
|
||||
return next(new ErrorResponse(`User not found`, 404));
|
||||
}
|
||||
|
||||
const currentUser = await User.findByPk(loggedUser.id);
|
||||
const currentUser = await User.findByPk(loggedUser.id);
|
||||
|
||||
await userToFollow.addFollower(currentUser);
|
||||
await userToFollow.addFollower(currentUser);
|
||||
|
||||
const profile = {
|
||||
username: username,
|
||||
bio: userToFollow.dataValues.bio,
|
||||
image: userToFollow.dataValues.image,
|
||||
following: true,
|
||||
};
|
||||
const profile = {
|
||||
username: username,
|
||||
firstname: userToFollow.dataValues.firstname,
|
||||
lastname: userToFollow.dataValues.lastname,
|
||||
bio: userToFollow.dataValues.bio,
|
||||
image: userToFollow.dataValues.image,
|
||||
following: true,
|
||||
};
|
||||
|
||||
res.status(200).json({ profile });
|
||||
res.status(200).json({ profile });
|
||||
});
|
||||
|
||||
module.exports.unfollowUser = asyncHandler(async (req, res, next) => {
|
||||
const username = req.params.username;
|
||||
const { loggedUser } = req;
|
||||
const userToUnfollow = await User.findOne({ where: { username: username } });
|
||||
const username = req.params.username;
|
||||
const { loggedUser } = req;
|
||||
const userToUnfollow = await User.findOne({ where: { username: username } });
|
||||
|
||||
if (!userToUnfollow) {
|
||||
return next(new ErrorResponse(`User not found`, 404));
|
||||
}
|
||||
if (!userToUnfollow) {
|
||||
return next(new ErrorResponse(`User not found`, 404));
|
||||
}
|
||||
|
||||
const currentUser = await User.findByPk(loggedUser.id);
|
||||
const currentUser = await User.findByPk(loggedUser.id);
|
||||
|
||||
await userToUnfollow.removeFollower(currentUser);
|
||||
await userToUnfollow.removeFollower(currentUser);
|
||||
|
||||
const profile = {
|
||||
username: username,
|
||||
bio: userToUnfollow.dataValues.bio,
|
||||
image: userToUnfollow.dataValues.image,
|
||||
following: false,
|
||||
};
|
||||
const profile = {
|
||||
username: username,
|
||||
firstname: userToUnfollow.dataValues.firstname,
|
||||
lastname: userToUnfollow.dataValues.lastname,
|
||||
bio: userToUnfollow.dataValues.bio,
|
||||
image: userToUnfollow.dataValues.image,
|
||||
following: false,
|
||||
};
|
||||
|
||||
res.status(200).json({ profile });
|
||||
res.status(200).json({ profile });
|
||||
});
|
||||
|
||||
+58
-54
@@ -4,90 +4,94 @@ const ErrorResponse = require("../util/errorResponse");
|
||||
const { sign } = require("../util/jwt");
|
||||
|
||||
module.exports.createUser = asyncHandler(async (req, res, next) => {
|
||||
const { email, password, username } = req.body.user;
|
||||
const { email, password, username, firstname, lastname } = req.body.user;
|
||||
|
||||
fieldValidation(email, next);
|
||||
fieldValidation(password, next);
|
||||
fieldValidation(username, next);
|
||||
fieldValidation(email, next);
|
||||
fieldValidation(password, next);
|
||||
fieldValidation(username, next);
|
||||
fieldValidation(firstname, next);
|
||||
fieldValidation(lastname, next);
|
||||
|
||||
const user = await User.create({
|
||||
email: email,
|
||||
password: password,
|
||||
username: username,
|
||||
});
|
||||
const user = await User.create({
|
||||
email: email,
|
||||
password: password,
|
||||
username: username,
|
||||
firstname: firstname,
|
||||
lastname: lastname,
|
||||
});
|
||||
|
||||
if (user.dataValues.password) {
|
||||
delete user.dataValues.password;
|
||||
}
|
||||
if (user.dataValues.password) {
|
||||
delete user.dataValues.password;
|
||||
}
|
||||
|
||||
user.dataValues.token = await sign(user);
|
||||
user.dataValues.token = await sign(user);
|
||||
|
||||
user.dataValues.bio = null;
|
||||
user.dataValues.image = null;
|
||||
user.dataValues.bio = null;
|
||||
user.dataValues.image = null;
|
||||
|
||||
res.status(201).json({ user });
|
||||
res.status(201).json({ user });
|
||||
});
|
||||
|
||||
module.exports.loginUser = asyncHandler(async (req, res, next) => {
|
||||
const { email, password } = req.body.user;
|
||||
const { email, password } = req.body.user;
|
||||
|
||||
fieldValidation(email, next);
|
||||
fieldValidation(password, next);
|
||||
fieldValidation(email, next);
|
||||
fieldValidation(password, next);
|
||||
|
||||
const user = await User.findOne({
|
||||
where: {
|
||||
email: email,
|
||||
},
|
||||
});
|
||||
const user = await User.findOne({
|
||||
where: {
|
||||
email: email,
|
||||
},
|
||||
});
|
||||
|
||||
if (!user) {
|
||||
return next(new ErrorResponse(`User not found`, 404));
|
||||
}
|
||||
if (!user) {
|
||||
return next(new ErrorResponse(`User not found`, 404));
|
||||
}
|
||||
|
||||
const isMatch = user.matchPassword(password);
|
||||
const isMatch = user.matchPassword(password);
|
||||
|
||||
if (!isMatch) {
|
||||
return next(new ErrorResponse("Wrong password", 401));
|
||||
}
|
||||
if (!isMatch) {
|
||||
return next(new ErrorResponse("Wrong password", 401));
|
||||
}
|
||||
|
||||
delete user.dataValues.password;
|
||||
delete user.dataValues.password;
|
||||
|
||||
user.dataValues.token = await sign(user);
|
||||
user.dataValues.token = await sign(user);
|
||||
|
||||
user.dataValues.bio = null;
|
||||
user.dataValues.image = null;
|
||||
user.dataValues.bio = null;
|
||||
user.dataValues.image = null;
|
||||
|
||||
res.status(200).json({ user });
|
||||
res.status(200).json({ user });
|
||||
});
|
||||
|
||||
module.exports.getCurrentUser = asyncHandler(async (req, res, next) => {
|
||||
const { loggedUser } = req;
|
||||
const user = await User.findByPk(loggedUser.id);
|
||||
const { loggedUser } = req;
|
||||
const user = await User.findByPk(loggedUser.id);
|
||||
|
||||
if (!user) {
|
||||
return next(new ErrorResponse(`User not found`, 404));
|
||||
}
|
||||
if (!user) {
|
||||
return next(new ErrorResponse(`User not found`, 404));
|
||||
}
|
||||
|
||||
user.dataValues.token = req.headers.authorization.split(" ")[1];
|
||||
user.dataValues.token = req.headers.authorization.split(" ")[1];
|
||||
|
||||
res.status(200).json({ user });
|
||||
res.status(200).json({ user });
|
||||
});
|
||||
|
||||
module.exports.updateUser = asyncHandler(async (req, res, next) => {
|
||||
await User.update(req.body.user, {
|
||||
where: {
|
||||
id: req.user.id,
|
||||
},
|
||||
});
|
||||
await User.update(req.body.user, {
|
||||
where: {
|
||||
id: req.user.id,
|
||||
},
|
||||
});
|
||||
|
||||
const user = await User.findByPk(req.user.id);
|
||||
user.dataValues.token = req.headers.authorization.split(" ")[1];
|
||||
const user = await User.findByPk(req.user.id);
|
||||
user.dataValues.token = req.headers.authorization.split(" ")[1];
|
||||
|
||||
res.status(200).json({ user });
|
||||
res.status(200).json({ user });
|
||||
});
|
||||
|
||||
const fieldValidation = (field, next) => {
|
||||
if (!field) {
|
||||
return next(new ErrorResponse(`Missing fields`, 400));
|
||||
}
|
||||
if (!field) {
|
||||
return next(new ErrorResponse(`Missing fields`, 400));
|
||||
}
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user