From ad95465215bcfe7fb5e1959b9797111e90e829b6 Mon Sep 17 00:00:00 2001 From: Wiktor Siepka Date: Mon, 2 Jun 2025 04:14:00 +0200 Subject: [PATCH 01/61] Started working on home site --- src/main/resources/templates/home/home.html | 199 ++++++++++++++++++-- 1 file changed, 182 insertions(+), 17 deletions(-) diff --git a/src/main/resources/templates/home/home.html b/src/main/resources/templates/home/home.html index cf08f4ff..5fd775c0 100644 --- a/src/main/resources/templates/home/home.html +++ b/src/main/resources/templates/home/home.html @@ -3,27 +3,192 @@ - Panel użytkownika + Mój Profil + + + + + + + + + + + + + + + - -

Witaj na swoim koncie!

-

Zalogowałeś się pomyślnie.

-
-Mój profil -

UWAGA: Ten formularz jest do testowania ustawienia hasła, gdy użytkownik zarejestruje się poprzez Discord!

-

Jest tutaj tymczasowo, w przyszłości będzie na to osobne miejsce na panelu użytkownika

-
-
-
-
-
- -
-Wyloguj się + + + + + + +
+ + + +
+
+
+ +
+

Cześć, [username]!

+
+ +
+
+ +
+ +
+ +
+
+
+
+ + - + + + + + + + + + + +
+
+ +
+
+
+ + + + + +
+
+
+ +
+
+
+ +
+
+
+
+
+ + +
+
+ +
+
+
+
+
+
+ + + + + + + + \ No newline at end of file From d731f6f820e49ca31a31006d47e8f94fb615ca08 Mon Sep 17 00:00:00 2001 From: PEXEL2002 Date: Tue, 3 Jun 2025 21:40:44 +0200 Subject: [PATCH 04/61] Add user list functionality to createGame.html with role selection --- .../resources/templates/home/createGame.html | 30 ++++++++++++++++--- 1 file changed, 26 insertions(+), 4 deletions(-) diff --git a/src/main/resources/templates/home/createGame.html b/src/main/resources/templates/home/createGame.html index e73c8c92..2d7f3e70 100644 --- a/src/main/resources/templates/home/createGame.html +++ b/src/main/resources/templates/home/createGame.html @@ -206,8 +206,9 @@ class="text-2xl h-[20vh] lg:h-full w-full p-3 rounded-md border border-light-border dark:border-dark-border bg-light-surface dark:bg-dark-surface text-light-textPrimary dark:text-dark-textPrimary resize-none">
-
+ class="w-[45%] h-[40vh] lg:h-full flex flex-col items-center justify-center w-full rounded-md border border-light-border dark:border-dark-border"> +
@@ -251,7 +252,28 @@

Od Graczy dla Grac - \ No newline at end of file From 4444228b40770d99fa3e68d613fd8396a997e424 Mon Sep 17 00:00:00 2001 From: PEXEL2002 Date: Tue, 3 Jun 2025 22:16:53 +0200 Subject: [PATCH 05/61] Add user info retrieval and system selection to createGame.html --- .../resources/templates/home/createGame.html | 79 ++++++++++++++++--- 1 file changed, 67 insertions(+), 12 deletions(-) diff --git a/src/main/resources/templates/home/createGame.html b/src/main/resources/templates/home/createGame.html index 2d7f3e70..2d44db6e 100644 --- a/src/main/resources/templates/home/createGame.html +++ b/src/main/resources/templates/home/createGame.html @@ -65,11 +65,14 @@ // ===== Zmienne Globalne ===== var RpgSystem = []; - + var userInfo = []; + var userList = []; // ==== DOMContentLoaded ==== document.addEventListener("DOMContentLoaded", () => { initThemeToggle(); applyTheme(getSavedTheme()); + getUserInfo(); + getAllSystems(); }); // ==== Changing the theme ==== @@ -142,14 +145,55 @@ return; } RpgSystem = data; + generateSystemSelect(data); }).catch(error => { console.error('Error fetching user systems:', error); }); } + // ==== Generate System Select ==== + function generateSystemSelect(systems) { + const select = document.querySelector("select"); + if (!select) return; + + systems.forEach(system => { + const option = document.createElement("option"); + option.value = system.id; + option.textContent = system.name; + select.appendChild(option); + }); + } // ==== Force Reload ==== function forceReload() { location.reload(); } + // ==== Get User Info ==== + function getUserInfo() { + fetch('/api/v1/authorized/user', { + method: 'GET', + headers: { + 'X-XSRF-TOKEN': getCsrfToken() + } + }).then( + response => { + if (!response.ok) throw new Error('Network response was not ok'); + return response.json(); + } + ).then(data => { + userInfo = data; + const usersList = document.getElementById("users-list"); + const userDiv = document.createElement("div"); + userDiv.className = "w-full flex flex-row items-center justify-between p-4 text-xl"; + userDiv.innerHTML = ` +

+ ${user.username} +

+ GameMaster + `; + usersList.appendChild(userDiv); + }).catch(error => { + console.error('Error fetching user info:', error); + }); + } @@ -213,7 +257,7 @@

+ class="w-20 h-20 rounded-full bg-light-accent dark:bg-dark-accent text-dark-textPrimary dark:text-light-textPrimary hover:bg-light-accentDark dark:hover:bg-dark-accentDark transitionduration-300 cursor-pointer flex items-center justify-center" onclick="addUserToList()">
@@ -253,16 +297,27 @@

Od Graczy dla Grac From b94b2c5f64557fa1c59c0df5894034d8816d18b4 Mon Sep 17 00:00:00 2001 From: Adrian Goral Date: Sat, 7 Jun 2025 16:45:25 +0200 Subject: [PATCH 12/61] Add endpoint to check if password is set for GitHub user in UserController and implement logic in UserService --- .../rpghandyhelper/user/UserController.java | 7 ++++++- .../goral/rpghandyhelper/user/UserService.java | 17 +++++++++++++++++ 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/src/main/java/dev/goral/rpghandyhelper/user/UserController.java b/src/main/java/dev/goral/rpghandyhelper/user/UserController.java index 980a6dae..63f67de9 100644 --- a/src/main/java/dev/goral/rpghandyhelper/user/UserController.java +++ b/src/main/java/dev/goral/rpghandyhelper/user/UserController.java @@ -21,6 +21,11 @@ public UserDTO getAuthorizedUser() { return userService.getAuthorizedUser(); } + @GetMapping("/user/isPasswordSetForGithubUser") + public Map isPasswordSetForGithubUser(@AuthenticationPrincipal Object user) { + return userService.isPasswordSetForGithubUser(user); + } + @PostMapping("/setPassword") public Map setPassword(@RequestBody PasswordRequest passwordRequest) { return userService.setPassword(passwordRequest.getPassword()); @@ -47,7 +52,7 @@ public ResponseEntity getUserPhoto(@PathVariable String filename) throws } @GetMapping("/user/photo/username/{username}") - public Map getUserPhotoByUsername(@PathVariable String username) throws IOException { + public Map getUserPhotoByUsername(@PathVariable String username) { return userService.getUserPhotoByUsername(username); } diff --git a/src/main/java/dev/goral/rpghandyhelper/user/UserService.java b/src/main/java/dev/goral/rpghandyhelper/user/UserService.java index 9a757ba1..3648b69c 100644 --- a/src/main/java/dev/goral/rpghandyhelper/user/UserService.java +++ b/src/main/java/dev/goral/rpghandyhelper/user/UserService.java @@ -347,4 +347,21 @@ public Map getUserPhotoByUsername(String username) { response.put("userPhotoPath", userPhotoPath); return response; } + + public Map isPasswordSetForGithubUser(Object user) { + + if (user instanceof User) { + return CustomReturnables.getOkResponseMap("Użytkownik nie jest zalogowany przez OAuth2."); + } else if (user instanceof DefaultOAuth2User oauthUser) { + String email = oauthUser.getAttribute("email"); + User userEntity = userRepository.findByEmail(email) + .orElseThrow(() -> new ResourceNotFoundException("Nie znaleziono użytkownika powiązanego z tym kontem Discord")); + boolean isPasswordSet = userEntity.getPassword() != null && !userEntity.getPassword().isEmpty(); + Map response = CustomReturnables.getOkResponseMap("Sprawdzono, czy hasło jest ustawione dla użytkownika."); + response.put("isPasswordSet", isPasswordSet); + return response; + } else { + throw new IllegalStateException("Nie udało się pobrać zalogowanego użytkownika."); + } + } } From 154b87951bfc304f35d28e211c901b5c4474add0 Mon Sep 17 00:00:00 2001 From: Myjem Date: Mon, 9 Jun 2025 16:25:23 +0200 Subject: [PATCH 13/61] Sidebar changes --- src/main/resources/templates/home/home.html | 28 ++++++++++----------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/src/main/resources/templates/home/home.html b/src/main/resources/templates/home/home.html index effdc709..6c563400 100644 --- a/src/main/resources/templates/home/home.html +++ b/src/main/resources/templates/home/home.html @@ -83,7 +83,7 @@ -