/** * Gets collections as map of collectionID => Group. * * @return Map of collection IDs to group. */ private Map<String, Group> getCollectionIDsToGroupsMap (PerunSession session, Perun perun, Group collectionsGroup) throws GroupNotExistsException, WrongAttributeAssignmentException, InternalErrorException, AttributeNotExistsException, PrivilegeException { Map<String, Group> collectionIDsToGroupMap = new HashMap<>(); for (Group group : perun.getGroupsManager().getSubGroups(session, collectionsGroup)) { for (Group subgroup : perun.getGroupsManager().getSubGroups(session, group)) { if (REPRESENTATIVES_GROUP_NAME.equals(subgroup.getShortName())) { Attribute collectionID = perun.getAttributesManager().getAttribute(session, subgroup, COLLECTION_ID_ATTR_NAME); collectionIDsToGroupMap.put(collectionID.valueAsString(), subgroup); } } } return collectionIDsToGroupMap; }
/** * Gets collections as map of collectionID => Group. * * @return Map of collection IDs to group. */ private Map<String, Group> getNetworkIDsToGroupsMap (PerunSession session, Perun perun, Group networksGroup) throws GroupNotExistsException, WrongAttributeAssignmentException, InternalErrorException, AttributeNotExistsException, PrivilegeException { Map<String, Group> networkIDsToGroupMap = new HashMap<>(); for (Group group : perun.getGroupsManager().getSubGroups(session, networksGroup)) { for (Group subgroup : perun.getGroupsManager().getSubGroups(session, group)) { if (REPRESENTATIVES_GROUP_NAME.equals(subgroup.getShortName())) { Attribute networkID = perun.getAttributesManager().getAttribute(session, subgroup, NETWORK_ID_ATTR_NAME); networkIDsToGroupMap.put(networkID.valueAsString(), subgroup); } } } return networkIDsToGroupMap; }
@Override public Application approveApplication(PerunSession session, Application app) throws PerunException { // Add new member to groups eduroam-admin and eduroam-announce just if its initial application form if (Application.AppType.INITIAL.equals(app.getType())) { // Get perun and beans from session Perun perun = session.getPerun(); Vo vo = app.getVo(); User user = app.getUser(); Member member = perun.getMembersManager().getMemberByUser(session, vo, user); // Get the groups in which the new member of VO will be automatically added Group eduroamAdmin = perun.getGroupsManager().getGroupByName(session, vo, "eduroam-admin"); Group eduroamAnnounce = perun.getGroupsManager().getGroupByName(session, vo, "eduroam-announce"); // Add member to these groups perun.getGroupsManager().addMember(session, eduroamAdmin, member); perun.getGroupsManager().addMember(session, eduroamAnnounce, member); } return app; }
/** * Checks whether all collection IDs found in user input really exists in Perun. * If not, CantBeApproved exception is thrown. * * @param session who approves the application * @param app unchanged application * @throws CantBeApprovedException if at least one collection ID does not exist in Perun */ public void canBeApproved(PerunSession session, Application app) throws PerunException { // get perun and beans from session Perun perun = session.getPerun(); Vo vo = app.getVo(); // get all collection IDs from Perun Group collectionsGroup = perun.getGroupsManager().getGroupByName(session, vo, COLLECTIONS_GROUP_NAME); Set<String> collectionIDsInPerun = getCollectionIDs(session, perun, collectionsGroup); // get the field of application with the collections Set<String> collectionIDsInApplication = getCollectionIDsFromApplication(session, app); // get non-existing collections collectionIDsInApplication.removeAll(collectionIDsInPerun); // difference must be empty if (!collectionIDsInApplication.isEmpty()) { throw new CantBeApprovedException("Collections " + collectionIDsInApplication + " do not exist." + "If you approve the application, these collections will be skipped.", "", "", "", true); } }
/** * Checks whether all network IDs found in user input really exists in Perun. * If not, CantBeApproved exception is thrown. * * @param session who approves the application * @param app unchanged application * @throws CantBeApprovedException if at least one network ID does not exist in Perun */ public void canBeApproved(PerunSession session, Application app) throws PerunException { // get perun and beans from session Perun perun = session.getPerun(); Vo vo = app.getVo(); // get all network IDs from Perun Group networksGroup = perun.getGroupsManager().getGroupByName(session, vo, NETWORKS_GROUP_NAME); Set<String> neworksIDsInPerun = getNetworkIDs(session, perun, networksGroup); // get the field of application with the collections Set<String> networkIDsInApplication = getNetworkIDsFromApplication(session, app); // get non-existing collections networkIDsInApplication.removeAll(neworksIDsInPerun); // difference must be empty if (!networkIDsInApplication.isEmpty()) { throw new CantBeApprovedException("Networks with IDs: " + networkIDsInApplication + " do not exist." + "If you approve the application, these networks will be skipped.", "", "", "", true); } }
Group collectionsGroup = perun.getGroupsManager().getGroupByName(session, vo, COLLECTIONS_GROUP_NAME); Map<String, Group> collectionIDsToGroupsMap = getCollectionIDsToGroupsMap(session, perun, collectionsGroup); } else { perun.getGroupsManager().addMember(session, group, member); perun.getGroupsManager().removeMember(session, app.getGroup(), member);
Group networksGroup = perun.getGroupsManager().getGroupByName(session, vo, NETWORKS_GROUP_NAME); Map<String, Group> networkIDsToGroupsMap = getNetworkIDsToGroupsMap(session, perun, networksGroup); log.debug("For network ID: " + networkID + " there is no group in Perun."); } else { perun.getGroupsManager().addMember(session, group, member); perun.getGroupsManager().removeMember(session, app.getGroup(), member);
/** * All new members will be given role VOOBSERVER and TOPGROUPCREATOR */ @Override public Application approveApplication(PerunSession session, Application app) throws PerunException { if (Application.AppType.INITIAL.equals(app.getType())) { Vo vo = app.getVo(); User user = app.getUser(); AuthzResolver.setRole(session, user, vo, Role.TOPGROUPCREATOR); Group membersGroup = session.getPerun().getGroupsManager().getGroupByName(session, vo, "members"); AuthzResolver.setRole(session, user, membersGroup, Role.GROUPADMIN); } return app; }
Group group = perun.getGroupsManager().getGroupByName(session, vo, "storage"); Member mem = perun.getMembersManager().getMemberByUser(session, vo, user); perun.getGroupsManager().addMember(session, group, mem); } catch (AlreadyMemberException ex) { Group group; try { group = perun.getGroupsManager().getGroupByName(session, app.getVo(), statisticGroupName); } catch (GroupNotExistsException ex) { try { Member mem = perun.getMembersManager().getMemberByUser(session, app.getVo(), app.getUser()); perun.getGroupsManager().addMember(session, group, mem); } catch (AlreadyMemberException ex) {