protected void addUserToGroup(NuxeoPrincipal principal, NuxeoGroup group) { UserManager userManager = Framework.getService(UserManager.class); if (!BaseSession.isReadOnlyEntry(principal.getModel())) { // we can write to the principal List<String> groups = principal.getGroups(); if (groups == null) { groups = new ArrayList<>(); } String groupName = group.getName(); if (!groups.contains(groupName)) { groups.add(groupName); principal.setGroups(groups); userManager.updateUser(principal.getModel()); } } else { // principal is read-only, update through the group instead List<String> users = group.getMemberUsers(); if (users == null) { users = new ArrayList<>(); } String userName = principal.getName(); if (!users.contains(userName)) { users.add(userName); group.setMemberUsers(users); userManager.updateGroup(group.getModel()); } } }
protected void removeUserFromGroup(NuxeoPrincipal principal, NuxeoGroup group) { UserManager userManager = Framework.getService(UserManager.class); if (!BaseSession.isReadOnlyEntry(principal.getModel())) { // we can write to the principal List<String> groups = principal.getGroups(); if (groups == null) { groups = new ArrayList<>(); } String groupName = group.getName(); if (groups.contains(groupName)) { groups.remove(groupName); principal.setGroups(groups); userManager.updateUser(principal.getModel()); } } else { // principal is read-only, update through the group instead List<String> users = group.getMemberUsers(); if (users == null) { users = new ArrayList<>(); } String userName = principal.getName(); if (users.contains(userName)) { users.remove(userName); group.setMemberUsers(users); userManager.updateGroup(group.getModel()); } } }