private Permissions createPermissions( List<? extends Authority> entityAuthorities, String authorityPrefix) { Permissions permissions = new Permissions(); if (authorityPrefix.equals(SecurityUtils.AUTHORITY_PLUGIN_PREFIX)) { List<MolgenisPlugin> plugins = this.getPlugins(); if (plugins != null) { Collections.sort( plugins, new Comparator<MolgenisPlugin>() { @Override public int compare(MolgenisPlugin o1, MolgenisPlugin o2) { return o1.getName().compareTo(o2.getName()); } }); Map<String, String> pluginMap = new LinkedHashMap<String, String>(); for (MolgenisPlugin plugin : plugins) pluginMap.put(plugin.getId(), plugin.getName()); permissions.setEntityIds(pluginMap); } } else if (authorityPrefix.equals(SecurityUtils.AUTHORITY_ENTITY_PREFIX)) { List<String> entityClassIds = this.getEntityClassIds(); if (entityClassIds != null) { Map<String, String> entityClassMap = new TreeMap<String, String>(); for (String entityClassId : entityClassIds) entityClassMap.put(entityClassId, entityClassId); permissions.setEntityIds(entityClassMap); } } else throw new RuntimeException("Invalid authority prefix [" + authorityPrefix + "]"); for (Authority authority : entityAuthorities) { // add permissions for authorities that match prefix if (authority.getRole().startsWith(authorityPrefix)) { Permission permission = new Permission(); String authorityType = getAuthorityType(authority.getRole(), authorityPrefix); String authorityPluginId = getAuthorityEntityId(authority.getRole(), authorityPrefix); permission.setType(authorityType); if (authority instanceof GroupAuthority) { permission.setGroup(((GroupAuthority) authority).getMolgenisGroup().getName()); permissions.addGroupPermission(authorityPluginId, permission); } else { permissions.addUserPermission(authorityPluginId, permission); } } // add permissions for inherited authorities from authority that match prefix SimpleGrantedAuthority grantedAuthority = new SimpleGrantedAuthority(authority.getRole()); Collection<? extends GrantedAuthority> hierarchyAuthorities = grantedAuthoritiesMapper.mapAuthorities(Collections.singletonList(grantedAuthority)); hierarchyAuthorities.remove(grantedAuthority); for (GrantedAuthority hierarchyAuthority : hierarchyAuthorities) { if (hierarchyAuthority.getAuthority().startsWith(authorityPrefix)) { String authorityPluginId = getAuthorityEntityId(hierarchyAuthority.getAuthority(), authorityPrefix); Permission hierarchyPermission = new Permission(); hierarchyPermission.setType( getAuthorityType(hierarchyAuthority.getAuthority(), authorityPrefix)); permissions.addHierarchyPermission(authorityPluginId, hierarchyPermission); } } } permissions.sort(); return permissions; }
public void setUp() { m_permission = new Permission(); m_permission.setType(Permission.Type.CALL); m_permission.setUniqueId(15); }