From 06bba15fef7b13d69b657b322ef61a3ed75b99f0 Mon Sep 17 00:00:00 2001 From: Jens Pelzetter Date: Wed, 30 Sep 2020 21:06:47 +0200 Subject: [PATCH] Bugfixes users administration Former-commit-id: 3fc63650cc5a737644e9979415bae59ff64bf01a --- .../usersgroupsroles/UserDetailsModel.java | 28 +++++++ .../usersgroupsroles/UserFormController.java | 22 +++++ .../usersgroupsroles/UserRolesFormEntry.java | 69 ++++++++++++++++ .../usersgroupsroles/UsersController.java | 1 + .../UsersGroupsRolesPage.java | 1 + .../users-groups-roles/user-details.xhtml | 82 ++++++++++++++++--- .../admin/users-groups-roles/user-form.xhtml | 36 ++++---- .../ui/admin/users-groups-roles/users.xhtml | 5 +- .../org/libreccm/ui/AdminBundle.properties | 6 +- .../org/libreccm/ui/AdminBundle_de.properties | 42 +++++----- 10 files changed, 243 insertions(+), 49 deletions(-) create mode 100644 ccm-core/src/main/java/org/libreccm/ui/admin/usersgroupsroles/UserRolesFormEntry.java diff --git a/ccm-core/src/main/java/org/libreccm/ui/admin/usersgroupsroles/UserDetailsModel.java b/ccm-core/src/main/java/org/libreccm/ui/admin/usersgroupsroles/UserDetailsModel.java index 2dcd27e1b..cc5371138 100644 --- a/ccm-core/src/main/java/org/libreccm/ui/admin/usersgroupsroles/UserDetailsModel.java +++ b/ccm-core/src/main/java/org/libreccm/ui/admin/usersgroupsroles/UserDetailsModel.java @@ -22,7 +22,9 @@ import org.libreccm.core.EmailAddress; import org.libreccm.security.Group; import org.libreccm.security.GroupMembership; import org.libreccm.security.GroupRepository; +import org.libreccm.security.Role; import org.libreccm.security.RoleMembership; +import org.libreccm.security.RoleRepository; import org.libreccm.security.User; import org.libreccm.ui.Message; @@ -47,6 +49,9 @@ public class UserDetailsModel { @Inject private GroupRepository groupRepository; + + @Inject + private RoleRepository roleRepository; private long userId; @@ -166,6 +171,14 @@ public class UserDetailsModel { public List getRoles() { return Collections.unmodifiableList(roles); } + + public List getUserRolesFormEntries() { + return roleRepository + .findAll() + .stream() + .map(this::buildUserRolesFormEntry) + .collect(Collectors.toList()); + } public boolean isNewUser() { return userId == 0; @@ -185,4 +198,19 @@ public class UserDetailsModel { ); return entry; } + + private UserRolesFormEntry buildUserRolesFormEntry(final Role role) { + final UserRolesFormEntry entry = new UserRolesFormEntry(); + entry.setRoleId(role.getRoleId()); + entry.setRoleName(role.getName()); + entry.setRoleUuid(role.getUuid()); + entry.setMember( + roles + .stream() + .anyMatch( + membership -> membership.getRoleUuid().equals(role.getUuid()) + ) + ); + return entry; + } } diff --git a/ccm-core/src/main/java/org/libreccm/ui/admin/usersgroupsroles/UserFormController.java b/ccm-core/src/main/java/org/libreccm/ui/admin/usersgroupsroles/UserFormController.java index 2c713a3ed..677bc41c1 100644 --- a/ccm-core/src/main/java/org/libreccm/ui/admin/usersgroupsroles/UserFormController.java +++ b/ccm-core/src/main/java/org/libreccm/ui/admin/usersgroupsroles/UserFormController.java @@ -228,5 +228,27 @@ public class UserFormController { ) ); } + + @POST + @Path("{userIdentifier}/roles") + @AuthorizationRequired + @RequiresPrivilege(CoreConstants.PRIVILEGE_ADMIN) + @Transactional(Transactional.TxType.REQUIRED) + public String updateRoleMemberships( + @PathParam("userIdentifier") final String userIdentifierParam, + @FormParam("userRoles") final String[] userRoles + ) { + // ToDo + return String.format( + "redirect:%s", + mvc.uri( + String.format( + "UsersController#getUserDetails", + "{userIdentifier: %s}", + userIdentifierParam + ) + ) + ); + } } diff --git a/ccm-core/src/main/java/org/libreccm/ui/admin/usersgroupsroles/UserRolesFormEntry.java b/ccm-core/src/main/java/org/libreccm/ui/admin/usersgroupsroles/UserRolesFormEntry.java new file mode 100644 index 000000000..2332c3adc --- /dev/null +++ b/ccm-core/src/main/java/org/libreccm/ui/admin/usersgroupsroles/UserRolesFormEntry.java @@ -0,0 +1,69 @@ +/* + * Copyright (C) 2020 LibreCCM Foundation. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, + * MA 02110-1301 USA + */ +package org.libreccm.ui.admin.usersgroupsroles; + +/** + * + * @author Jens Pelzetter + */ +public class UserRolesFormEntry { + + private long roleId; + + private String roleUuid; + + private String roleName; + + private boolean member; + + public long getRoleId() { + return roleId; + } + + public void setRoleId(final long roleId) { + this.roleId = roleId; + } + + public String getRoleUuid() { + return roleUuid; + } + + public void setRoleUuid(final String roleUuid) { + this.roleUuid = roleUuid; + } + + public String getRoleName() { + return roleName; + } + + public void setRoleName(final String roleName) { + this.roleName = roleName; + } + + public boolean isMember() { + return member; + } + + public void setMember(final boolean member) { + this.member = member; + } + + + +} diff --git a/ccm-core/src/main/java/org/libreccm/ui/admin/usersgroupsroles/UsersController.java b/ccm-core/src/main/java/org/libreccm/ui/admin/usersgroupsroles/UsersController.java index f13121cd9..72308a5ff 100644 --- a/ccm-core/src/main/java/org/libreccm/ui/admin/usersgroupsroles/UsersController.java +++ b/ccm-core/src/main/java/org/libreccm/ui/admin/usersgroupsroles/UsersController.java @@ -142,6 +142,7 @@ public class UsersController { @Path("/{userIdentifier}/edit") @AuthorizationRequired @RequiresPrivilege(CoreConstants.PRIVILEGE_ADMIN) + @Transactional(Transactional.TxType.REQUIRED) public String editUser( @PathParam("userIdentifier") final String userIdentifierParam ) { diff --git a/ccm-core/src/main/java/org/libreccm/ui/admin/usersgroupsroles/UsersGroupsRolesPage.java b/ccm-core/src/main/java/org/libreccm/ui/admin/usersgroupsroles/UsersGroupsRolesPage.java index bf32b3afd..e770cd38a 100644 --- a/ccm-core/src/main/java/org/libreccm/ui/admin/usersgroupsroles/UsersGroupsRolesPage.java +++ b/ccm-core/src/main/java/org/libreccm/ui/admin/usersgroupsroles/UsersGroupsRolesPage.java @@ -40,6 +40,7 @@ public class UsersGroupsRolesPage implements AdminPage { classes.add(GroupsController.class); classes.add(RolesController.class); classes.add(UsersController.class); + classes.add(UserFormController.class); return classes; } diff --git a/ccm-core/src/main/resources/WEB-INF/views/org/libreccm/ui/admin/users-groups-roles/user-details.xhtml b/ccm-core/src/main/resources/WEB-INF/views/org/libreccm/ui/admin/users-groups-roles/user-details.xhtml index d42af0124..af6a2178b 100644 --- a/ccm-core/src/main/resources/WEB-INF/views/org/libreccm/ui/admin/users-groups-roles/user-details.xhtml +++ b/ccm-core/src/main/resources/WEB-INF/views/org/libreccm/ui/admin/users-groups-roles/user-details.xhtml @@ -45,7 +45,7 @@
#{UserDetailsModel.givenName}
-
#{AdminMessages['usergroupsroles.users.user_details.family name']}
+
#{AdminMessages['usergroupsroles.users.user_details.family_name']}
#{UserDetailsModel.familyName}
@@ -118,7 +118,8 @@
- +