FrontEnd Bug Fix

This commit is contained in:
brausjonas
2023-05-24 16:05:21 +02:00
parent 337aea6a65
commit f42f2df078
7 changed files with 1314 additions and 5 deletions
+7 -1
View File
@@ -43,8 +43,14 @@ export default function InputForm(p) {
let url = "http://localhost:8080/users/all?sessionid=" + sessionid; let url = "http://localhost:8080/users/all?sessionid=" + sessionid;
try {
await fetch(url).then(response => response.json()).then(user => setUsers(user)); await fetch(url).then(response => response.json()).then(user => setUsers(user));
} }
catch(e)
{
router.push("/")
}
}
useEffect(() => { useEffect(() => {
@@ -213,7 +219,7 @@ export default function InputForm(p) {
}}><input type="checkbox" onChange={(e) => { }}><input type="checkbox" onChange={(e) => {
onCheckBoxClicked(user, e); onCheckBoxClicked(user, e);
}}/></div></td> }}/></div></td>
<td style={{}}>{user.firstName + " " + user.lastName}</td> <td style={{textAlign: "center"}}>{user.firstName + " " + user.lastName}</td>
<select id={"userSelect"} name={"userSelect"} className={"box-shadow selector"} <select id={"userSelect"} name={"userSelect"} className={"box-shadow selector"}
multiple={false} style={{ multiple={false} style={{
maxHeight: 80, maxHeight: 80,
+24
View File
@@ -0,0 +1,24 @@
import Button from "@/components/Button";
import {useRouter} from "next/router";
export default function Logout()
{
const router = useRouter()
async function logout()
{
let url = "http://localhost:8080/users/logout?sessionid=" + localStorage.getItem("sessionid");
await fetch(url)
await router.push("/")
}
return (
<div style={{
position: "absolute",
left: 20,
top: 20
}}>
<Button onClick={() => logout()} text={"Logout"} color={"#77932b"} width={100} height={40}/>
</div>
)
}
+14
View File
@@ -1,13 +1,27 @@
import InputForm from "@/components/InputForm"; import InputForm from "@/components/InputForm";
import {useRouter} from "next/router"; import {useRouter} from "next/router";
import Logout from "@/components/Logout";
import {useEffect} from "react";
export default function CreateSemester() export default function CreateSemester()
{ {
const router = useRouter(); const router = useRouter();
let {courseName, startDate, endDate} = router.query; let {courseName, startDate, endDate} = router.query;
useEffect(() => {
let checkURL = "http://localhost:8080/users/check?sessionid=" + localStorage.getItem("sessionid");
try {
fetch(checkURL).then(r => console.log(r))
}
catch(e)
{
router.push("/")
}
}, []);
return ( return (
<div className={"normal-centered"}> <div className={"normal-centered"}>
<Logout/>
<InputForm startDate={startDate} endDate={endDate} courseName={courseName}/> <InputForm startDate={startDate} endDate={endDate} courseName={courseName}/>
</div> </div>
) )
+16
View File
@@ -5,6 +5,7 @@ import InputForm from "@/components/InputForm";
import {useRouter} from "next/router"; import {useRouter} from "next/router";
import PopUp from "@/components/PopUp"; import PopUp from "@/components/PopUp";
import Background from "@/components/Background"; import Background from "@/components/Background";
import Logout from "@/components/Logout";
export default function SemesterOverview(p) export default function SemesterOverview(p)
{ {
@@ -12,9 +13,14 @@ export default function SemesterOverview(p)
{ {
let urlTest = "http://localhost:8080/semester/all?sessionid=" + localStorage.getItem("sessionid"); let urlTest = "http://localhost:8080/semester/all?sessionid=" + localStorage.getItem("sessionid");
try {
await fetch(urlTest).then(response => response.json()).then(s => { await fetch(urlTest).then(response => response.json()).then(s => {
setEntries(s) setEntries(s)
}) })
} catch(e)
{
router.push("/")
}
} }
function onClickSemester(e, m) function onClickSemester(e, m)
@@ -83,8 +89,17 @@ export default function SemesterOverview(p)
useEffect(() => { useEffect(() => {
getSemesters(); getSemesters();
let checkURL = "http://localhost:8080/users/check?sessionid=" + localStorage.getItem("sessionid");
try {
fetch(checkURL).then(r => console.log(r))
}
catch(e)
{
router.push("/")
}
}, []) }, [])
const [entries, setEntries] = useState([]) const [entries, setEntries] = useState([])
const [modalDisplay, setModalDisplay] = useState("none"); const [modalDisplay, setModalDisplay] = useState("none");
const [modalHint, setModalHint] = useState(""); const [modalHint, setModalHint] = useState("");
@@ -92,6 +107,7 @@ export default function SemesterOverview(p)
return ( return (
<div className={"semester-overview"}> <div className={"semester-overview"}>
<Logout/>
<Background/> <Background/>
{ {
entries.map(e => (<SemesterTile text={e.name} onClick={(f) => onClickSemester(e, f)} onButtonDeleteClick={() => { entries.map(e => (<SemesterTile text={e.name} onClick={(f) => onClickSemester(e, f)} onButtonDeleteClick={() => {
Binary file not shown.
File diff suppressed because it is too large Load Diff
@@ -140,6 +140,20 @@ public class UserController {
return new ResponseEntity<>(HttpStatus.FORBIDDEN); return new ResponseEntity<>(HttpStatus.FORBIDDEN);
} }
@CrossOrigin
@GetMapping("/users/check")
public ResponseEntity<User> checkLogin(@RequestParam(name="sessionid") String sessionid)
{
User u = UserSessionIDHandler.getUserBySessionID(sessionid);
if(u != null)
{
return new ResponseEntity<>(db.getUser(u.getId()), HttpStatus.OK);
}
return new ResponseEntity<>(HttpStatus.NOT_FOUND);
}
@CrossOrigin @CrossOrigin
@DeleteMapping("/users") @DeleteMapping("/users")
public ResponseEntity<Boolean> deleteUser(@RequestParam(name = "sessionid") String sessionID, @RequestParam(name = "mail") String mail) { public ResponseEntity<Boolean> deleteUser(@RequestParam(name = "sessionid") String sessionID, @RequestParam(name = "mail") String mail) {