/** * Edit an existing role. The role to edit must be placed in the request attribute * * @param mapping mapping * @param form form * @param request request * @param response response * @return forward * @throws Exception on any error */ public ActionForward edit( ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { Role role = (Role) request.getAttribute(Constants.EDITING_ITEM); if (role == null) { throw new Exception("No role configured for editing."); } PolicyUtil.checkPermission( PolicyConstants.ACCOUNTS_AND_GROUPS_RESOURCE_TYPE, PolicyConstants.PERM_CREATE_EDIT_AND_ASSIGN, request); SessionInfo sessionInfo = getSessionInfo(request); UserDatabase userDatabase = UserDatabaseManager.getInstance().getUserDatabase(sessionInfo.getUser().getRealm()); List<User> users = Arrays.asList(userDatabase.getUsersInRole(role)); RoleForm roleForm = (RoleForm) form; roleForm.initialize(users); roleForm.setRolename(role.getPrincipalName()); roleForm.setReferer(CoreUtil.getReferer(request)); roleForm.setEditing(); CoreUtil.addRequiredFieldMessage(this, request); return mapping.findForward("display"); }
private Role[] removeRole(Role role, Role[] userRoles) { Collection<Role> assignedRoles = new ArrayList<Role>(Arrays.asList(userRoles)); for (Iterator<Role> itr = assignedRoles.iterator(); itr.hasNext(); ) { Role assignedRole = (Role) itr.next(); if (role.getPrincipalName().equals(assignedRole.getPrincipalName())) { itr.remove(); } } return assignedRoles.toArray(new Role[assignedRoles.size()]); }
private void fireSuccessfulEvent( SessionInfo sessionInfo, int eventId, Role role, List<String> selectedUsers) { CoreEvent coreEvent = new CoreEvent(this, eventId, role, sessionInfo); coreEvent.addAttribute(CoreAttributeConstants.EVENT_ATTR_PRINCIPAL_ID, role.getPrincipalName()); if (!selectedUsers.isEmpty()) { for (int index = 0; index < selectedUsers.size(); index++) { String username = selectedUsers.get(index); coreEvent.addAttribute( CoreAttributeConstants.EVENT_ATTR_ACCOUNT + Integer.valueOf(index), username); } } CoreServlet.getServlet().fireCoreEvent(coreEvent); }