diff --git a/changelog/v2.4/ISSUE_355.md b/changelog/v2.4/ISSUE_355.md new file mode 100644 index 00000000..378df213 --- /dev/null +++ b/changelog/v2.4/ISSUE_355.md @@ -0,0 +1,29 @@ +# ISSUE_355 - Bouton de navigation manquant sur la page des groupes + +## Status: ✅ CONFORME + +### Issue Description +Sur la page de gestion des groupes (`/userGroups`), il manquait un bouton « Utilisateurs » +permettant de revenir à la page « Utilisateurs et droits ». La page utilisateurs dispose +déjà d'un bouton « Groupes » symétrique ; la navigation n'était possible que dans un sens +sans repasser par le menu. + +### Acceptance Criteria +| Identifiant | Description | +| --- | --- | +| 355-1 | Le nouveau bouton est implémenté comme dans la maquette et est fonctionnel (allers/retours possibles entre groupes et utilisateurs sans passer par le menu) | + +### Implementation Completed +1. Ajout d'un bouton « Utilisateurs » dans `templates/pages/userGroups/list.html`, pointant + vers `/users`, calqué sur le bouton « Groupes » existant de la page utilisateurs + (style `btn-extract-white`, icône `fa-user`). +2. Externalisation du libellé via la nouvelle clé i18n `userGroupsList.users.button`, + disponible en **français** (Utilisateurs), **allemand** (Benutzer) et anglais (Users). + +### Tests +- `UserGroupManagementIntegrationTest` : nouveau test `5.1b` vérifiant que la page + `/userGroups` rend bien le bouton de navigation vers `/users`. + +### Conclusion +Le critère 355-1 est satisfait : la navigation aller/retour entre groupes et utilisateurs +est possible sans passer par le menu. diff --git a/extract/src/main/resources/messages_de.properties b/extract/src/main/resources/messages_de.properties index 90fcd746..b3c32ef9 100644 --- a/extract/src/main/resources/messages_de.properties +++ b/extract/src/main/resources/messages_de.properties @@ -507,6 +507,7 @@ userGroupDetails.page.title.edit=Bearbeitung der Benutzergruppe "{0}" #User groups list page userGroupsList.body.title=Benutzergruppen userGroupsList.new.button=Neue Gruppe +userGroupsList.users.button=Benutzer userGroupsList.buttons.delete.active.tooltip=Diese Gruppe löschen userGroupsList.buttons.delete.inactive.tooltip=Diese Gruppe kann nicht gelöscht werden, da sie mindestens einer Verarbeitung zugewiesen ist. userGroupsList.errors.userGroup.delete.failed=Bei der Löschung der Benutzergruppe ist ein Fehler aufgetreten. Bitte versuchen Sie es später erneut. diff --git a/extract/src/main/resources/messages_en.properties b/extract/src/main/resources/messages_en.properties index a9a8df83..51ba10a1 100644 --- a/extract/src/main/resources/messages_en.properties +++ b/extract/src/main/resources/messages_en.properties @@ -503,6 +503,7 @@ userGroupDetails.page.title.edit=Editing user group "{0}" #User groups list page userGroupsList.body.title=User groups userGroupsList.new.button=New group +userGroupsList.users.button=Users userGroupsList.buttons.delete.active.tooltip=Delete this group userGroupsList.buttons.delete.inactive.tooltip=This group cannot be deleted because it is assigned to at least one process. userGroupsList.errors.userGroup.delete.failed=An error occurred while deleting the user group. Please try again later. diff --git a/extract/src/main/resources/messages_fr.properties b/extract/src/main/resources/messages_fr.properties index f746555d..59168173 100644 --- a/extract/src/main/resources/messages_fr.properties +++ b/extract/src/main/resources/messages_fr.properties @@ -506,6 +506,7 @@ userGroupDetails.page.title.edit=\u00c9dition du groupe d'utilisateurs "{0}" #User groups list page userGroupsList.body.title=Groupes d'utilisateurs userGroupsList.new.button=Nouveau groupe +userGroupsList.users.button=Utilisateurs userGroupsList.buttons.delete.active.tooltip=Supprimer ce groupe userGroupsList.buttons.delete.inactive.tooltip=Ce groupe ne peut pas \u00eatre supprim\u00e9 car il est affect\u00e9 \u00e0 au moins un traitement. userGroupsList.errors.userGroup.delete.failed=Une erreur s'est produite lors de la suppression du groupe d'utilisateurs. Veuillez r\u00e9essayer plus tard. diff --git a/extract/src/main/resources/templates/pages/userGroups/list.html b/extract/src/main/resources/templates/pages/userGroups/list.html index 8396c45d..bd858111 100644 --- a/extract/src/main/resources/templates/pages/userGroups/list.html +++ b/extract/src/main/resources/templates/pages/userGroups/list.html @@ -12,6 +12,11 @@
+ + + {Users} + diff --git a/extract/src/test/java/ch/asit_asso/extract/integration/users/UserGroupManagementIntegrationTest.java b/extract/src/test/java/ch/asit_asso/extract/integration/users/UserGroupManagementIntegrationTest.java index 3153a91b..dbfad875 100644 --- a/extract/src/test/java/ch/asit_asso/extract/integration/users/UserGroupManagementIntegrationTest.java +++ b/extract/src/test/java/ch/asit_asso/extract/integration/users/UserGroupManagementIntegrationTest.java @@ -36,6 +36,7 @@ import java.util.Set; import java.util.stream.Collectors; +import static org.hamcrest.Matchers.containsString; import static org.junit.jupiter.api.Assertions.*; import static org.springframework.security.test.web.servlet.request.SecurityMockMvcRequestPostProcessors.csrf; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; @@ -459,6 +460,18 @@ void adminCanViewGroupList() throws Exception { .andExpect(model().attributeExists("userGroups")); } + @Test + @DisplayName("5.1b - Group list shows a navigation button back to the users page (issue #355)") + @WithMockApplicationUser(username = "admin", userId = 2, role = "ADMIN") + void groupListShowsUsersNavigationButton() throws Exception { + mockMvc.perform(get("/userGroups")) + .andExpect(status().isOk()) + .andExpect(view().name("userGroups/list")) + // The white button is unique to this navigation link (not used in the layout/menu) + .andExpect(content().string(containsString("btn-extract-white"))) + .andExpect(content().string(containsString("href=\"/users\""))); + } + @Test @DisplayName("5.2 - Operator cannot view group list") @WithMockApplicationUser(username = "operator", userId = 10, role = "OPERATOR")