From ebe4c43df04a4147d25a195d90ffa2ebf8365bd4 Mon Sep 17 00:00:00 2001 From: Tepohe Date: Thu, 17 Oct 2024 16:26:53 +0200 Subject: [PATCH] Squashed commit adding pr/64 commit 8b529ef70214c7d3d66054181557f0594577a201 Author: Tepohe Date: Thu Oct 17 16:20:05 2024 +0200 Updated incorrect url-path commit 73999a883f499fe8ccf66bc8293f37a4d8f43fc4 Merge: f0bacbb 1861431 Author: Eric Svebakk Date: Thu Oct 17 16:11:36 2024 +0200 git push origin developmentMerge branch 'Sebbben-featureBetterRegisterFeedback' into development Handled merge-conflict for pr/64 commit 1861431483ec52ea0647b6cb912c27f54a7d767e Merge: f0bacbb cd922ac Author: Tepohe Date: Thu Oct 17 16:08:02 2024 +0200 Handled merge-conflict commit f0bacbbc3673170802017986d8216aba779c2f60 Merge: d26bd3f d198b94 Author: Eric Svebakk <47322476+EricSvebakk@users.noreply.github.com> Date: Thu Oct 17 15:46:05 2024 +0200 Merge pull request #75 from Borgarsy/feature-halloween-theme Temporary Halloween theme commit cd922ac9be0d937de54bcfd3a71cea81cab9c070 Author: Sebbben Date: Fri Oct 11 10:20:45 2024 +0200 made it so that pressing enter on signin and register page submits the forms commit 56dc5709ad033cc676d336540e5655d38e5a0095 Author: Sebbben Date: Fri Oct 11 10:16:44 2024 +0200 removed duplicate login button on successfull registration commit d26bd3fa6f650a486f19b18daffc2c7778b62529 Merge: 0f096c0 c019c46 Author: Eric Svebakk <47322476+EricSvebakk@users.noreply.github.com> Date: Thu Oct 10 16:54:40 2024 +0200 Merge pull request #67 from Sebbben/fixNoResultMembershipSearch Fix no result membership search commit c019c466036d5168b50a953036050c7a0ae62021 Author: Sebbben Date: Sat Oct 5 16:20:01 2024 +0200 Made tables turn to first page when the table content changes with a search commit 0f096c0f9a8d629f66f073f6fd612cd3e1715b44 Merge: a1ce2ec 4dfd6f8 Author: Tepohe Date: Thu Oct 10 14:42:19 2024 +0200 Merge branch 'main' into development commit d198b9492b623e7959c640f04dc8a7199c84da0c Author: Borgar Date: Tue Oct 8 15:01:29 2024 +0200 adds halloween theme. commit a1ce2ec14eb8bafd7a5d9e5a9ce939a97c734f11 Merge: 4f7d813 f06a472 Author: Tepohe Date: Tue Oct 8 13:53:44 2024 +0200 Merge branch 'pr/53' into development commit f06a472fb08cbcc9989a93f1f8ad6497f666eb46 Author: Sebbben Date: Mon Oct 7 16:47:03 2024 +0200 Fixed wrong path for nav bar home from pointing to /home to pointing to / commit a715facad10659dd7d7edc1ec45e6d6260fbd477 Author: Sebbben Date: Tue Oct 1 17:24:53 2024 +0200 added snackbar to singin page commit 6322071f60e41dc381c232f99c301017ba138342 Merge: 131cc76 ea38e61 Author: Sebbben Date: Tue Oct 1 17:08:07 2024 +0200 Merged features from featureBetterRegisterFeedback into changes made by pvk05's fixRegisterUserResponse commit 131cc76ce624229a1a2dc3d8c449367f6832fae2 Merge: 221a968 eb8b2f2 Author: Philip Knudsen <113419351+pvk05@users.noreply.github.com> Date: Tue Oct 1 16:32:52 2024 +0200 Merge branch 'cybernetisk:main' into fixRegisterUserResponse commit 221a968a368d5074d5d28f0610909321fb848da3 Author: pvk05 Date: Sat Sep 28 00:57:24 2024 +0200 moved register response to a snackbar for better visual feedback commit ea38e61f1bad4be9fc25b3f35d34acad48ddfa4e Author: Sebbben Date: Fri Sep 27 23:41:22 2024 +0200 added loading indicator to singin page as well commit 8a3d2de7c6304b6fa23dd3654866e056b0a95fdd Author: pvk05 Date: Fri Sep 27 23:14:48 2024 +0200 checks if email includes "@" before registering user commit 3f547cfd5af113371057a12bf598cde6a62850b7 Author: pvk05 Date: Fri Sep 27 22:44:11 2024 +0200 fixed response from sendMail function to send correct feedback when failing commit 0b33808f1dc512ba7bc27872ba1d69502eab7960 Author: Sebbben Date: Thu Sep 26 17:07:50 2024 +0200 visual queue when registering user commit 0d154f5ef967dd55f6453abf93dead2504e34a47 Author: Sebbben Date: Thu Sep 26 14:40:51 2024 +0200 Renamed some directories to take advantage of nexts routing for more usable url paths Co-Authored-By: Philip Knudsen <113419351+pvk05@users.noreply.github.com> Co-Authored-By: Sebbben <42118203+Sebbben@users.noreply.github.com> --- app/(pages)/auth/register/page.js | 134 ++++++++++++++++------- app/(pages)/auth/signIn/page.js | 51 +++++++-- app/api/sendVerification/route.js | 1 + app/components/feedback/snackbarAlert.js | 37 +++++++ 4 files changed, 178 insertions(+), 45 deletions(-) create mode 100644 app/components/feedback/snackbarAlert.js diff --git a/app/(pages)/auth/register/page.js b/app/(pages)/auth/register/page.js index 03eaded..b081c6f 100644 --- a/app/(pages)/auth/register/page.js +++ b/app/(pages)/auth/register/page.js @@ -4,25 +4,44 @@ import { cybTheme } from "@/app/components/themeCYB"; import prismaRequest from "@/app/middleware/prisma/prismaRequest"; import { Box, Button, Grid, Skeleton, TextField, Typography } from "@mui/material"; +import CircularProgress from '@mui/material/CircularProgress'; import { normalizeEmail } from "@/app/components/Login/authUtil"; import Link from "next/link"; import { useState } from "react"; +import SnackbarAlert from "@/app/components/feedback/snackbarAlert"; export default function registerPage() { const [firstName, setFirstName] = useState(""); const [lastName, setLastName] = useState(""); - const [email, setEmail] = useState("") - const [response, setResponse] = useState("") + const [snackbarOpen, setSnackbarOpen] = useState(false); + const [severity, setSeverity] = useState("") + const [email, setEmail] = useState(""); + const [response, setResponse] = useState(""); + const [loading, setLoading] = useState(false); + const [success, setSuccess] = useState(false); const debug = true; const handleRegister = async () => { + setSnackbarOpen(false) + + if (!email.includes("@")) { + setResponse("Email is invalid") + setSeverity("error") + setSnackbarOpen(true) + return + } + + setLoading(true); const responseCUE = await checkUserExists(email, debug) if (!responseCUE.ok) { setResponse(responseCUE.error); + setSeverity("error") + setSnackbarOpen(true) + setLoading(false); return; } @@ -30,6 +49,9 @@ export default function registerPage() { if (!responseCU.ok) { setResponse(responseCU.error) + setSeverity("error") + setSnackbarOpen(true) + setLoading(false); return; } @@ -41,12 +63,40 @@ export default function registerPage() { if (!responseSVM.ok) { setResponse(responseSVM.error); + setSeverity("error") + setSnackbarOpen(true) + setLoading(false); return; } else { setResponse(`User created. Email sent to ${responseSVM.email}`); + setSeverity("success") + setSuccess(true); + setSnackbarOpen(true) + setLoading(false); + return; } } + + const CheckedTextField = (title, textValue, textCallback) => { + + return ( + + textCallback(event.target.value)} + InputLabelProps={{ shrink: true }} + onKeyUp={(e)=>{if(e.key==="Enter") handleRegister()}} + /> + + ); + + } + return ( handleRegister()} > Register + + {loading && ( + + )} - - - - - - Log in - - - + + {success ? + + + + + + : + + + + Log in + + + + } {response != "" ? ( - response + ) : ( { - - return ( - - textCallback(event.target.value)} - InputLabelProps={{ shrink: true }} - /> - - ); - -} // async function checkUserExists(email, debug) { @@ -202,7 +262,7 @@ async function sendVerificiationMail(newUser, activateToken, debug) { if (debug) console.log("sendVerificiationMail response:", response); if (!response.ok) { - return { ok: false, error: response.error }; + return { ok: false, error: response.statusText }; } const data = await response.json(); diff --git a/app/(pages)/auth/signIn/page.js b/app/(pages)/auth/signIn/page.js index 8d1e5d1..1a8d343 100644 --- a/app/(pages)/auth/signIn/page.js +++ b/app/(pages)/auth/signIn/page.js @@ -2,12 +2,14 @@ "use client" import { Box, Button, Grid, Skeleton, TextField, Typography } from "@mui/material"; +import CircularProgress from '@mui/material/CircularProgress'; import { useState } from "react"; import { cybTheme } from "./../../../components/themeCYB"; import { signIn, useSession } from "next-auth/react"; import Link from "next/link"; import { useRouter } from "next/navigation"; import { normalizeEmail } from "./../../../components/Login/authUtil"; +import SnackbarAlert from "@/app/components/feedback/snackbarAlert"; export default function SignInPage() { @@ -15,6 +17,9 @@ export default function SignInPage() { const [email, setEmail] = useState("") const [response, setResponse] = useState("") const [error, setError] = useState(false) + const [loading, setLoading] = useState(false) + const [snackbarOpen, setSnackbarOpen] = useState(false); + const [severity, setSeverity] = useState("") const session = useSession() const router = useRouter() @@ -25,10 +30,14 @@ export default function SignInPage() { } const handleLogin = async () => { + setLoading(true); if (email == "") { setError(true) + setSeverity("error") setResponse("Please fill in your email") + setLoading(false); + setSnackbarOpen(true); return } @@ -41,11 +50,16 @@ export default function SignInPage() { if (response.error == null) { setError(false) + setSeverity("success") setResponse(`Email sent to ${normalizedEmail}`); - } - else { + setLoading(false); + setSnackbarOpen(true); + } else { setError(true); + setSeverity("error") setResponse(response.error); + setLoading(false); + setSnackbarOpen(true); } } @@ -72,12 +86,29 @@ export default function SignInPage() { error={error} onChange={(event) => setEmail(event.target.value)} InputLabelProps={{ shrink: true }} + onKeyUp={(e) => {if(e.key==="Enter") handleLogin()}} /> - @@ -99,12 +130,16 @@ export default function SignInPage() { Register new user - - - - + + + {response != "" ? ( - response + ) : ( { + if (reason === 'clickaway') { + return; + } + + setOpen(false); + }; + + return ( +
+ + + {response} + + +
+ ); +} \ No newline at end of file