diff --git a/userman_all/client/index.html b/userman_all/client/index.html index 2550d007151f680d878a749f7ae397208391d1a9..2d45cefb2593bcb684d55b05c7d65de197732dc8 100644 --- a/userman_all/client/index.html +++ b/userman_all/client/index.html @@ -66,31 +66,6 @@ </div> <div id="startseite" class="page active"> - - - <div class="modal fade" id="edit-user-modal"> - <div class="modal-dialog"> - <div class="modal-content"> - <form id="edit-user-form"> - <div class="modal-header"> - <h5 class="modal-title">Edit User</h5> - <button type="button" class="btn-close" data-bs-dismiss="modal"></button> - </div> - <div class="modal-body"> - <input type="hidden" id="edit-user-id-"> - <label for="edit-user-first-namee">Vorname</label> - <input type="text" class="form-control mb-3" id="edit-user-first-namee"> - <label for="edit-user-last-namee">Name</label> - <input type="text" class="form-control" id="edit-user-last-namee"> - </div> - <div class="modal-footer"> - <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Schließen</button> - <button type="submit" class="btn btn-primary">Sichern</button> - </div> - </form> - </div> - </div> - </div> <!--Startseite hero-bereich--> <div class="hero"> <img src="assets/heroimage.jpg" height="570" width="1668" alt="Hero-Bild" class="hero-image"/> @@ -543,55 +518,48 @@ </tbody> </table> + <!-- Modal User von Admin aus bearbeiten --> - <div class="modal fade" id="updateAdminModal" tabindex="-1" aria-labelledby="updateModalLabel" aria-hidden="true"> + <div class="modal fade" id="updateAdminModal"> <div class="modal-dialog"> <div class="modal-content"> - <div class="modal-header"> - <h1 class="modal-title fs-5" id="updateModalLabel">Daten von Nutzer bearbeiten</h1> - <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button> - </div> - <div class="modal-card"> - <div class="modal-body-update"> - <form id="edit-user-admin-form"> - <input type="hidden" id="edit-user-id"> + <form id="edit-user-admin-form"> + <div class="modal-header"> + <h1 class="modal-title fs-5" id="updateModalLabel">Daten von Nutzer bearbeiten</h1> + <button type="button" class="btn-close" data-bs-dismiss="modal"></button> + </div> + <div class="modal-body card"> + <input type="hidden" id="edit-user-admin-id"> <div id="label1edituser" class="form-text-profile"> Vorname - <label for="edit-user-first-name" class="d-none">Vorname</label> + <label for="edit-user-admin-first-name" class="d-none">Vorname</label> <input type="text" class="form-control-bearbeiten" id="edit-user-admin-first-name"> </div> - <div id="label2edituser" class="form-text-profile"> Nachname - <label for="edit-user-last-name" class="d-none">Name</label> + <label for="edit-user-admin-last-name" class="d-none">Name</label> <input type="text" class="form-control-bearbeiten" id="edit-user-admin-last-name"> </div> - - <div id="label3edituser" class="form-text-profile"> E-Mail - <label for="edit-user-email" class="d-none">E-Mail</label> + <label for="edit-user-admin-email" class="d-none">E-Mail</label> <input type="text" class="form-control-bearbeiten" id="edit-user-admin-email"> </div> - <div id="label4edituser" class="form-text-profile" > Adresse <label for="edit-user-admin-adress" class="d-none">Adresse</label> <input type="text" class="form-control-bearbeiten" id="edit-user-admin-adress"> </div> - <div id="label5edituser" class="form-text-profile" > Rolle <label for="edit-user-admin-role" class="d-none">Rolle</label> <input type="text" class="form-control-bearbeiten" id="edit-user-admin-role"> </div> - - </form> - </div> - </div> - <div class="modal-footer"> - <button type="submit" id="updateButtonEdit" class="btn btn-primary">Aktualisieren</button> - </div> + <div class="modal-footer"> + <button type="submit" id="updateButtonEdit" class="editButton">Aktualisieren</button> + </div> + </div> + </form> </div> </div> </div> diff --git a/userman_all/client/src/client.ts b/userman_all/client/src/client.ts index 03243e7784befd8d77693a71de006188b506c26a..018a6e8acfb36b8c27f7061c6459a6a08bc67e3c 100644 --- a/userman_all/client/src/client.ts +++ b/userman_all/client/src/client.ts @@ -38,13 +38,13 @@ interface User { // Ein Modal-Objekt von Bootstrap wird hier deklariert, aber initialisiert erst später im DOMContentLoaded Event. let modalEl: bootstrap.Modal let modalTest: bootstrap.Modal -let modalAdminEdit: bootstrap.Modal + document.addEventListener("DOMContentLoaded", (): void => { - showPage('startseite'); // Standardmäßig die Seite "Reisen" anzeigen - modalEl = new bootstrap.Modal("#edit-user-modal"); + showPage('startseite'); + modalEl = new bootstrap.Modal("#updateAdminModal"); modalTest = new bootstrap.Modal("#deleteModal"); - modalAdminEdit = new bootstrap.Modal("#updateAdminModal"); + //--- check, if user is already logged in (e.g. after refresh) ------------------------------------------------------- checkLogin(); @@ -154,7 +154,6 @@ document.addEventListener("DOMContentLoaded", (): void => { if (res.ok) { addMessage(data.message || "Profil wurde erfolgreich aktualisiert."); userDataInProfile(data.user); - modalAdminEdit.hide; showPage('profil')// Modal schließen } else { addMessage(data.message || "Fehler beim Aktualisieren des Profils."); @@ -162,6 +161,12 @@ document.addEventListener("DOMContentLoaded", (): void => { } catch (error) { console.error("Fehler beim Senden der Anfrage:", error); } + + // Hide the modal window + modalEl.hide(); + + // Update the html + readUsers(); }); // edit admin @@ -418,7 +423,7 @@ function renderList(userList: User[]): void { // Edit button let editAdminButton: HTMLButtonElement = document.createElement("button"); - editAdminButton.className = "updateButton"; + editAdminButton.className = "editButton"; editAdminButton.addEventListener("click", () => { showEditModal(user); }); @@ -443,12 +448,12 @@ function renderList(userList: User[]): void { * 2) Opens the modal window. */ function showEditModal(user: User): void { - let idEl: HTMLInputElement = document.getElementById("edit-user-id") as HTMLInputElement; + let idEl: HTMLInputElement = document.getElementById("edit-user-admin-id") as HTMLInputElement; let firstNameEl: HTMLInputElement = document.getElementById("edit-user-admin-first-name") as HTMLInputElement; let lastNameEl: HTMLInputElement = document.getElementById("edit-user-admin-last-name") as HTMLInputElement; let eMailEl: HTMLInputElement = document.getElementById("edit-user-admin-email") as HTMLInputElement; let adressEl: HTMLInputElement = document.getElementById("edit-user-admin-adress") as HTMLInputElement; - let roleEl: HTMLInputElement = document.getElementById("edit-user--admin-role") as HTMLInputElement; + let roleEl: HTMLInputElement = document.getElementById("edit-user-admin-role") as HTMLInputElement; // Write the user's id into the hidden field. idEl.value = user.user_id.toString(); diff --git a/userman_all/client/stylesheet.css b/userman_all/client/stylesheet.css index a779b14f4317b3cf902e5396743d8a49a0d4ed36..39513461550f15822e110b86825918a9ffad3d2e 100644 --- a/userman_all/client/stylesheet.css +++ b/userman_all/client/stylesheet.css @@ -1141,7 +1141,7 @@ h2 { cursor: pointer; } -.modal-card { +.modal-body card { background-color: #FCF3E4; /* Heller Beige-Hintergrund */ box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1); padding: 20px; diff --git a/userman_all/server/doc/index.html b/userman_all/server/doc/index.html index 56e35fd93b13f89ab64d4a76b8b569f772b2819d..3f54671297aed01d7b834515d99006dd4ee705eb 100644 --- a/userman_all/server/doc/index.html +++ b/userman_all/server/doc/index.html @@ -5,15 +5,15 @@ <meta name="description" content="horizon changers website"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> - <link href="assets/bootstrap.min.css?v=1737711999948" rel="stylesheet" media="screen"> - <link href="assets/prism.css?v=1737711999948" rel="stylesheet" /> - <link href="assets/prism-toolbar.css?v=1737711999948" rel="stylesheet" /> - <link href="assets/prism-diff-highlight.css?v=1737711999948" rel="stylesheet" /> - <link href="assets/main.css?v=1737711999948" rel="stylesheet" media="screen, print"> - <link href="assets/favicon.ico?v=1737711999948" rel="icon" type="image/x-icon"> - <link href="assets/apple-touch-icon.png?v=1737711999948" rel="apple-touch-icon" sizes="180x180"> - <link href="assets/favicon-32x32.png?v=1737711999948" rel="icon" type="image/png" sizes="32x32"> - <link href="assets/favicon-16x16.png?v=1737711999948" rel="icon" type="image/png" sizes="16x16"> + <link href="assets/bootstrap.min.css?v=1737709870186" rel="stylesheet" media="screen"> + <link href="assets/prism.css?v=1737709870186" rel="stylesheet" /> + <link href="assets/prism-toolbar.css?v=1737709870186" rel="stylesheet" /> + <link href="assets/prism-diff-highlight.css?v=1737709870186" rel="stylesheet" /> + <link href="assets/main.css?v=1737709870186" rel="stylesheet" media="screen, print"> + <link href="assets/favicon.ico?v=1737709870186" rel="icon" type="image/x-icon"> + <link href="assets/apple-touch-icon.png?v=1737709870186" rel="apple-touch-icon" sizes="180x180"> + <link href="assets/favicon-32x32.png?v=1737709870186" rel="icon" type="image/png" sizes="32x32"> + <link href="assets/favicon-16x16.png?v=1737709870186" rel="icon" type="image/png" sizes="16x16"> </head> <body class="container-fluid"> @@ -1042,6 +1042,6 @@ </div> </div> -<script src="assets/main.bundle.js?v=1737711999948"></script> +<script src="assets/main.bundle.js?v=1737709870186"></script> </body> </html> diff --git a/userman_all/server/src/server.ts b/userman_all/server/src/server.ts index ca6050fff1eb481ea8179cb62338c085ae8ed236..44d4b199195bf83952a411bc461b3204c6e764e9 100644 --- a/userman_all/server/src/server.ts +++ b/userman_all/server/src/server.ts @@ -639,21 +639,33 @@ app.put('/user/:userId', isLoggedIn, async (req: Request, res: Response): Promis }); /** - * @api {delete} /user/:userId Delete user with given id - * @apiName deleteUser + * @api {delete} /user Benutzerprofil löschen + * @apiName BenutzerprofilLoeschen * @apiGroup User + * @apiDescription Löscht das Benutzerprofil des aktuell eingeloggten Benutzers aus der Datenbank und beendet die Session. * - * @apiParam {number} userId The id of the requested user + * @apiSuccess {String} message Erfolgsnachricht * - * @apiSuccess {string} message Message stating the user has been updated - * - * @apiSuccessExample Success-Response: + * @apiSuccessExample Sucsess-Response: * HTTP/1.1 200 OK * { - * "message":"Successfully deleted user ..." + * "message": "Profil erfolgreich gelöscht." + * } + * + * @apiError {String} message Fehlermeldung. + * + * @apiErrorExample 404 Fehler (Benutzer nicht gefunden): + * HTTP/1.1 404 Not Found + * { + * "message": "Profil konnte nicht gelöscht werden. Versuche es später erneut." + * } + * + * @apiErrorExample 500 Fehler (Datenbankproblem): + * HTTP/1.1 500 Internal Server Error + * { + * "message": "Datenbankanfrage fehlgeschlagen: [Fehlerdetails]" * } */ - // Route zum Löschen des eigenen Benutzerprofils app.delete('/user', isLoggedIn, async (req: Request, res: Response): Promise<void> => { console.log("delete user called") @@ -727,29 +739,7 @@ app.get('/users', isLoggedIn, async (req: Request, res: Response): Promise<void> } }); -/** - * @api {delete} /user Benutzer löschen - * @apiName DeleteUser - * @apiGroup User - * @apiDescription Löscht das eigene Benutzerprofil - * - * @apiSuccess {String} message Erfolgsmeldung - * - * @apiSuccessExample {json} Success-Response: - * HTTP/1.1 200 OK - * { - * "message": "Nutzer erfolgreich gelöscht." - * } - * - * @apiError 404 Benutzer nicht gefunden - * @apiError 500 Datenbankfehler - * - * @apiErrorExample {json} Error-Response: - * HTTP/1.1 404 Not Found - * { - * "message": "Nutzer nicht gefunden." - * } - */ + /***************************************************************************** diff --git a/userman_all/server/test/userman.http b/userman_all/server/test/horizon_changers.http similarity index 81% rename from userman_all/server/test/userman.http rename to userman_all/server/test/horizon_changers.http index dcc697a9fb11c3831baba16abad5603575317549..1eb967832b761129b4159b57b076cfa52d0e7fca 100644 --- a/userman_all/server/test/userman.http +++ b/userman_all/server/test/horizon_changers.http @@ -3,20 +3,19 @@ POST http://localhost:8080/login HTTP/1.1 Content-Type: application/json { - "eMail": "paula@gmx.de", - "password": "123" + "eMail": "tiziana@franke.de", + "password": "777" } -###Delete specific user -DELETE http://localhost:8080/user/25 HTTP/1.1 - -### Update specific User +### Update user PUT http://localhost:8080/user HTTP/1.1 Content-Type: application/json { - "givenName": "Laurin", - "familyName": "Etzel" + "firstName": "Selina", + "lastName": "Kyle", + "eMail": "otto@gmail.com", + "password": "otto" } ### Read User @@ -79,15 +78,24 @@ POST http://localhost:8080/logout HTTP/1.1 + +####Read Users +GET http://localhost:8080/users HTTP/1.1 + ### Update specific user -PUT http://localhost:8080/user/48 HTTP/1.1 +PUT http://localhost:8080/user/1 HTTP/1.1 Content-Type: application/json { - "firstName": "Selina", - "lastName": "Kyle" + "givenName": "Selina", + "familyName": "Kyle" } + + + + +