Search in sources :

Example 1 with Pair

use of org.molgenis.util.Pair in project molgenis by molgenis.

the class EntityUtils method getReferencingEntityType.

public static List<Pair<EntityType, List<Attribute>>> getReferencingEntityType(EntityType entityType, DataService dataService) {
    List<Pair<EntityType, List<Attribute>>> referencingEntityType = newArrayList();
    // get entity types that referencing the given entity (including self)
    String entityTypeId = entityType.getId();
    dataService.getEntityTypeIds().forEach(otherEntityName -> {
        EntityType otherEntityType = dataService.getEntityType(otherEntityName);
        // get referencing attributes for other entity
        List<Attribute> referencingAttributes = null;
        for (Attribute attribute : otherEntityType.getAtomicAttributes()) {
            EntityType refEntityType = attribute.getRefEntity();
            if (refEntityType != null && refEntityType.getId().equals(entityTypeId)) {
                if (referencingAttributes == null)
                    referencingAttributes = newArrayList();
                referencingAttributes.add(attribute);
            }
        }
        // store references
        if (referencingAttributes != null) {
            referencingEntityType.add(new Pair<>(otherEntityType, referencingAttributes));
        }
    });
    return referencingEntityType;
}
Also used : EntityType(org.molgenis.data.meta.model.EntityType) Attribute(org.molgenis.data.meta.model.Attribute) Pair(org.molgenis.util.Pair)

Example 2 with Pair

use of org.molgenis.util.Pair in project molgenis by molgenis.

the class PermissionRegistryImpl method getPermissions.

@Override
public Multimap<ObjectIdentity, Pair<Permission, Sid>> getPermissions() {
    ImmutableMultimap.Builder<ObjectIdentity, Pair<Permission, Sid>> mapBuilder = new ImmutableMultimap.Builder<>();
    Group allUsersGroup = dataService.query(GROUP, Group.class).eq(NAME, ALL_USER_GROUP).findOne();
    Sid allUsersGroupSid = createSid(allUsersGroup);
    ObjectIdentity pluginIdentity = new PluginIdentity(UserAccountController.ID);
    mapBuilder.putAll(pluginIdentity, new Pair<>(PluginPermission.READ, allUsersGroupSid));
    dataService.findAll(ENTITY_TYPE_META_DATA, Stream.of(ENTITY_TYPE_META_DATA, ATTRIBUTE_META_DATA, PACKAGE, TAG, LANGUAGE, L10N_STRING, FILE_META, DECORATOR_CONFIGURATION), EntityType.class).forEach(entityType -> {
        ObjectIdentity entityTypeIdentity = new EntityTypeIdentity(entityType);
        Permission entityTypePermissions = EntityTypePermissionUtils.getCumulativePermission(EntityTypePermission.READ);
        mapBuilder.putAll(entityTypeIdentity, new Pair<>(entityTypePermissions, allUsersGroupSid));
    });
    return mapBuilder.build();
}
Also used : EntityType(org.molgenis.data.meta.model.EntityType) Group(org.molgenis.data.security.auth.Group) EntityTypeIdentity(org.molgenis.data.security.EntityTypeIdentity) ObjectIdentity(org.springframework.security.acls.model.ObjectIdentity) PluginIdentity(org.molgenis.data.plugin.model.PluginIdentity) Permission(org.springframework.security.acls.model.Permission) EntityTypePermission(org.molgenis.data.security.EntityTypePermission) PluginPermission(org.molgenis.data.plugin.model.PluginPermission) ImmutableMultimap(com.google.common.collect.ImmutableMultimap) Pair(org.molgenis.util.Pair) SidUtils.createSid(org.molgenis.security.acl.SidUtils.createSid) Sid(org.springframework.security.acls.model.Sid)

Example 3 with Pair

use of org.molgenis.util.Pair in project molgenis by molgenis.

the class PermissionRegistryImplTest method testGetPermissions.

@Test
public void testGetPermissions() {
    @SuppressWarnings("unchecked") Query<Group> query = mock(Query.class);
    when(query.eq("name", "All Users")).thenReturn(query);
    when(dataService.query("sys_sec_Group", Group.class)).thenReturn(query);
    Group group = when(mock(Group.class).getId()).thenReturn("group0").getMock();
    when(query.findOne()).thenReturn(group);
    Multimap<ObjectIdentity, Pair<Permission, Sid>> expectedPermissions = ImmutableListMultimap.of(new PluginIdentity("useraccount"), new Pair<>(PluginPermission.READ, new GrantedAuthoritySid("ROLE_group0")));
    assertEquals(permissionRegistryImpl.getPermissions(), expectedPermissions);
}
Also used : Group(org.molgenis.data.security.auth.Group) ObjectIdentity(org.springframework.security.acls.model.ObjectIdentity) PluginIdentity(org.molgenis.data.plugin.model.PluginIdentity) GrantedAuthoritySid(org.springframework.security.acls.domain.GrantedAuthoritySid) Pair(org.molgenis.util.Pair) Test(org.testng.annotations.Test) AbstractMockitoTest(org.molgenis.test.AbstractMockitoTest)

Example 4 with Pair

use of org.molgenis.util.Pair in project molgenis by molgenis.

the class PermissionPopulatorTest method testPopulate.

@Test
public void testPopulate() {
    ApplicationContext applicationContext = mock(ApplicationContext.class);
    ObjectIdentity objectIdentity0 = new ObjectIdentityImpl("type", "id0");
    PermissionRegistry permissionRegistry0 = mock(PermissionRegistry.class);
    Multimap<ObjectIdentity, Pair<Permission, Sid>> registry0Permissions = ArrayListMultimap.create();
    registry0Permissions.put(objectIdentity0, new Pair<>(mock(Permission.class), mock(Sid.class)));
    when(permissionRegistry0.getPermissions()).thenReturn(registry0Permissions);
    ObjectIdentity objectIdentity1 = new ObjectIdentityImpl("type", "id1");
    Multimap<ObjectIdentity, Pair<Permission, Sid>> registry1Permissions = ArrayListMultimap.create();
    registry1Permissions.put(objectIdentity1, new Pair<>(mock(Permission.class), mock(Sid.class)));
    PermissionRegistry permissionRegistry1 = mock(PermissionRegistry.class);
    when(permissionRegistry1.getPermissions()).thenReturn(registry1Permissions);
    Map<String, PermissionRegistry> registryMap = new LinkedHashMap<>();
    registryMap.put("registry0", permissionRegistry0);
    registryMap.put("registry1", permissionRegistry1);
    when(applicationContext.getBeansOfType(PermissionRegistry.class)).thenReturn(registryMap);
    MutableAcl acl0 = mock(MutableAcl.class);
    doReturn(acl0).when(mutableAclService).readAclById(objectIdentity0);
    MutableAcl acl1 = mock(MutableAcl.class);
    doReturn(acl1).when(mutableAclService).readAclById(objectIdentity1);
    permissionPopulator.populate(applicationContext);
    verify(mutableAclService).updateAcl(acl0);
    verify(mutableAclService).updateAcl(acl1);
}
Also used : ApplicationContext(org.springframework.context.ApplicationContext) ObjectIdentityImpl(org.springframework.security.acls.domain.ObjectIdentityImpl) Pair(org.molgenis.util.Pair) LinkedHashMap(java.util.LinkedHashMap) Test(org.testng.annotations.Test) AbstractMockitoTest(org.molgenis.test.AbstractMockitoTest)

Example 5 with Pair

use of org.molgenis.util.Pair in project molgenis by molgenis.

the class WebAppPermissionRegistry method getPermissions.

@Override
public Multimap<ObjectIdentity, Pair<Permission, Sid>> getPermissions() {
    User anonymousUser = dataService.query(USER, User.class).eq(USERNAME, ANONYMOUS_USERNAME).findOne();
    Group allUsersGroup = dataService.query(GROUP, Group.class).eq(NAME, ALL_USER_GROUP).findOne();
    ObjectIdentity pluginIdentity = new PluginIdentity(HomeController.ID);
    return new ImmutableMultimap.Builder<ObjectIdentity, Pair<Permission, Sid>>().putAll(pluginIdentity, new Pair<>(PluginPermission.READ, createSid(anonymousUser)), new Pair<>(PluginPermission.READ, createSid(allUsersGroup))).build();
}
Also used : Group(org.molgenis.data.security.auth.Group) User(org.molgenis.data.security.auth.User) ObjectIdentity(org.springframework.security.acls.model.ObjectIdentity) PluginIdentity(org.molgenis.data.plugin.model.PluginIdentity) Permission(org.springframework.security.acls.model.Permission) PluginPermission(org.molgenis.data.plugin.model.PluginPermission) Sid(org.springframework.security.acls.model.Sid) SidUtils.createSid(org.molgenis.security.acl.SidUtils.createSid) Pair(org.molgenis.util.Pair)

Aggregations

Pair (org.molgenis.util.Pair)5 PluginIdentity (org.molgenis.data.plugin.model.PluginIdentity)3 Group (org.molgenis.data.security.auth.Group)3 ObjectIdentity (org.springframework.security.acls.model.ObjectIdentity)3 EntityType (org.molgenis.data.meta.model.EntityType)2 PluginPermission (org.molgenis.data.plugin.model.PluginPermission)2 SidUtils.createSid (org.molgenis.security.acl.SidUtils.createSid)2 AbstractMockitoTest (org.molgenis.test.AbstractMockitoTest)2 Permission (org.springframework.security.acls.model.Permission)2 Sid (org.springframework.security.acls.model.Sid)2 Test (org.testng.annotations.Test)2 ImmutableMultimap (com.google.common.collect.ImmutableMultimap)1 LinkedHashMap (java.util.LinkedHashMap)1 Attribute (org.molgenis.data.meta.model.Attribute)1 EntityTypeIdentity (org.molgenis.data.security.EntityTypeIdentity)1 EntityTypePermission (org.molgenis.data.security.EntityTypePermission)1 User (org.molgenis.data.security.auth.User)1 ApplicationContext (org.springframework.context.ApplicationContext)1 GrantedAuthoritySid (org.springframework.security.acls.domain.GrantedAuthoritySid)1 ObjectIdentityImpl (org.springframework.security.acls.domain.ObjectIdentityImpl)1