Search in sources :

Example 1 with Group

use of org.molgenis.data.security.auth.Group in project molgenis by molgenis.

the class SidUtilsTest method testCreateSidGroup.

@Test
public void testCreateSidGroup() {
    Group group = when(mock(Group.class).getId()).thenReturn("groupId").getMock();
    Sid sid = SidUtils.createSid(group);
    assertEquals(sid, new GrantedAuthoritySid(new SimpleGrantedAuthority("ROLE_groupId")));
}
Also used : Group(org.molgenis.data.security.auth.Group) SimpleGrantedAuthority(org.springframework.security.core.authority.SimpleGrantedAuthority) GrantedAuthoritySid(org.springframework.security.acls.domain.GrantedAuthoritySid) Sid(org.springframework.security.acls.model.Sid) GrantedAuthoritySid(org.springframework.security.acls.domain.GrantedAuthoritySid) PrincipalSid(org.springframework.security.acls.domain.PrincipalSid) Test(org.testng.annotations.Test)

Example 2 with Group

use of org.molgenis.data.security.auth.Group in project molgenis by molgenis.

the class UsersGroupsPopulatorImpl method populate.

@Override
@Transactional
@RunAsSystem
public void populate() {
    if (adminPassword == null) {
        throw new RuntimeException("please configure the admin.password property in your molgenis-server.properties");
    }
    // create admin user
    User userAdmin = userFactory.create();
    userAdmin.setUsername(USERNAME_ADMIN);
    userAdmin.setPassword(adminPassword);
    userAdmin.setEmail(adminEmail);
    userAdmin.setActive(true);
    userAdmin.setSuperuser(true);
    userAdmin.setChangePassword(false);
    // create anonymous user
    User anonymousUser = userFactory.create();
    anonymousUser.setUsername(ANONYMOUS_USERNAME);
    anonymousUser.setPassword(ANONYMOUS_USERNAME);
    anonymousUser.setEmail(anonymousEmail);
    anonymousUser.setActive(true);
    anonymousUser.setSuperuser(false);
    anonymousUser.setChangePassword(false);
    // create all users group
    Group allUsersGroup = groupFactory.create();
    allUsersGroup.setName(AccountService.ALL_USER_GROUP);
    // persist entities
    dataService.add(USER, Stream.of(userAdmin, anonymousUser));
    dataService.add(GROUP, allUsersGroup);
}
Also used : Group(org.molgenis.data.security.auth.Group) User(org.molgenis.data.security.auth.User) RunAsSystem(org.molgenis.security.core.runas.RunAsSystem) Transactional(org.springframework.transaction.annotation.Transactional)

Example 3 with Group

use of org.molgenis.data.security.auth.Group 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 4 with Group

use of org.molgenis.data.security.auth.Group in project molgenis by molgenis.

the class PermissionManagerControllerTest method setUp.

@BeforeMethod
public void setUp() {
    config.resetMocks();
    mockMvc = MockMvcBuilders.standaloneSetup(permissionManagerController).setMessageConverters(gsonHttpMessageConverter).build();
    user1 = when(mock(User.class).getId()).thenReturn("1").getMock();
    when(user1.isSuperuser()).thenReturn(true);
    when(user1.getUsername()).thenReturn("Ipsum");
    userSid = new PrincipalSid("Ipsum");
    user2 = when(mock(User.class).getId()).thenReturn("2").getMock();
    group1 = when(mock(Group.class).getId()).thenReturn("1").getMock();
    groupSid = new GrantedAuthoritySid("ROLE_1");
    group2 = when(mock(Group.class).getId()).thenReturn("2").getMock();
    plugin1 = when(mock(Plugin.class).getId()).thenReturn("1").getMock();
    plugin2 = when(mock(Plugin.class).getId()).thenReturn("2").getMock();
    pluginIdentity1 = new PluginIdentity(plugin1);
    pluginIdentity2 = new PluginIdentity(plugin2);
    entityType1 = when(mock(EntityType.class).getId()).thenReturn("1").getMock();
    entityType2 = when(mock(EntityType.class).getId()).thenReturn("2").getMock();
    entityType3 = when(mock(EntityType.class).getId()).thenReturn("3").getMock();
    when(entityType1.getLabel()).thenReturn("label1");
    when(entityType2.getLabel()).thenReturn("label2");
    when(entityType3.getLabel()).thenReturn("label3");
    entityIdentity1 = new EntityTypeIdentity(entityType1);
    entityIdentity2 = new EntityTypeIdentity(entityType2);
    entityIdentity3 = new EntityTypeIdentity(entityType3);
    package1 = when(mock(Package.class).getId()).thenReturn("1").getMock();
    package2 = when(mock(Package.class).getId()).thenReturn("2").getMock();
    package3 = when(mock(Package.class).getId()).thenReturn("3").getMock();
    packageIdentity1 = new PackageIdentity(package1);
    packageIdentity2 = new PackageIdentity(package2);
    packageIdentity3 = new PackageIdentity(package3);
    when(dataService.findAll(USER, User.class)).thenReturn(Stream.of(user1, user2));
    when(dataService.findAll(GROUP, Group.class)).thenReturn(Stream.of(group1, group2));
    when(dataService.findOneById(GROUP, "1", Group.class)).thenReturn(group1);
    when(dataService.findOneById(USER, "1", User.class)).thenReturn(user1);
    when(dataService.findAll(PLUGIN, Plugin.class)).thenReturn(Stream.of(plugin1, plugin2));
    when(dataService.findAll(ENTITY_TYPE_META_DATA, EntityType.class)).thenReturn(Stream.of(entityType1, entityType2, entityType3));
    when(dataService.findAll(PACKAGE, Package.class)).thenReturn(Stream.of(package1, package2, package3));
    pluginPermissionRead = PluginPermission.READ;
    cumulativeEntityPermissionWritemeta = new CumulativePermission();
    cumulativeEntityPermissionWritemeta.set(EntityTypePermission.WRITEMETA).set(EntityTypePermission.WRITE).set(EntityTypePermission.READ).set(EntityTypePermission.COUNT);
    cumulativeEntityPermissionWrite = new CumulativePermission();
    cumulativeEntityPermissionWrite.set(EntityTypePermission.WRITE).set(EntityTypePermission.READ).set(EntityTypePermission.COUNT);
    cumulativeEntityPermissionRead = new CumulativePermission();
    cumulativeEntityPermissionRead.set(EntityTypePermission.READ).set(EntityTypePermission.COUNT);
    cumulativeEntityPermissionCount = new CumulativePermission();
    cumulativeEntityPermissionCount.set(EntityTypePermission.COUNT);
}
Also used : EntityType(org.molgenis.data.meta.model.EntityType) Group(org.molgenis.data.security.auth.Group) EntityTypeIdentity(org.molgenis.data.security.EntityTypeIdentity) User(org.molgenis.data.security.auth.User) GrantedAuthoritySid(org.springframework.security.acls.domain.GrantedAuthoritySid) PluginIdentity(org.molgenis.data.plugin.model.PluginIdentity) CumulativePermission(org.springframework.security.acls.domain.CumulativePermission) PackageIdentity(org.molgenis.data.security.PackageIdentity) Package(org.molgenis.data.meta.model.Package) PrincipalSid(org.springframework.security.acls.domain.PrincipalSid) Plugin(org.molgenis.data.plugin.model.Plugin) BeforeMethod(org.testng.annotations.BeforeMethod)

Example 5 with Group

use of org.molgenis.data.security.auth.Group in project molgenis by molgenis.

the class PermissionManagerController method toPluginPermissions.

private Permissions toPluginPermissions(List<Plugin> plugins, Map<ObjectIdentity, Acl> aclMap, Sid sid) {
    Permissions permissions = new Permissions();
    // set permissions: entity ids
    Map<String, String> pluginMap = plugins.stream().collect(toMap(Plugin::getId, Plugin::getId, (u, v) -> {
        throw new IllegalStateException(format("Duplicate key %s", u));
    }, LinkedHashMap::new));
    permissions.setEntityIds(pluginMap);
    // set permissions: user of group id
    boolean isUser = setUserOrGroup(sid, permissions);
    // set permissions: permissions
    aclMap.forEach((objectIdentity, acl) -> {
        String pluginId = objectIdentity.getIdentifier().toString();
        acl.getEntries().forEach(ace -> {
            if (ace.getSid().equals(sid)) {
                org.molgenis.security.permission.Permission pluginPermission = toPluginPermission(ace);
                if (isUser) {
                    permissions.addUserPermission(pluginId, pluginPermission);
                } else {
                    permissions.addGroupPermission(pluginId, pluginPermission);
                }
            }
        });
    });
    return permissions;
}
Also used : PluginController(org.molgenis.web.PluginController) java.util(java.util) EntityTypeMetadata(org.molgenis.data.meta.model.EntityTypeMetadata) PreAuthorize(org.springframework.security.access.prepost.PreAuthorize) WebRequest(org.springframework.web.context.request.WebRequest) LoggerFactory(org.slf4j.LoggerFactory) PackageMetadata(org.molgenis.data.meta.model.PackageMetadata) Controller(org.springframework.stereotype.Controller) Collections.singletonList(java.util.Collections.singletonList) Valid(javax.validation.Valid) User(org.molgenis.data.security.auth.User) Model(org.springframework.ui.Model) Lists(com.google.common.collect.Lists) ANONYMOUS_USERNAME(org.molgenis.security.core.utils.SecurityUtils.ANONYMOUS_USERNAME) Collectors.toMap(java.util.stream.Collectors.toMap) USER(org.molgenis.data.security.auth.UserMetaData.USER) PluginPermission(org.molgenis.data.plugin.model.PluginPermission) Objects.requireNonNull(java.util.Objects.requireNonNull) PluginIdentity(org.molgenis.data.plugin.model.PluginIdentity) SystemEntityTypeRegistry(org.molgenis.data.meta.system.SystemEntityTypeRegistry) org.springframework.security.acls.model(org.springframework.security.acls.model) Comparator.comparing(java.util.Comparator.comparing) URI(org.molgenis.core.ui.admin.permission.PermissionManagerController.URI) SidUtils(org.molgenis.security.acl.SidUtils) Logger(org.slf4j.Logger) USERNAME(org.molgenis.data.security.auth.UserMetaData.USERNAME) org.molgenis.data.security(org.molgenis.data.security) SidUtils.createAnonymousSid(org.molgenis.security.acl.SidUtils.createAnonymousSid) EntityType(org.molgenis.data.meta.model.EntityType) Collectors(java.util.stream.Collectors) MutableAclClassService(org.molgenis.security.acl.MutableAclClassService) String.format(java.lang.String.format) GrantedAuthoritySid(org.springframework.security.acls.domain.GrantedAuthoritySid) PrincipalSid(org.springframework.security.acls.domain.PrincipalSid) HttpStatus(org.springframework.http.HttpStatus) Collectors.toList(java.util.stream.Collectors.toList) Stream(java.util.stream.Stream) GROUP(org.molgenis.data.security.auth.GroupMetaData.GROUP) org.springframework.web.bind.annotation(org.springframework.web.bind.annotation) DataService(org.molgenis.data.DataService) Package(org.molgenis.data.meta.model.Package) Group(org.molgenis.data.security.auth.Group) PLUGIN(org.molgenis.data.plugin.model.PluginMetadata.PLUGIN) Permissions(org.molgenis.security.permission.Permissions) Plugin(org.molgenis.data.plugin.model.Plugin) Transactional(org.springframework.transaction.annotation.Transactional) Permissions(org.molgenis.security.permission.Permissions)

Aggregations

Group (org.molgenis.data.security.auth.Group)10 PluginIdentity (org.molgenis.data.plugin.model.PluginIdentity)5 User (org.molgenis.data.security.auth.User)4 GrantedAuthoritySid (org.springframework.security.acls.domain.GrantedAuthoritySid)4 EntityType (org.molgenis.data.meta.model.EntityType)3 PluginPermission (org.molgenis.data.plugin.model.PluginPermission)3 Pair (org.molgenis.util.Pair)3 PrincipalSid (org.springframework.security.acls.domain.PrincipalSid)3 ObjectIdentity (org.springframework.security.acls.model.ObjectIdentity)3 Transactional (org.springframework.transaction.annotation.Transactional)3 Test (org.testng.annotations.Test)3 Package (org.molgenis.data.meta.model.Package)2 Plugin (org.molgenis.data.plugin.model.Plugin)2 EntityTypeIdentity (org.molgenis.data.security.EntityTypeIdentity)2 Sid (org.springframework.security.acls.model.Sid)2 BeforeMethod (org.testng.annotations.BeforeMethod)2 ImmutableMultimap (com.google.common.collect.ImmutableMultimap)1 Lists (com.google.common.collect.Lists)1 String.format (java.lang.String.format)1 URI (java.net.URI)1