protected boolean moveSelectedUsersToGroup(UserGroupChangedEvent event) { List<UUID> userIds = event.getUsers().stream() .map(BaseUuidEntity::getId) .collect(Collectors.toList()); if (userManagementService.moveUsersToGroup(userIds, event.getGroup().getId()) != 0) { usersTable.getDatasource().refresh(); return true; } return false; }
public void copyGroup() { Group group = groupsDs.getItem(); if (group != null) { userManagementService.copyAccessGroup(group.getId()); groupsDs.refresh(); } }
protected void addSpecificSuggestions(SourceCodeEditor sender, String text, int cursorPosition, List<Suggestion> suggestions) { if (cursorPosition <= 0) return; int colonIdx = text.substring(0, cursorPosition).lastIndexOf(":"); if (colonIdx < 0) return; List<String> strings = new ArrayList<>(); strings.add(SESSION_PREFIX + "userGroupId"); strings.add(SESSION_PREFIX + "userId"); strings.add(SESSION_PREFIX + "userLogin"); if (PersistenceHelper.isLoaded(getItem(), "group") && getItem().getGroup() != null) { List<String> attributeNames = userManagementService.getSessionAttributeNames(getItem().getGroup().getId()); for (String name : attributeNames) { strings.add(SESSION_PREFIX + name); } } Collections.sort(strings); String entered = text.substring(colonIdx + 1, cursorPosition); for (String string : strings) { if (string.startsWith(entered)) { suggestions.add(new Suggestion(sender.getAutoCompleteSupport(), string, string.substring(entered.length()), "", cursorPosition, cursorPosition)); } } }
protected void compileConstraints(UserSession session, Group group) { EntityManager em = persistence.getEntityManager(); TypedQuery<Constraint> q = em.createQuery("select c from sec$GroupHierarchy h join h.parent.constraints c " + "where h.group.id = ?1", Constraint.class); q.setParameter(1, group.getId()); List<Constraint> constraints = q.getResultList(); List<Constraint> list = new ArrayList<>(constraints); list.addAll(group.getConstraints()); for (Constraint constraint : list) { if (Boolean.TRUE.equals(constraint.getIsActive())) { session.addConstraint(constraint); } } }
protected void excludeItem(Group group, boolean excludeChildren) { if (excludeChildren) { for (UUID childId : groupsDs.getChildren(group.getId())) { excludeItem(groupsDs.getItem(childId), true); } } groupsDs.excludeItem(group); } }
protected void moveUsersToGroup(Set<User> selected) { Map<String, Object> lookupParams = ParamsMap.of( "exclude", groupsTree.getSelected().iterator().next(), "excludeChildren", false); AbstractLookup lookupWindow = openLookup(Group.class, items -> { if (items.size() == 1) { Group group = (Group) items.iterator().next(); List<UUID> usersForModify = new ArrayList<>(); for (User user : selected) { usersForModify.add(user.getId()); } userManagementService.moveUsersToGroup(usersForModify, group.getId()); if (selected.size() == 1) { User user = selected.iterator().next(); showNotification(formatMessage("userMovedToGroup", user.getLogin(), group.getName())); } else { showNotification(formatMessage("usersMovedToGroup", group.getName())); } usersTable.getDatasource().refresh(); } }, OpenType.DIALOG, lookupParams); lookupWindow.addCloseListener(actionId -> usersTable.requestFocus() ); }
treeGridDragSource.setDragDataGenerator(TRANSFER_DATA_TYPE, group -> group.getId().toString()); if (targetGroup.getId().equals(draggedGroup.getId())) { return; && (draggedGroup.getParent().getId().equals(targetGroup.getId()))) { return; groupChangeEventHandler.accept(new GroupChangeEvent(groupsTree, draggedGroup.getId(), targetGroup.getId())); groupChangeEventHandler.accept(new GroupChangeEvent(groupsTree, draggedGroup.getId(), null));
protected void compileSessionAttributes(UserSession session, Group group) { List<SessionAttribute> list = new ArrayList<>(group.getSessionAttributes()); EntityManager em = persistence.getEntityManager(); TypedQuery<SessionAttribute> q = em.createQuery("select a from sec$GroupHierarchy h join h.parent.sessionAttributes a " + "where h.group.id = ?1 order by h.level desc", SessionAttribute.class); q.setParameter(1, group.getId()); List<SessionAttribute> attributes = q.getResultList(); list.addAll(attributes); for (SessionAttribute attribute : list) { Datatype datatype = Datatypes.get(attribute.getDatatype()); try { if (session.getAttributeNames().contains(attribute.getName())) { log.warn("Duplicate definition of '{}' session attribute in the group hierarchy", attribute.getName()); } Serializable value = (Serializable) datatype.parse(attribute.getStringValue()); if (value != null) session.setAttribute(attribute.getName(), value); else session.removeAttribute(attribute.getName()); } catch (ParseException e) { throw new RuntimeException("Unable to set session attribute " + attribute.getName(), e); } } }
@Override public void setQueryParam(Query query, String paramName) { if (paramName.startsWith(CONSTRAINT_PARAM_SESSION_ATTR)) { UserSession userSession = userSessionSource.getUserSession(); String attrName = paramName.substring(CONSTRAINT_PARAM_SESSION_ATTR.length()); if (CONSTRAINT_PARAM_USER_LOGIN.equals(attrName)) { String userLogin = userSession.getSubstitutedUser() != null ? userSession.getSubstitutedUser().getLogin() : userSession.getUser().getLogin(); query.setParameter(paramName, userLogin); } else if (CONSTRAINT_PARAM_USER_ID.equals(attrName)) { UUID userId = userSession.getSubstitutedUser() != null ? userSession.getSubstitutedUser().getId() : userSession.getUser().getId(); query.setParameter(paramName, userId); } else if (CONSTRAINT_PARAM_USER_GROUP_ID.equals(attrName)) { Object groupId = userSession.getSubstitutedUser() == null ? userSession.getUser().getGroup().getId() : userSession.getSubstitutedUser().getGroup().getId(); query.setParameter(paramName, groupId); } else { Serializable value = userSession.getAttribute(attrName); query.setParameter(paramName, value); } } }
parent = em.find(Group.class, parent.getId()); // refresh parent in case of detached
query.setParameter("groupId", group.getId());
@Override public void onBeforeUpdate(Group entity, EntityManager entityManager) { if (!persistence.getTools().getDirtyFields(entity).contains("parent")) return; EntityManager em = persistence.getEntityManager(); for (GroupHierarchy oldHierarchy : entity.getHierarchyList()) { em.remove(oldHierarchy); } createNewHierarchy(entity, entity.getParent()); TypedQuery<GroupHierarchy> q = em.createQuery( "select h from sec$GroupHierarchy h join fetch h.group " + "where h.parent.id = ?1", GroupHierarchy.class); q.setParameter(1, entity.getId()); List<GroupHierarchy> list = q.getResultList(); for (GroupHierarchy hierarchy : list) { Group dependentGroup = hierarchy.getGroup(); for (GroupHierarchy depHierarchy : dependentGroup.getHierarchyList()) { em.remove(depHierarchy); } em.remove(hierarchy); createNewHierarchy(dependentGroup, dependentGroup.getParent()); } } }