From d7afc574a66a28bd4f20615032e46508b4f4222a Mon Sep 17 00:00:00 2001 From: Sahil Phule Date: Thu, 2 May 2024 14:52:50 -0600 Subject: [PATCH] Change User Roles (#1153) * Modify user service and controller * Modify Template * Add messages * Fix Username output * Add tooltip * Change Role Modify logic * Add Roles from database to existing users * Add default select Fillers * Indent JS * Add Change Role Related Translations * Remove unnecessary Whitespace and imports --- .../security/SecurityConfiguration.java | 42 +++++++++++++++++++ .../SPDF/config/security/UserService.java | 13 ++++++ .../SPDF/controller/api/UserController.java | 39 +++++++++++++++++ .../SPDF/repository/AuthorityRepository.java | 3 ++ src/main/resources/messages_ar_AR.properties | 3 ++ src/main/resources/messages_bg_BG.properties | 3 ++ src/main/resources/messages_ca_CA.properties | 3 ++ src/main/resources/messages_de_DE.properties | 3 ++ src/main/resources/messages_el_GR.properties | 3 ++ src/main/resources/messages_en_GB.properties | 3 ++ src/main/resources/messages_en_US.properties | 3 ++ src/main/resources/messages_es_ES.properties | 3 ++ src/main/resources/messages_eu_ES.properties | 3 ++ src/main/resources/messages_fr_FR.properties | 3 ++ src/main/resources/messages_hi_IN.properties | 3 ++ src/main/resources/messages_hu_HU.properties | 3 ++ src/main/resources/messages_id_ID.properties | 3 ++ src/main/resources/messages_it_IT.properties | 3 ++ src/main/resources/messages_ja_JP.properties | 3 ++ src/main/resources/messages_ko_KR.properties | 3 ++ src/main/resources/messages_nl_NL.properties | 3 ++ src/main/resources/messages_pl_PL.properties | 3 ++ src/main/resources/messages_pt_BR.properties | 3 ++ src/main/resources/messages_pt_PT.properties | 3 ++ src/main/resources/messages_ro_RO.properties | 3 ++ src/main/resources/messages_ru_RU.properties | 3 ++ .../resources/messages_sr_LATN_RS.properties | 3 ++ src/main/resources/messages_sv_SE.properties | 3 ++ src/main/resources/messages_tr_TR.properties | 3 ++ src/main/resources/messages_uk_UA.properties | 3 ++ src/main/resources/messages_zh_CN.properties | 3 ++ src/main/resources/messages_zh_TW.properties | 3 ++ src/main/resources/templates/addUsers.html | 32 ++++++++++++++ 33 files changed, 213 insertions(+) diff --git a/src/main/java/stirling/software/SPDF/config/security/SecurityConfiguration.java b/src/main/java/stirling/software/SPDF/config/security/SecurityConfiguration.java index f61bb240..3c612bf8 100644 --- a/src/main/java/stirling/software/SPDF/config/security/SecurityConfiguration.java +++ b/src/main/java/stirling/software/SPDF/config/security/SecurityConfiguration.java @@ -15,6 +15,9 @@ import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; import org.springframework.security.config.http.SessionCreationPolicy; import org.springframework.security.core.Authentication; +import org.springframework.security.core.GrantedAuthority; +import org.springframework.security.core.authority.SimpleGrantedAuthority; +import org.springframework.security.core.authority.mapping.GrantedAuthoritiesMapper; import org.springframework.security.core.session.SessionRegistry; import org.springframework.security.core.session.SessionRegistryImpl; import org.springframework.security.core.userdetails.UserDetailsService; @@ -23,6 +26,7 @@ import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.security.oauth2.client.registration.ClientRegistration; import org.springframework.security.oauth2.client.registration.InMemoryClientRegistrationRepository; import org.springframework.security.oauth2.core.user.OAuth2User; +import org.springframework.security.oauth2.core.user.OAuth2UserAuthority; import org.springframework.security.web.SecurityFilterChain; import org.springframework.security.web.authentication.AuthenticationSuccessHandler; import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter; @@ -34,9 +38,11 @@ import org.springframework.security.oauth2.client.registration.ClientRegistratio import jakarta.servlet.http.HttpSession; import stirling.software.SPDF.model.ApplicationProperties; +import stirling.software.SPDF.model.User; import stirling.software.SPDF.repository.JPATokenRepositoryImpl; import java.io.IOException; +import java.util.*; @Configuration @EnableWebSecurity() @@ -182,6 +188,10 @@ public class SecurityConfiguration { } } ) + // Add existing Authorities from the database + .userInfoEndpoint( userInfoEndpoint -> + userInfoEndpoint.userAuthoritiesMapper(userAuthoritiesMapper()) + ) ); } } else { @@ -210,6 +220,38 @@ public class SecurityConfiguration { .build(); } + /* + This following function is to grant Authorities to the OAUTH2 user from the values stored in the database. + This is required for the internal; 'hasRole()' function to give out the correct role. + */ + @Bean + @ConditionalOnProperty(value = "security.oauth2.enabled" , havingValue = "true", matchIfMissing = false) + GrantedAuthoritiesMapper userAuthoritiesMapper() { + return (authorities) -> { + Set mappedAuthorities = new HashSet<>(); + + authorities.forEach(authority -> { + // Add existing OAUTH2 Authorities + mappedAuthorities.add(new SimpleGrantedAuthority(authority.getAuthority())); + + // Add Authorities from database for existing user, if user is present. + if (authority instanceof OAuth2UserAuthority oauth2Auth) { + Optional userOpt = userService.findByUsernameIgnoreCase((String)oauth2Auth.getAttributes().get("email")); + if (userOpt.isPresent()) { + User user = userOpt.get(); + if (user != null){ + mappedAuthorities.add(new SimpleGrantedAuthority( + userService + .findRole(user) + .getAuthority())); + } + } + } + }); + return mappedAuthorities; + }; + } + @Bean public IPRateLimitingFilter rateLimitingFilter() { int maxRequestsPerIp = 1000000; // Example limit TODO add config level diff --git a/src/main/java/stirling/software/SPDF/config/security/UserService.java b/src/main/java/stirling/software/SPDF/config/security/UserService.java index 9fe5fdd1..f45db76a 100644 --- a/src/main/java/stirling/software/SPDF/config/security/UserService.java +++ b/src/main/java/stirling/software/SPDF/config/security/UserService.java @@ -21,6 +21,7 @@ import stirling.software.SPDF.controller.api.pipeline.UserServiceInterface; import stirling.software.SPDF.model.Authority; import stirling.software.SPDF.model.Role; import stirling.software.SPDF.model.User; +import stirling.software.SPDF.repository.AuthorityRepository; import stirling.software.SPDF.repository.UserRepository; @Service @@ -28,6 +29,8 @@ public class UserService implements UserServiceInterface { @Autowired private UserRepository userRepository; + @Autowired private AuthorityRepository authorityRepository; + @Autowired private PasswordEncoder passwordEncoder; // Handle OAUTH2 login and user auto creation. @@ -202,6 +205,10 @@ public class UserService implements UserServiceInterface { return userRepository.findByUsernameIgnoreCase(username); } + public Authority findRole(User user) { + return authorityRepository.findByUserId(user.getId()); + } + public void changeUsername(User user, String newUsername) { user.setUsername(newUsername); userRepository.save(user); @@ -217,6 +224,12 @@ public class UserService implements UserServiceInterface { userRepository.save(user); } + public void changeRole(User user, String newRole) { + Authority userAuthority = this.findRole(user); + userAuthority.setAuthority(newRole); + authorityRepository.save(userAuthority); + } + public boolean isPasswordCorrect(User user, String currentPassword) { return passwordEncoder.matches(currentPassword, user.getPassword()); } diff --git a/src/main/java/stirling/software/SPDF/controller/api/UserController.java b/src/main/java/stirling/software/SPDF/controller/api/UserController.java index a7a40a0a..f5b7b159 100644 --- a/src/main/java/stirling/software/SPDF/controller/api/UserController.java +++ b/src/main/java/stirling/software/SPDF/controller/api/UserController.java @@ -227,6 +227,45 @@ public class UserController { return new RedirectView("/addUsers"); // Redirect to account page after adding the user } + @PreAuthorize("hasRole('ROLE_ADMIN')") + @PostMapping("/admin/changeRole") + public RedirectView changeRole( + @RequestParam(name = "username") String username, + @RequestParam(name = "role") String role, + Authentication authentication) { + + Optional userOpt = userService.findByUsernameIgnoreCase(username); + + if (!userOpt.isPresent()) { + return new RedirectView("/addUsers?messageType=userNotFound"); + } + if (!userService.usernameExistsIgnoreCase(username)) { + return new RedirectView("/addUsers?messageType=userNotFound"); + } + // Get the currently authenticated username + String currentUsername = authentication.getName(); + + // Check if the provided username matches the current session's username + if (currentUsername.equalsIgnoreCase(username)) { + return new RedirectView("/addUsers?messageType=downgradeCurrentUser"); + } + try { + // Validate the role + Role roleEnum = Role.fromString(role); + if (roleEnum == Role.INTERNAL_API_USER) { + // If the role is INTERNAL_API_USER, reject the request + return new RedirectView("/addUsers?messageType=invalidRole"); + } + } catch (IllegalArgumentException e) { + // If the role ID is not valid, redirect with an error message + return new RedirectView("/addUsers?messageType=invalidRole"); + } + User user = userOpt.get(); + + userService.changeRole(user, role); + return new RedirectView("/addUsers"); // Redirect to account page after adding the user + } + @PreAuthorize("hasRole('ROLE_ADMIN')") @PostMapping("/admin/deleteUser/{username}") public RedirectView deleteUser( diff --git a/src/main/java/stirling/software/SPDF/repository/AuthorityRepository.java b/src/main/java/stirling/software/SPDF/repository/AuthorityRepository.java index bbf32a07..5e14a326 100644 --- a/src/main/java/stirling/software/SPDF/repository/AuthorityRepository.java +++ b/src/main/java/stirling/software/SPDF/repository/AuthorityRepository.java @@ -9,4 +9,7 @@ import stirling.software.SPDF.model.Authority; public interface AuthorityRepository extends JpaRepository { // Set findByUsername(String username); Set findByUser_Username(String username); + + Authority findByUserId(long user_id); + } diff --git a/src/main/resources/messages_ar_AR.properties b/src/main/resources/messages_ar_AR.properties index 89e681b5..c1102346 100644 --- a/src/main/resources/messages_ar_AR.properties +++ b/src/main/resources/messages_ar_AR.properties @@ -57,6 +57,8 @@ usernameExistsMessage=New Username already exists. invalidUsernameMessage=Invalid username, Username must only contain alphabet characters and numbers. deleteCurrentUserMessage=Cannot delete currently logged in user. deleteUsernameExistsMessage=The username does not exist and cannot be deleted. +downgradeCurrentUserMessage=لا يمكن خفض دور المستخدم الحالي +downgradeCurrentUserLongMessage=لا يمكن تخفيض دور المستخدم الحالي. وبالتالي، لن يظهر المستخدم الحالي. error=Error oops=Oops! help=Help @@ -173,6 +175,7 @@ adminUserSettings.demoUser=Demo User (No custom settings) adminUserSettings.internalApiUser=Internal API User adminUserSettings.forceChange=Force user to change password on login adminUserSettings.submit=Save User +adminUserSettings.changeUserRole=تغيير دور المستخدم ############# # HOME-PAGE # diff --git a/src/main/resources/messages_bg_BG.properties b/src/main/resources/messages_bg_BG.properties index 80b249cf..865522f6 100644 --- a/src/main/resources/messages_bg_BG.properties +++ b/src/main/resources/messages_bg_BG.properties @@ -57,6 +57,8 @@ usernameExistsMessage=Новият потребител вече съществ invalidUsernameMessage=Invalid username, Username must only contain alphabet characters and numbers. deleteCurrentUserMessage=Cannot delete currently logged in user. deleteUsernameExistsMessage=The username does not exist and cannot be deleted. +downgradeCurrentUserMessage=Не може да се понижи ролята на текущия потребител +downgradeCurrentUserLongMessage=Не може да се понижи ролята на текущия потребител. Следователно текущият потребител няма да бъде показан. error=Error oops=Oops! help=Help @@ -173,6 +175,7 @@ adminUserSettings.demoUser=Demo User (No custom settings) adminUserSettings.internalApiUser=Internal API User adminUserSettings.forceChange=Принудете потребителя да промени потребителското име/парола при влизане adminUserSettings.submit=Съхранете потребителя +adminUserSettings.changeUserRole=Промяна на ролята на потребителя ############# # HOME-PAGE # diff --git a/src/main/resources/messages_ca_CA.properties b/src/main/resources/messages_ca_CA.properties index 823cbfff..c2e2e476 100644 --- a/src/main/resources/messages_ca_CA.properties +++ b/src/main/resources/messages_ca_CA.properties @@ -57,6 +57,8 @@ usernameExistsMessage=New Username already exists. invalidUsernameMessage=Invalid username, Username must only contain alphabet characters and numbers. deleteCurrentUserMessage=Cannot delete currently logged in user. deleteUsernameExistsMessage=The username does not exist and cannot be deleted. +downgradeCurrentUserMessage=No es pot reduir la funció de l'usuari actual +downgradeCurrentUserLongMessage=No es pot baixar la funció de l'usuari actual. Per tant, no es mostrarà l'usuari actual. error=Error oops=Oops! help=Help @@ -173,6 +175,7 @@ adminUserSettings.demoUser=Demo User (No custom settings) adminUserSettings.internalApiUser=Internal API User adminUserSettings.forceChange=Force user to change password on login adminUserSettings.submit=Desar Usuari +adminUserSettings.changeUserRole=Canvia el rol de l'usuari ############# # HOME-PAGE # diff --git a/src/main/resources/messages_de_DE.properties b/src/main/resources/messages_de_DE.properties index a7c9bddf..a007f314 100644 --- a/src/main/resources/messages_de_DE.properties +++ b/src/main/resources/messages_de_DE.properties @@ -57,6 +57,8 @@ usernameExistsMessage=Neuer Benutzername existiert bereits. invalidUsernameMessage=Ungültiger Benutzername. Der Benutzername darf nur Buchstaben und Zahlen enthalten. deleteCurrentUserMessage=Der aktuell angemeldete Benutzer kann nicht gelöscht werden. deleteUsernameExistsMessage=Der Benutzername existiert nicht und kann nicht gelöscht werden. +downgradeCurrentUserMessage=Die Rolle des aktuellen Benutzers kann nicht herabgestuft werden +downgradeCurrentUserLongMessage=Die Rolle des aktuellen Benutzers kann nicht herabgestuft werden. Daher wird der aktuelle Benutzer nicht angezeigt. error=Fehler oops=Hoppla! help=Hilfe @@ -173,6 +175,7 @@ adminUserSettings.demoUser=Demo-Benutzer (Keine benutzerdefinierten Einstellunge adminUserSettings.internalApiUser=Interner API-Benutzer adminUserSettings.forceChange=Benutzer dazu zwingen, Benutzernamen/Passwort bei der Anmeldung zu ändern adminUserSettings.submit=Benutzer speichern +adminUserSettings.changeUserRole=Benutzerrolle ändern ############# # HOME-PAGE # diff --git a/src/main/resources/messages_el_GR.properties b/src/main/resources/messages_el_GR.properties index 216982c3..08e5f329 100644 --- a/src/main/resources/messages_el_GR.properties +++ b/src/main/resources/messages_el_GR.properties @@ -57,6 +57,8 @@ usernameExistsMessage=Το νέο όνομα χρήστη υπάρχει ήδη. invalidUsernameMessage=Μη έγκυρο όνομα χρήστη, το όνομα χρήστη πρέπει να περιέχει μόνο αλφαβητικούς χαρακτήρες και αριθμούς. deleteCurrentUserMessage=Δεν είναι δυνατή η διαγραφή του τρέχοντος συνδεδεμένου χρήστη. deleteUsernameExistsMessage=Το όνομα χρήστη δεν υπάρχει και δεν μπορεί να διαγραφεί. +downgradeCurrentUserMessage=Δεν είναι δυνατή η υποβάθμιση του ρόλου του τρέχοντος χρήστη +downgradeCurrentUserLongMessage=Δεν είναι δυνατή η υποβάθμιση του ρόλου του τρέχοντος χρήστη. Ως εκ τούτου, ο τρέχων χρήστης δεν θα εμφανίζεται. error=Σφάλμα oops=Ωχ! help=Βοήθεια @@ -173,6 +175,7 @@ adminUserSettings.demoUser=Demo χρήστης (Χωρίς προσαρμοσμ adminUserSettings.internalApiUser=Εσωτερικός API χρήστης adminUserSettings.forceChange=Αναγκάστε τον χρήστη να αλλάξει το όνομα χρήστη/κωδικό πρόσβασης κατά τη σύνδεση adminUserSettings.submit=Αποθήκευση Χρήστη +adminUserSettings.changeUserRole=Αλλαγή ρόλου χρήστη ############# # HOME-PAGE # diff --git a/src/main/resources/messages_en_GB.properties b/src/main/resources/messages_en_GB.properties index 8117b6a3..ed3779cc 100644 --- a/src/main/resources/messages_en_GB.properties +++ b/src/main/resources/messages_en_GB.properties @@ -57,6 +57,8 @@ usernameExistsMessage=New Username already exists. invalidUsernameMessage=Invalid username, Username must only contain alphabet characters and numbers. deleteCurrentUserMessage=Cannot delete currently logged in user. deleteUsernameExistsMessage=The username does not exist and cannot be deleted. +downgradeCurrentUserMessage=Cannot downgrade current user's role +downgradeCurrentUserLongMessage=Cannot downgrade current user's role. Hence, current user will not be shown. error=Error oops=Oops! help=Help @@ -173,6 +175,7 @@ adminUserSettings.demoUser=Demo User (No custom settings) adminUserSettings.internalApiUser=Internal API User adminUserSettings.forceChange=Force user to change password on login adminUserSettings.submit=Save User +adminUserSettings.changeUserRole=Change User's Role ############# # HOME-PAGE # diff --git a/src/main/resources/messages_en_US.properties b/src/main/resources/messages_en_US.properties index 36c31264..df24e3a2 100644 --- a/src/main/resources/messages_en_US.properties +++ b/src/main/resources/messages_en_US.properties @@ -57,6 +57,8 @@ usernameExistsMessage=New Username already exists. invalidUsernameMessage=Invalid username, Username must only contain alphabet characters and numbers. deleteCurrentUserMessage=Cannot delete currently logged in user. deleteUsernameExistsMessage=The username does not exist and cannot be deleted. +downgradeCurrentUserMessage=Cannot downgrade current user's role +downgradeCurrentUserLongMessage=Cannot downgrade current user's role. Hence, current user will not be shown. error=Error oops=Oops! help=Help @@ -173,6 +175,7 @@ adminUserSettings.demoUser=Demo User (No custom settings) adminUserSettings.internalApiUser=Internal API User adminUserSettings.forceChange=Force user to change password on login adminUserSettings.submit=Save User +adminUserSettings.changeUserRole=Change User's Role ############# # HOME-PAGE # diff --git a/src/main/resources/messages_es_ES.properties b/src/main/resources/messages_es_ES.properties index 663d7b63..96008bed 100644 --- a/src/main/resources/messages_es_ES.properties +++ b/src/main/resources/messages_es_ES.properties @@ -57,6 +57,8 @@ usernameExistsMessage=El nuevo nombre de usuario está en uso. invalidUsernameMessage=Nombre de usuario no válido, El nombre de ususario debe contener únicamente números y caracteres alfabéticos. deleteCurrentUserMessage=No puede eliminar el usuario que tiene la sesión actualmente en uso. deleteUsernameExistsMessage=El usuario no existe y no puede eliminarse. +downgradeCurrentUserMessage=No se puede degradar el rol del usuario actual +downgradeCurrentUserLongMessage=No se puede degradar el rol del usuario actual. Por lo tanto, el usuario actual no se mostrará. error=Error oops=Ups! help=Help @@ -173,6 +175,7 @@ adminUserSettings.demoUser=Usuario Demo (Sin ajustes personalizados) adminUserSettings.internalApiUser=Usuario interno de API adminUserSettings.forceChange=Forzar usuario a cambiar usuario/contraseña en el acceso adminUserSettings.submit=Guardar Usuario +adminUserSettings.changeUserRole=Cambiar rol de usuario ############# # HOME-PAGE # diff --git a/src/main/resources/messages_eu_ES.properties b/src/main/resources/messages_eu_ES.properties index 28a26fb8..5df9bc3d 100644 --- a/src/main/resources/messages_eu_ES.properties +++ b/src/main/resources/messages_eu_ES.properties @@ -57,6 +57,8 @@ usernameExistsMessage=New Username already exists. invalidUsernameMessage=Invalid username, Username must only contain alphabet characters and numbers. deleteCurrentUserMessage=Cannot delete currently logged in user. deleteUsernameExistsMessage=The username does not exist and cannot be deleted. +downgradeCurrentUserMessage=Ezin da uneko erabiltzailearen rola jaitsi +downgradeCurrentUserLongMessage=Ezin da uneko erabiltzailearen rola jaitsi. Beraz, oraingo erabiltzailea ez da erakutsiko. error=Error oops=Oops! help=Help @@ -173,6 +175,7 @@ adminUserSettings.demoUser=Demo User (No custom settings) adminUserSettings.internalApiUser=Internal API User adminUserSettings.forceChange=Force user to change password on login adminUserSettings.submit=Gorde Erabiltzailea +adminUserSettings.changeUserRole=Erabiltzailearen rola aldatu ############# # HOME-PAGE # diff --git a/src/main/resources/messages_fr_FR.properties b/src/main/resources/messages_fr_FR.properties index 722158aa..6624b01c 100644 --- a/src/main/resources/messages_fr_FR.properties +++ b/src/main/resources/messages_fr_FR.properties @@ -57,6 +57,8 @@ usernameExistsMessage=Le nouveau nom d’utilisateur existe déjà. invalidUsernameMessage=Nom d’utilisateur invalide, le nom d’utilisateur ne peut contenir que des chiffres et des lettres. deleteCurrentUserMessage=Impossible de supprimer l’utilisateur actuellement connecté. deleteUsernameExistsMessage=Le nom d’utilisateur n’existe pas et ne peut pas être supprimé. +downgradeCurrentUserMessage=Impossible de rétrograder le rôle de l'utilisateur actuel +downgradeCurrentUserLongMessage=Impossible de rétrograder le rôle de l'utilisateur actuel. Par conséquent, l'utilisateur actuel ne sera pas affiché. error=Erreur oops=Oups ! help=Aide @@ -173,6 +175,7 @@ adminUserSettings.demoUser=Demo User (Paramètres par défaut) adminUserSettings.internalApiUser=Internal API User adminUserSettings.forceChange=Forcer l’utilisateur à changer son nom d’utilisateur/mot de passe lors de la connexion adminUserSettings.submit=Ajouter +adminUserSettings.changeUserRole=Changer le rôle de l'utilisateur ############# # HOME-PAGE # diff --git a/src/main/resources/messages_hi_IN.properties b/src/main/resources/messages_hi_IN.properties index 316902f1..355ccb9e 100644 --- a/src/main/resources/messages_hi_IN.properties +++ b/src/main/resources/messages_hi_IN.properties @@ -57,6 +57,8 @@ usernameExistsMessage=नया उपयोगकर्ता नाम पह invalidUsernameMessage=Invalid username, Username must only contain alphabet characters and numbers. deleteCurrentUserMessage=Cannot delete currently logged in user. deleteUsernameExistsMessage=The username does not exist and cannot be deleted. +downgradeCurrentUserMessage=मौजूदा यूज़र की भूमिका को डाउनग्रेड नहीं किया जा सकता +downgradeCurrentUserLongMessage=मौजूदा यूज़र की भूमिका को डाउनग्रेड नहीं किया जा सकता। इसलिए, वर्तमान उपयोगकर्ता को नहीं दिखाया जाएगा। error=Error oops=Oops! help=Help @@ -173,6 +175,7 @@ adminUserSettings.demoUser=Demo User (No custom settings) adminUserSettings.internalApiUser=Internal API User adminUserSettings.forceChange=उपयोगकर्ता को लॉगिन पर उपयोगकर्ता नाम/पासवर्ड बदलने के लिए मजबूर करें adminUserSettings.submit=उपयोगकर्ता को सहेजें +adminUserSettings.changeUserRole=यूज़र की भूमिका बदलें ############# # HOME-PAGE # diff --git a/src/main/resources/messages_hu_HU.properties b/src/main/resources/messages_hu_HU.properties index 957e2fe7..3b2811d4 100644 --- a/src/main/resources/messages_hu_HU.properties +++ b/src/main/resources/messages_hu_HU.properties @@ -57,6 +57,8 @@ usernameExistsMessage=Az új felhasználónév már létezik. invalidUsernameMessage=Invalid username, Username must only contain alphabet characters and numbers. deleteCurrentUserMessage=Cannot delete currently logged in user. deleteUsernameExistsMessage=The username does not exist and cannot be deleted. +downgradeCurrentUserMessage=A jelenlegi felhasználó szerepkörét nem lehet visszaminősíteni +downgradeCurrentUserLongMessage=Az aktuális felhasználó szerepkörét nem lehet visszaminősíteni. Ezért az aktuális felhasználó nem jelenik meg. error=Error oops=Oops! help=Help @@ -173,6 +175,7 @@ adminUserSettings.demoUser=Demo User (No custom settings) adminUserSettings.internalApiUser=Internal API User adminUserSettings.forceChange=Kényszerítse a felhasználót a felhasználónév/jelszó megváltoztatására bejelentkezéskor adminUserSettings.submit=Felhasználó mentése +adminUserSettings.changeUserRole=Felhasználó szerepkörének módosítása ############# # HOME-PAGE # diff --git a/src/main/resources/messages_id_ID.properties b/src/main/resources/messages_id_ID.properties index 476dd91a..370b01ad 100644 --- a/src/main/resources/messages_id_ID.properties +++ b/src/main/resources/messages_id_ID.properties @@ -57,6 +57,8 @@ usernameExistsMessage=Nama pengguna baru sudah ada. invalidUsernameMessage=Invalid username, Username must only contain alphabet characters and numbers. deleteCurrentUserMessage=Cannot delete currently logged in user. deleteUsernameExistsMessage=The username does not exist and cannot be deleted. +downgradeCurrentUserMessage=Tidak dapat menurunkan peran pengguna saat ini +downgradeCurrentUserLongMessage=Tidak dapat menurunkan peran pengguna saat ini. Oleh karena itu, pengguna saat ini tidak akan ditampilkan. error=Error oops=Oops! help=Help @@ -173,6 +175,7 @@ adminUserSettings.demoUser=Demo User (No custom settings) adminUserSettings.internalApiUser=Internal API User adminUserSettings.forceChange=Memaksa pengguna untuk mengubah nama pengguna/kata sandi saat masuk adminUserSettings.submit=Simpan Pengguna +adminUserSettings.changeUserRole=Ubah Peran Pengguna ############# # HOME-PAGE # diff --git a/src/main/resources/messages_it_IT.properties b/src/main/resources/messages_it_IT.properties index 346f402b..6f3ce31b 100644 --- a/src/main/resources/messages_it_IT.properties +++ b/src/main/resources/messages_it_IT.properties @@ -57,6 +57,8 @@ usernameExistsMessage=Il nuovo nome utente esiste già. invalidUsernameMessage=Nome utente non valido, il nome utente deve contenere solo caratteri alfabetici e numeri. deleteCurrentUserMessage=Impossibile eliminare l'utente attualmente connesso. deleteUsernameExistsMessage=Il nome utente non esiste e non può essere eliminato. +downgradeCurrentUserMessage=Impossibile declassare il ruolo dell'utente corrente +downgradeCurrentUserLongMessage=Impossibile declassare il ruolo dell'utente corrente. Pertanto, l'utente corrente non verrà visualizzato. error=Errore oops=Oops! help=Aiuto @@ -173,6 +175,7 @@ adminUserSettings.demoUser=Utente demo (nessuna impostazione personalizzata) adminUserSettings.internalApiUser=API utente interna adminUserSettings.forceChange=Forza l'utente a cambiare nome username/password all'accesso adminUserSettings.submit=Salva utente +adminUserSettings.changeUserRole=Cambia il ruolo dell'utente ############# # HOME-PAGE # diff --git a/src/main/resources/messages_ja_JP.properties b/src/main/resources/messages_ja_JP.properties index 4f142aa8..febd561c 100644 --- a/src/main/resources/messages_ja_JP.properties +++ b/src/main/resources/messages_ja_JP.properties @@ -57,6 +57,8 @@ usernameExistsMessage=新しいユーザー名はすでに存在します。 invalidUsernameMessage=ユーザー名が無効です。ユーザー名にはアルファベットと数字のみを使用してください。 deleteCurrentUserMessage=現在ログインしているユーザーは削除できません。 deleteUsernameExistsMessage=そのユーザー名は存在しないため削除できません。 +downgradeCurrentUserMessage=現在のユーザーの役割をダウングレードできません +downgradeCurrentUserLongMessage=現在のユーザーの役割をダウングレードできません。したがって、現在のユーザーは表示されません。 error=エラー oops=おっと! help=ヘルプ @@ -173,6 +175,7 @@ adminUserSettings.demoUser=デモユーザー (カスタム設定なし) adminUserSettings.internalApiUser=内部APIユーザー adminUserSettings.forceChange=ログイン時にユーザー名/パスワードを強制的に変更する adminUserSettings.submit=ユーザーの保存 +adminUserSettings.changeUserRole=ユーザーの役割を変更する ############# # HOME-PAGE # diff --git a/src/main/resources/messages_ko_KR.properties b/src/main/resources/messages_ko_KR.properties index 9f99ab10..e8604477 100644 --- a/src/main/resources/messages_ko_KR.properties +++ b/src/main/resources/messages_ko_KR.properties @@ -57,6 +57,8 @@ usernameExistsMessage=새 사용자명이 이미 존재합니다. invalidUsernameMessage=사용자 이름이 잘못되었습니다. 사용자 이름에는 알파벳 문자와 숫자만 포함되어야 합니다. deleteCurrentUserMessage=현재 로그인한 사용자를 삭제할 수 없습니다. deleteUsernameExistsMessage=사용자 이름이 존재하지 않으며 삭제할 수 없습니다. +downgradeCurrentUserMessage=현재 사용자의 역할을 다운그레이드할 수 없습니다 +downgradeCurrentUserLongMessage=현재 사용자의 역할을 다운그레이드할 수 없습니다. 따라서 현재 사용자는 표시되지 않습니다. error=오류 oops=어머나! help=도움말 @@ -173,6 +175,7 @@ adminUserSettings.demoUser=데모 사용자(사용자 지정 설정 없음) adminUserSettings.internalApiUser=내부 API 사용자 adminUserSettings.forceChange=다음 로그인 때 사용자명과 비밀번호를 변경하도록 강제 adminUserSettings.submit=사용자 저장 +adminUserSettings.changeUserRole=사용자의 역할 변경 ############# # HOME-PAGE # diff --git a/src/main/resources/messages_nl_NL.properties b/src/main/resources/messages_nl_NL.properties index a82f1c2c..6ba6a7b3 100644 --- a/src/main/resources/messages_nl_NL.properties +++ b/src/main/resources/messages_nl_NL.properties @@ -57,6 +57,8 @@ usernameExistsMessage=Nieuwe gebruikersnaam bestaat al. invalidUsernameMessage=Invalid username, Username must only contain alphabet characters and numbers. deleteCurrentUserMessage=Cannot delete currently logged in user. deleteUsernameExistsMessage=The username does not exist and cannot be deleted. +downgradeCurrentUserMessage=Kan de rol van de huidige gebruiker niet downgraden +downgradeCurrentUserLongMessage=Kan de rol van de huidige gebruiker niet downgraden. Huidige gebruiker wordt dus niet weergegeven. error=Error oops=Oops! help=Help @@ -173,6 +175,7 @@ adminUserSettings.demoUser=Demogebruiker (geen aangepaste instellingen) adminUserSettings.internalApiUser=Internal API User adminUserSettings.forceChange=Forceer gebruiker om gebruikersnaam/wachtwoord te wijzigen bij inloggen adminUserSettings.submit=Gebruiker opslaan +adminUserSettings.changeUserRole=De rol van de gebruiker wijzigen ############# # HOME-PAGE # diff --git a/src/main/resources/messages_pl_PL.properties b/src/main/resources/messages_pl_PL.properties index 4f8b5470..ee96d34f 100644 --- a/src/main/resources/messages_pl_PL.properties +++ b/src/main/resources/messages_pl_PL.properties @@ -57,6 +57,8 @@ usernameExistsMessage=New Username already exists. invalidUsernameMessage=Invalid username, Username must only contain alphabet characters and numbers. deleteCurrentUserMessage=Cannot delete currently logged in user. deleteUsernameExistsMessage=The username does not exist and cannot be deleted. +downgradeCurrentUserMessage=Nie można obniżyć roli bieżącego użytkownika +downgradeCurrentUserLongMessage=Nie można obniżyć roli bieżącego użytkownika. W związku z tym bieżący użytkownik nie zostanie wyświetlony. error=Error oops=Oops! help=Help @@ -173,6 +175,7 @@ adminUserSettings.demoUser=Demo User (No custom settings) adminUserSettings.internalApiUser=Internal API User adminUserSettings.forceChange=Force user to change password on login adminUserSettings.submit=Save User +adminUserSettings.changeUserRole=Zmień rolę użytkownika ############# # HOME-PAGE # diff --git a/src/main/resources/messages_pt_BR.properties b/src/main/resources/messages_pt_BR.properties index c6dc2215..715615e4 100644 --- a/src/main/resources/messages_pt_BR.properties +++ b/src/main/resources/messages_pt_BR.properties @@ -57,6 +57,8 @@ usernameExistsMessage=New Username already exists. invalidUsernameMessage=Invalid username, Username must only contain alphabet characters and numbers. deleteCurrentUserMessage=Cannot delete currently logged in user. deleteUsernameExistsMessage=The username does not exist and cannot be deleted. +downgradeCurrentUserMessage=Não é possível fazer downgrade da função do usuário atual +downgradeCurrentUserLongMessage=Não é possível fazer downgrade da função do usuário atual. Portanto, o usuário atual não será mostrado. error=Error oops=Oops! help=Help @@ -173,6 +175,7 @@ adminUserSettings.demoUser=Demo User (No custom settings) adminUserSettings.internalApiUser=Internal API User adminUserSettings.forceChange=Force user to change password on login adminUserSettings.submit=Save User +adminUserSettings.changeUserRole=Alterar Função de Usuário ############# # HOME-PAGE # diff --git a/src/main/resources/messages_pt_PT.properties b/src/main/resources/messages_pt_PT.properties index ecbeba35..7a5541e2 100644 --- a/src/main/resources/messages_pt_PT.properties +++ b/src/main/resources/messages_pt_PT.properties @@ -57,6 +57,8 @@ usernameExistsMessage=Esse utilizador já existe. invalidUsernameMessage=Invalid username, Username must only contain alphabet characters and numbers. deleteCurrentUserMessage=Cannot delete currently logged in user. deleteUsernameExistsMessage=The username does not exist and cannot be deleted. +downgradeCurrentUserMessage=Não é possível fazer downgrade da função do utilizador atual +downgradeCurrentUserLongMessage=Não é possível fazer downgrade da função do utilizador atual. Portanto, o utilizador atual não será mostrado. error=Error oops=Oops! help=Help @@ -173,6 +175,7 @@ adminUserSettings.demoUser=Demo User (No custom settings) adminUserSettings.internalApiUser=Internal API User adminUserSettings.forceChange=Force user to change password on login adminUserSettings.submit=Save User +adminUserSettings.changeUserRole=Alterar usuário ############# # HOME-PAGE # diff --git a/src/main/resources/messages_ro_RO.properties b/src/main/resources/messages_ro_RO.properties index 573cce94..55f5e3d9 100644 --- a/src/main/resources/messages_ro_RO.properties +++ b/src/main/resources/messages_ro_RO.properties @@ -57,6 +57,8 @@ usernameExistsMessage=New Username already exists. invalidUsernameMessage=Invalid username, Username must only contain alphabet characters and numbers. deleteCurrentUserMessage=Cannot delete currently logged in user. deleteUsernameExistsMessage=The username does not exist and cannot be deleted. +downgradeCurrentUserMessage=Rolul utilizatorului curent nu poate fi retrogradat +downgradeCurrentUserLongMessage=Rolul utilizatorului curent nu poate fi retrogradat. Prin urmare, utilizatorul curent nu va fi afișat. error=Error oops=Oops! help=Help @@ -173,6 +175,7 @@ adminUserSettings.demoUser=Demo User (No custom settings) adminUserSettings.internalApiUser=Internal API User adminUserSettings.forceChange=Force user to change password on login adminUserSettings.submit=Save User +adminUserSettings.changeUserRole=Schimbați rolul utilizatorului ############# # HOME-PAGE # diff --git a/src/main/resources/messages_ru_RU.properties b/src/main/resources/messages_ru_RU.properties index 9a4c3428..fc7f3965 100644 --- a/src/main/resources/messages_ru_RU.properties +++ b/src/main/resources/messages_ru_RU.properties @@ -57,6 +57,8 @@ usernameExistsMessage=Новое имя пользователя уже суще invalidUsernameMessage=Недопустимое имя пользователя, Имя пользователя должно содержать только буквы алфавита и цифры. deleteCurrentUserMessage=Невозможно удалить пользователя, вошедшего в систему. deleteUsernameExistsMessage=Имя пользователя не существует и не может быть удалено. +downgradeCurrentUserMessage=Невозможно понизить роль текущего пользователя +downgradeCurrentUserLongMessage=Невозможно понизить роль текущего пользователя. Следовательно, текущий пользователь не будет отображаться. error=Ошибка oops=Ой! help=Помощь @@ -173,6 +175,7 @@ adminUserSettings.demoUser=Демо-пользователь (без настр adminUserSettings.internalApiUser=Внутренний пользователь API adminUserSettings.forceChange=Просить пользователя изменить пароль при входе в систему adminUserSettings.submit=Сохранить пользователя +adminUserSettings.changeUserRole=Изменить роль пользователя ############# # HOME-PAGE # diff --git a/src/main/resources/messages_sr_LATN_RS.properties b/src/main/resources/messages_sr_LATN_RS.properties index cf2613b0..07c32db3 100644 --- a/src/main/resources/messages_sr_LATN_RS.properties +++ b/src/main/resources/messages_sr_LATN_RS.properties @@ -57,6 +57,8 @@ usernameExistsMessage=Novi korisnik već postoji invalidUsernameMessage=Invalid username, Username must only contain alphabet characters and numbers. deleteCurrentUserMessage=Cannot delete currently logged in user. deleteUsernameExistsMessage=The username does not exist and cannot be deleted. +downgradeCurrentUserMessage=Nije moguće degradirati ulogu trenutnog korisnika +downgradeCurrentUserLongMessage=Nije moguće unazaditi ulogu trenutnog korisnika. Dakle, trenutni korisnik neće biti prikazan. error=Error oops=Oops! help=Help @@ -173,6 +175,7 @@ adminUserSettings.demoUser=Demo korisnik (Bez prilagođenih podešavanja) adminUserSettings.internalApiUser=Internal API User adminUserSettings.forceChange=Prisili korisnika da promeni korisničko ime/lozinku pri prijavi adminUserSettings.submit=Sačuvaj korisnika +adminUserSettings.changeUserRole=Promenite ulogu korisnika ############# # HOME-PAGE # diff --git a/src/main/resources/messages_sv_SE.properties b/src/main/resources/messages_sv_SE.properties index 26ef9ecb..ac29f553 100644 --- a/src/main/resources/messages_sv_SE.properties +++ b/src/main/resources/messages_sv_SE.properties @@ -57,6 +57,8 @@ usernameExistsMessage=New Username already exists. invalidUsernameMessage=Invalid username, Username must only contain alphabet characters and numbers. deleteCurrentUserMessage=Cannot delete currently logged in user. deleteUsernameExistsMessage=The username does not exist and cannot be deleted. +downgradeCurrentUserMessage=Kan inte nedgradera nuvarande användares roll +downgradeCurrentUserLongMessage=Kan inte nedgradera nuvarande användares roll. Därför kommer den aktuella användaren inte att visas. error=Error oops=Oops! help=Help @@ -173,6 +175,7 @@ adminUserSettings.demoUser=Demo User (No custom settings) adminUserSettings.internalApiUser=Internal API User adminUserSettings.forceChange=Force user to change password on login adminUserSettings.submit=Save User +adminUserSettings.changeUserRole=Ändra användarens roll ############# # HOME-PAGE # diff --git a/src/main/resources/messages_tr_TR.properties b/src/main/resources/messages_tr_TR.properties index d5e02c13..c8d3bab6 100644 --- a/src/main/resources/messages_tr_TR.properties +++ b/src/main/resources/messages_tr_TR.properties @@ -57,6 +57,8 @@ usernameExistsMessage=Yeni Kullanıcı Adı zaten var. invalidUsernameMessage=Geçersiz kullanıcı adı, Kullanıcı adı yalnızca alfabe karakterleri ve sayılar içermelidir. deleteCurrentUserMessage=Şu anda oturum açmış olan kullanıcı silinemiyor. deleteUsernameExistsMessage=Kullanıcı adı mevcut değil ve silinemez. +downgradeCurrentUserMessage=Mevcut kullanıcının rolü düşürülemiyor +downgradeCurrentUserLongMessage=Mevcut kullanıcının rolü düşürülemiyor. Bu nedenle, mevcut kullanıcı gösterilmeyecektir. error=Hata oops=Tüh! help=Yardım @@ -173,6 +175,7 @@ adminUserSettings.demoUser=Demo Kullanıcısı (Özel ayar yok) adminUserSettings.internalApiUser=Dahili API Kullanıcısı adminUserSettings.forceChange=Kullanıcının girişte kullanıcı adı/şifre değiştirmesini zorla adminUserSettings.submit=Kullanıcıyı Kaydet +adminUserSettings.changeUserRole=Kullanıcı rolünü değiştir ############# # HOME-PAGE # diff --git a/src/main/resources/messages_uk_UA.properties b/src/main/resources/messages_uk_UA.properties index d5800ebc..6cd0ace0 100644 --- a/src/main/resources/messages_uk_UA.properties +++ b/src/main/resources/messages_uk_UA.properties @@ -57,6 +57,8 @@ usernameExistsMessage=Нове ім'я користувача вже існує. invalidUsernameMessage=Недійсне ім'я користувача, Ім'я користувача повинно містити тільки літери алфавіту та цифри. deleteCurrentUserMessage=Неможливо видалити користувача, який увійшов в систему. deleteUsernameExistsMessage=Ім'я користувача не існує і не може бути видалено. +downgradeCurrentUserMessage=Неможливо понизити роль поточного користувача +downgradeCurrentUserLongMessage=Неможливо понизити роль поточного користувача. Отже, поточний користувач не відображатиметься. error=Error oops=Oops! help=Help @@ -173,6 +175,7 @@ adminUserSettings.demoUser=Демо-користувач (без налашто adminUserSettings.internalApiUser=Внутрішній користувач API adminUserSettings.forceChange=Примусити користувача змінити пароль при вході в систему adminUserSettings.submit=Зберегти користувача +adminUserSettings.changeUserRole=Змінити роль користувача ############# # HOME-PAGE # diff --git a/src/main/resources/messages_zh_CN.properties b/src/main/resources/messages_zh_CN.properties index aefc95da..7ea7ed55 100644 --- a/src/main/resources/messages_zh_CN.properties +++ b/src/main/resources/messages_zh_CN.properties @@ -57,6 +57,8 @@ usernameExistsMessage=新用户名已存在。 invalidUsernameMessage=用户名无效,用户名只能由字母字符和数字组成。 deleteCurrentUserMessage=无法删除当前登录的用户。 deleteUsernameExistsMessage=用户名不存在,无法删除。 +downgradeCurrentUserMessage=无法降级当前用户的角色 +downgradeCurrentUserLongMessage=无法降级当前用户的角色。因此,当前用户将不会显示。 error=错误 oops=哎呀! help=帮助 @@ -173,6 +175,7 @@ adminUserSettings.demoUser=演示用户(无自定义设置) adminUserSettings.internalApiUser=内部API用户 adminUserSettings.forceChange=强制用户在登录时更改用户名/密码 adminUserSettings.submit=保存用户 +adminUserSettings.changeUserRole=更改用户角色 ############# # HOME-PAGE # diff --git a/src/main/resources/messages_zh_TW.properties b/src/main/resources/messages_zh_TW.properties index 54a73109..2c089b13 100644 --- a/src/main/resources/messages_zh_TW.properties +++ b/src/main/resources/messages_zh_TW.properties @@ -57,6 +57,8 @@ usernameExistsMessage=新使用者名稱已存在。 invalidUsernameMessage=使用者名無效,使用者名只能包含字母字元和數位。 deleteCurrentUserMessage=無法刪除目前登錄的使用者。 deleteUsernameExistsMessage=使用者名不存在,無法刪除。 +downgradeCurrentUserMessage=無法降級目前使用者的角色 +downgradeCurrentUserLongMessage=無法降級目前使用者的角色。因此,不會顯示目前的使用者。 error=錯誤 oops=哎呀! help=幫助 @@ -173,6 +175,7 @@ adminUserSettings.demoUser=示範用途的使用者(無自訂設定) adminUserSettings.internalApiUser=內部 API 使用者 adminUserSettings.forceChange=強制使用者在登入時修改使用者名稱/密碼 adminUserSettings.submit=儲存 +adminUserSettings.changeUserRole=更改使用者身份 ############# # HOME-PAGE # diff --git a/src/main/resources/templates/addUsers.html b/src/main/resources/templates/addUsers.html index 850beb9e..d5fb14ee 100644 --- a/src/main/resources/templates/addUsers.html +++ b/src/main/resources/templates/addUsers.html @@ -58,6 +58,7 @@
@@ -66,6 +67,32 @@ + + + +
+

Change User's Role

+ +
+ Username not found + Cannot downgrade current user's role +
+
+
+ + +
+
+ + +
+
@@ -73,6 +100,11 @@ +