diff --git a/packages/express-backend/backend.js b/packages/express-backend/backend.js index ad796d8..8109f3f 100644 --- a/packages/express-backend/backend.js +++ b/packages/express-backend/backend.js @@ -85,6 +85,23 @@ app.post("/users", (req, res) => { userService.signupUser(req, res); }); +app.post("/users/profile", userService.authenticateUser, (req, res) => { + const { bio, skills } = req.body; // from form + const id = req.userID; + userService.editProfile(id, bio, skills) + .then((result) => { + if (result) { + res.send(result); + } else { + res.status(404).send(`Not found: ${id}`); + } + }) + .catch((error) => { + console.log(error); + res.status(500).send(error); + }); +}); + app.get("/users", userService.authenticateUser, (req, res) => { const id = req.userID; userService @@ -121,6 +138,18 @@ app.post("/login", (req, res) => { userService.loginUser(req, res); }); +app.delete("/users", userService.authenticateUser, (req, res) => { + const id = req.userID; + userService + .removeUser(id) + .then((result) => { + res.status(204).send(result); + }) + .catch((error) => { + res.status(500).send(error.name); + }); +}); + app.delete("/products/:id", userService.authenticateUser, (req, res) => { const id = req.params["id"]; const userID = req.userID; diff --git a/packages/express-backend/services/user-service.js b/packages/express-backend/services/user-service.js index 2b11ea1..3567a94 100644 --- a/packages/express-backend/services/user-service.js +++ b/packages/express-backend/services/user-service.js @@ -140,6 +140,17 @@ function authenticateUser(req, res, next) { } } +function editProfile(id, bio, skills) { + return UserModel.findByIdAndUpdate( + id, + { + bio: bio, + skills: skills + }, + {new: true} + ); +} + function changeUserProfilePicture(id, profilePictureId) { return UserModel.findByIdAndUpdate( id, @@ -222,6 +233,7 @@ export default { findProfilePictureById, uploadProfilePicture, changeUserProfilePicture, + editProfile, addProductToUser, removeProductFromUserID, addOrderToUser, diff --git a/packages/express-backend/uploads/0e6b09186b6b2f21f3a7bcca8b2b6a06 b/packages/express-backend/uploads/0e6b09186b6b2f21f3a7bcca8b2b6a06 new file mode 100644 index 0000000..98db02a Binary files /dev/null and b/packages/express-backend/uploads/0e6b09186b6b2f21f3a7bcca8b2b6a06 differ diff --git a/packages/express-backend/uploads/4703ddaf5881626de685be09d0fef078 b/packages/express-backend/uploads/4703ddaf5881626de685be09d0fef078 new file mode 100644 index 0000000..4add2aa Binary files /dev/null and b/packages/express-backend/uploads/4703ddaf5881626de685be09d0fef078 differ diff --git a/packages/express-backend/uploads/4994a81780587afb1eef581aa69ad92f b/packages/express-backend/uploads/4994a81780587afb1eef581aa69ad92f new file mode 100644 index 0000000..98db02a Binary files /dev/null and b/packages/express-backend/uploads/4994a81780587afb1eef581aa69ad92f differ diff --git a/packages/express-backend/uploads/5ec35440d8d95d7fe39976c47f3358ee b/packages/express-backend/uploads/5ec35440d8d95d7fe39976c47f3358ee new file mode 100644 index 0000000..4add2aa Binary files /dev/null and b/packages/express-backend/uploads/5ec35440d8d95d7fe39976c47f3358ee differ diff --git a/packages/express-backend/uploads/7c86f5a0cb4762a9b1ce5fee5bb64d37 b/packages/express-backend/uploads/7c86f5a0cb4762a9b1ce5fee5bb64d37 new file mode 100644 index 0000000..4825ce9 Binary files /dev/null and b/packages/express-backend/uploads/7c86f5a0cb4762a9b1ce5fee5bb64d37 differ diff --git a/packages/react-frontend/src/Components/Auth.jsx b/packages/react-frontend/src/Components/Auth.jsx index 8b35090..c73ce1a 100644 --- a/packages/react-frontend/src/Components/Auth.jsx +++ b/packages/react-frontend/src/Components/Auth.jsx @@ -30,7 +30,7 @@ function Auth(props) { /> } /> } /> } /> + } /> } /> } /> diff --git a/packages/react-frontend/src/Components/ProfileEdit.jsx b/packages/react-frontend/src/Components/ProfileEdit.jsx new file mode 100644 index 0000000..70b9830 --- /dev/null +++ b/packages/react-frontend/src/Components/ProfileEdit.jsx @@ -0,0 +1,44 @@ +import React, { useState } from "react"; + +function ProfileEdit(props) { + const [userProfile, setLogin] = useState({ + bio: "", + skills: "" + }); + + function handleChange(event) { + const { name, value } = event.target; + if (name === "skills") { + setLogin({ bio: userProfile["bio"], skills: value }); + } else setLogin({ bio: value, skills: userProfile["skills"] }); + } + + function submitForm() { + props.handleSubmit(userProfile); + setLogin({ bio: "", skills: "" }); + } + + return ( +
+ +