diff --git a/client/src/pages/Profile.tsx b/client/src/pages/Profile.tsx index b6b6680..f7b620e 100644 --- a/client/src/pages/Profile.tsx +++ b/client/src/pages/Profile.tsx @@ -1,19 +1,21 @@ import React, { useState, useEffect } from 'react'; +import { useParams } from 'react-router-dom'; import { Container, Row, Button, Col, Card } from 'react-bootstrap'; import SolutionCard from '../components/SolutionCard'; import { User } from '../../../server/models/User'; import "./Profile.css"; const Profile = () => { + const { utorid } = useParams(); const [user, setUser] = useState(null); const [solutions, setSolutions] = useState([]); const [comments, setComments] = useState([]); useEffect(() => { - fetch('/api/users/1') + fetch(`/api/users/${utorid}`) .then(response => { if (!response.ok) { - throw new Error('Failed to fetch user data'); + throw new Error('Failed to fetch user data:('); } return response.json(); }) diff --git a/server/controllers/UserController.js b/server/controllers/UserController.js index 36bd83e..2694058 100644 --- a/server/controllers/UserController.js +++ b/server/controllers/UserController.js @@ -4,14 +4,18 @@ const User = db.User; exports.get = async (req, res) => { //const users = await User.findAll(); - const sampleUser = { - username: 'Alexander Apostolu', - preferredName: 'Alex', - email: 'apostolu240@gmail.com', - score: 100 - }; + const { username: reqUsername } = req.params; - res.status(200).json(sampleUser); + if (!reqUsername) { + return res.status(404).json({ message: "Requested username not found" }); + } + + let user = await User.findOne({ where: { username: reqUsername } }); + if (!user) { + return res.status(500).json({ message: "User not found" }); + } + + res.status(200).json(user); } exports.getSolutions = async (req, res) => { diff --git a/server/routes/UserRoutes.js b/server/routes/UserRoutes.js index 536820b..753cbec 100644 --- a/server/routes/UserRoutes.js +++ b/server/routes/UserRoutes.js @@ -7,7 +7,7 @@ const { AsyncWrapController(User); // Get a user from the database. -router.get("/:id", User.get); +router.get("/:username", User.get); // Create a new user in the database. router.post("/:id", User.create);