Java源码示例:org.apache.kylin.rest.security.AclPermission

示例1
@Test
public void testBatchUpsertAce() {
    switchToAdmin();
    ObjectIdentity oid = oid("acl");
    MutableAclRecord acl = (MutableAclRecord) aclService.createAcl(oid);
    final Map<Sid, Permission> sidToPerm = new HashMap<>();
    for (int i = 0; i < 10; i++) {
        sidToPerm.put(new PrincipalSid("u" + i), AclPermission.ADMINISTRATION);
    }
    aclService.batchUpsertAce(acl, sidToPerm);

    for (Acl a : aclService.readAclsById(Collections.singletonList(oid)).values()) {
        List<AccessControlEntry> e = a.getEntries();
        Assert.assertEquals(10, e.size());
        for (int i = 0; i < e.size(); i++) {
            Assert.assertEquals(new PrincipalSid("u" + i), e.get(i).getSid());
        }
    }
}
 
示例2
@Test
public void testGetAndValidateIdentifiers() throws IOException {
    RootPersistentEntity ae = accessService.getAclEntity("ProjectInstance", "1eaca32a-a33e-4b69-83dd-0bb8b1f8c91b");
    accessService.init(ae, AclPermission.ADMINISTRATION);
    accessService.grant(ae, AclPermission.ADMINISTRATION, accessService.getSid("u1", true));
    accessService.grant(ae, AclPermission.ADMINISTRATION, accessService.getSid("g1", false));

    Assert.assertEquals(Lists.newArrayList("ADMIN", "u1"),
            Lists.newArrayList(validateUtil.getAllIdentifiersInPrj(PROJECT, TYPE_USER)));
    Assert.assertEquals(Lists.newArrayList("g1"),
            Lists.newArrayList(validateUtil.getAllIdentifiersInPrj(PROJECT, TYPE_GROUP)));

    validateUtil.validateIdentifiers(PROJECT, "u1", TYPE_USER);
    try {
        validateUtil.validateIdentifiers(PROJECT, NOT_EXISTS, TYPE_USER);
        Assert.fail();
    } catch (Exception e) {
        Assert.assertEquals("Operation failed, user:not_exists not exists in project.", e.getMessage());
    }
}
 
示例3
@PreAuthorize(Constant.ACCESS_HAS_ROLE_ADMIN)
public ProjectInstance createProject(ProjectInstance newProject) throws IOException {
    Message msg = MsgPicker.getMsg();

    String projectName = newProject.getName();
    String description = newProject.getDescription();
    LinkedHashMap<String, String> overrideProps = newProject.getOverrideKylinProps();

    ProjectInstance currentProject = getProjectManager().getProject(projectName);

    if (currentProject != null) {
        throw new BadRequestException(String.format(Locale.ROOT, msg.getPROJECT_ALREADY_EXIST(), projectName));
    }
    String owner = SecurityContextHolder.getContext().getAuthentication().getName();
    ProjectInstance createdProject = getProjectManager().createProject(projectName, owner, description,
            overrideProps);
    accessService.init(createdProject, AclPermission.ADMINISTRATION);
    logger.debug("New project created.");

    return createdProject;
}
 
示例4
@Test
public void testBatchUpsertAce() {
    switchToAdmin();
    ObjectIdentity oid = oid("acl");
    MutableAclRecord acl = (MutableAclRecord) aclService.createAcl(oid);
    final Map<Sid, Permission> sidToPerm = new HashMap<>();
    for (int i = 0; i < 10; i++) {
        sidToPerm.put(new PrincipalSid("u" + i), AclPermission.ADMINISTRATION);
    }
    aclService.batchUpsertAce(acl, sidToPerm);

    for (Acl a : aclService.readAclsById(Collections.singletonList(oid)).values()) {
        List<AccessControlEntry> e = a.getEntries();
        Assert.assertEquals(10, e.size());
        for (int i = 0; i < e.size(); i++) {
            Assert.assertEquals(new PrincipalSid("u" + i), e.get(i).getSid());
        }
    }
}
 
示例5
@Test
public void testGetAndValidateIdentifiers() throws IOException {
    RootPersistentEntity ae = accessService.getAclEntity("ProjectInstance", "1eaca32a-a33e-4b69-83dd-0bb8b1f8c91b");
    accessService.init(ae, AclPermission.ADMINISTRATION);
    accessService.grant(ae, AclPermission.ADMINISTRATION, accessService.getSid("u1", true));
    accessService.grant(ae, AclPermission.ADMINISTRATION, accessService.getSid("g1", false));

    Assert.assertEquals(Lists.newArrayList("ADMIN", "u1"),
            Lists.newArrayList(validateUtil.getAllIdentifiersInPrj(PROJECT, TYPE_USER)));
    Assert.assertEquals(Lists.newArrayList("g1"),
            Lists.newArrayList(validateUtil.getAllIdentifiersInPrj(PROJECT, TYPE_GROUP)));

    validateUtil.validateIdentifiers(PROJECT, "u1", TYPE_USER);
    try {
        validateUtil.validateIdentifiers(PROJECT, NOT_EXISTS, TYPE_USER);
        Assert.fail();
    } catch (Exception e) {
        Assert.assertEquals("Operation failed, user:not_exists not exists in project.", e.getMessage());
    }
}
 
示例6
@PreAuthorize(Constant.ACCESS_HAS_ROLE_ADMIN)
public ProjectInstance createProject(ProjectInstance newProject) throws IOException {
    Message msg = MsgPicker.getMsg();

    String projectName = newProject.getName();
    String description = newProject.getDescription();
    LinkedHashMap<String, String> overrideProps = newProject.getOverrideKylinProps();

    ProjectInstance currentProject = getProjectManager().getProject(projectName);

    if (currentProject != null) {
        throw new BadRequestException(String.format(Locale.ROOT, msg.getPROJECT_ALREADY_EXIST(), projectName));
    }
    String owner = SecurityContextHolder.getContext().getAuthentication().getName();
    ProjectInstance createdProject = getProjectManager().createProject(projectName, owner, description,
            overrideProps);
    accessService.init(createdProject, AclPermission.ADMINISTRATION);
    logger.debug("New project created.");

    return createdProject;
}
 
示例7
@Test
public void testRevokeProjectPermission() throws IOException {
    List<ProjectInstance> projects = projectService.listProjects(10000, 0);
    assertTrue(projects.size() > 0);
    ProjectInstance project = projects.get(0);
    PrincipalSid sid = new PrincipalSid("ANALYST");
    RootPersistentEntity ae = accessService.getAclEntity(PROJECT_INSTANCE, project.getUuid());
    accessService.grant(ae, AclPermission.ADMINISTRATION, sid);
    Assert.assertEquals(1, accessService.getAcl(ae).getEntries().size());
    accessService.revokeProjectPermission("ANALYST", MetadataConstants.TYPE_USER);
    Assert.assertEquals(0, accessService.getAcl(ae).getEntries().size());
}
 
示例8
@Test
public void testBatchGrant() {
    AclEntity ae = new AclServiceTest.MockAclEntity("batch-grant");
    final Map<Sid, Permission> sidToPerm = new HashMap<>();
    for (int i = 0; i < 10; i++) {
        sidToPerm.put(new PrincipalSid("u" + i), AclPermission.ADMINISTRATION);
    }
    accessService.batchGrant(ae, sidToPerm);
    MutableAclRecord acl = accessService.getAcl(ae);
    List<AccessControlEntry> e = acl.getEntries();
    Assert.assertEquals(10, e.size());
    for (int i = 0; i < e.size(); i++) {
        Assert.assertEquals(new PrincipalSid("u" + i), e.get(i).getSid());
    }
}
 
示例9
@Ignore
@Test
public void test100000Entries() throws JsonProcessingException {
    MockAclEntity ae = new MockAclEntity("100000Entries");
    long time = System.currentTimeMillis();
    for (int i = 0; i < 100000; i++) {
        if (i % 10 == 0) {
            long now = System.currentTimeMillis();
            System.out.println((now - time) + " ms for last 10 entries, total " + i);
            time = now;
        }
        Sid sid = accessService.getSid("USER" + i, true);
        accessService.grant(ae, AclPermission.OPERATION, sid);
    }
}
 
示例10
@Test
public void testRevokeProjectPermission() throws IOException {
    List<ProjectInstance> projects = projectService.listProjects(10000, 0);
    assertTrue(projects.size() > 0);
    ProjectInstance project = projects.get(0);
    PrincipalSid sid = new PrincipalSid("ANALYST");
    RootPersistentEntity ae = accessService.getAclEntity(PROJECT_INSTANCE, project.getUuid());
    accessService.grant(ae, AclPermission.ADMINISTRATION, sid);
    Assert.assertEquals(1, accessService.getAcl(ae).getEntries().size());
    accessService.revokeProjectPermission("ANALYST", MetadataConstants.TYPE_USER);
    Assert.assertEquals(0, accessService.getAcl(ae).getEntries().size());
}
 
示例11
@Test
public void testBatchGrant() {
    AclEntity ae = new AclServiceTest.MockAclEntity("batch-grant");
    final Map<Sid, Permission> sidToPerm = new HashMap<>();
    for (int i = 0; i < 10; i++) {
        sidToPerm.put(new PrincipalSid("u" + i), AclPermission.ADMINISTRATION);
    }
    accessService.batchGrant(ae, sidToPerm);
    MutableAclRecord acl = accessService.getAcl(ae);
    List<AccessControlEntry> e = acl.getEntries();
    Assert.assertEquals(10, e.size());
    for (int i = 0; i < e.size(); i++) {
        Assert.assertEquals(new PrincipalSid("u" + i), e.get(i).getSid());
    }
}
 
示例12
@Ignore
@Test
public void test100000Entries() throws JsonProcessingException {
    MockAclEntity ae = new MockAclEntity("100000Entries");
    long time = System.currentTimeMillis();
    for (int i = 0; i < 100000; i++) {
        if (i % 10 == 0) {
            long now = System.currentTimeMillis();
            System.out.println((now - time) + " ms for last 10 entries, total " + i);
            time = now;
        }
        Sid sid = accessService.getSid("USER" + i, true);
        accessService.grant(ae, AclPermission.OPERATION, sid);
    }
}
 
示例13
public ProjectInstance createProject(CreateProjectRequest projectRequest) throws IOException {
    String projectName = projectRequest.getName();
    String description = projectRequest.getDescription();
    ProjectInstance currentProject = getProjectManager().getProject(projectName);

    if (currentProject != null) {
        throw new InternalErrorException("The project named " + projectName + " already exists");
    }
    String owner = SecurityContextHolder.getContext().getAuthentication().getName();
    ProjectInstance createdProject = getProjectManager().createProject(projectName, owner, description);
    accessService.init(createdProject, AclPermission.ADMINISTRATION);
    logger.debug("New project created.");

    return createdProject;
}
 
示例14
@Override
public List<Pair<String, AclPermission>> getAcl(String entityType, String entityUuid) {
	// No need to implement
	return null;
}
 
示例15
@Override
public List<Pair<String, AclPermission>> getAcl(String entityType, String entityUuid) {
	// No need to implement
	return null;
}
 
示例16
public CubeInstance createCubeAndDesc(String cubeName, String projectName, CubeDesc desc) throws IOException {
    if (getCubeManager().getCube(cubeName) != null) {
        throw new InternalErrorException("The cube named " + cubeName + " already exists");
    }

    String owner = SecurityContextHolder.getContext().getAuthentication().getName();
    CubeDesc createdDesc = null;
    CubeInstance createdCube = null;

    boolean isNew = false;
    if (getCubeDescManager().getCubeDesc(desc.getName()) == null) {
        createdDesc = getCubeDescManager().createCubeDesc(desc);
        isNew = true;
    } else {
        createdDesc = getCubeDescManager().updateCubeDesc(desc);
    }


    if (!createdDesc.getError().isEmpty()) {
        if (isNew) {
            getCubeDescManager().removeCubeDesc(createdDesc);
        }
        throw new InternalErrorException(createdDesc.getError().get(0));
    }

    try {
        int cuboidCount = CuboidCLI.simulateCuboidGeneration(createdDesc);
        logger.info("New cube " + cubeName + " has " + cuboidCount + " cuboids");
    } catch (Exception e) {
        getCubeDescManager().removeCubeDesc(createdDesc);
        throw new InternalErrorException("Failed to deal with the request.", e);
    }

    createdCube = getCubeManager().createCube(cubeName, projectName, createdDesc, owner);
    accessService.init(createdCube, AclPermission.ADMINISTRATION);

    ProjectInstance project = getProjectManager().getProject(projectName);
    accessService.inherit(createdCube, project);

    return createdCube;
}