private int cliRunSetPrivileges(UserAdmin userAdmin, SetPrivilegesCliArguments args, User authUser) { Set<String> privileges = new HashSet<>(); if (args.privileges != null && args.privileges.length() > 0) { privileges.addAll(Arrays.asList(StringUtils.split(args.privileges, SEPARATOR_CHAR))); } User user = userAdmin.findUser(args); privilegeRepository.setPrivileges(user, privileges, authUser); userAdmin.printUser(user); return 0; }
private void validatePrivileges(String[] privileges) { for (String privilege : privileges) { if (privilegeRepository.findPrivilegeByName(privilege) == null) { throw new VisalloException( "Unexpected privilege \"" + privilege + "\". Expected one of [" + Privilege.toStringPrivileges(privilegeRepository.getAllPrivileges()) + "]"); } } }
public void setPrivileges(User user, Set<String> privileges, User authUser) { if (!privileges.equals(getPrivileges(user))) { String privilegesString = Privilege.toString(privileges); LOGGER.info( "Setting privileges to '%s' on user '%s' by '%s'", privilegesString, user.getUsername(), authUser.getUsername() ); getUserRepository().setPropertyOnUser(user, PRIVILEGES_PROPERTY_IRI, privilegesString); sendNotificationToUserAboutPrivilegeChange(user, privileges, authUser); workQueueRepository.pushUserAccessChange(user); fireUserPrivilegesUpdatedEvent(user, privileges); } }
@Override public void onCreateUser(UserAdmin userAdmin, CreateUserArgs createUserArgs, User user, User authUser) { String privilegesString = createUserArgs.privilegeRepositoryArguments.get(CLI_PARAMETER_PRIVILEGES); ImmutableSet<String> newPrivileges; if (privilegesString == null) { newPrivileges = privilegeRepository.getDefaultPrivileges(); } else { String[] privileges = privilegesString.split(","); newPrivileges = ImmutableSet.copyOf(privileges); } privilegeRepository.setPrivileges(user, newPrivileges, authUser); }
@Override public void onPrintUser(UserAdmin userAdmin, Args args, String formatString, User user) { Set<String> privileges = privilegeRepository.getPrivileges(user); String privilegesString = Joiner.on(",").join(privileges); System.out.println(String.format(formatString, "Privileges", privilegesString)); }
private void fireUserPrivilegesUpdatedEvent(User user, Set<String> privileges) { for (UserListener userListener : getUserListeners()) { userListener.userPrivilegesUpdated(user, privileges); } }
@Inject public UserPropertyPrivilegeRepository( OntologyRepository ontologyRepository, Configuration configuration, UserNotificationRepository userNotificationRepository, WorkQueueRepository workQueueRepository ) { super(configuration); this.configuration = configuration; this.userNotificationRepository = userNotificationRepository; this.workQueueRepository = workQueueRepository; definePrivilegesProperty(ontologyRepository); Settings settings = new Settings(); configuration.setConfigurables(settings, CONFIGURATION_PREFIX); this.defaultPrivileges = ImmutableSet.copyOf(Privilege.stringToPrivileges(settings.defaultPrivileges)); }
protected void setPrivileges(User user, Set<String> privileges) { ((UserPropertyPrivilegeRepository) getPrivilegeRepository()).setPrivileges(user, privileges, getUserRepository().getSystemUser()); }
@Test public void testPublishingNewEdgeAndRelationshipWithoutOntologyPublishPrivilege() { UserPropertyPrivilegeRepository privilegeRepository = (UserPropertyPrivilegeRepository) getPrivilegeRepository(); privilegeRepository.setPrivileges(user, Sets.newHashSet(Privilege.ONTOLOGY_ADD), getUserRepository().getSystemUser()); String newRelationshipIri = "new-relationship"; getOntologyRepository().getOrCreateRelationshipType(null, Collections.singleton(thingConcept), Collections.singleton(thingConcept), newRelationshipIri, "Junit Relationship", true, user, workspace.getWorkspaceId()); getOntologyRepository().clearCache(); doTestPublishEdgeAdd(newRelationshipIri, "Unable to publish relationship Junit Relationship", SandboxStatus.PRIVATE); }
@Test public void testPublishingNewEdgeAndRelationship() { UserPropertyPrivilegeRepository privilegeRepository = (UserPropertyPrivilegeRepository) getPrivilegeRepository(); privilegeRepository.setPrivileges(user, Sets.newHashSet(Privilege.ONTOLOGY_ADD, Privilege.ONTOLOGY_PUBLISH), getUserRepository().getSystemUser()); String newRelationshipIri = "new-relationship"; getOntologyRepository().getOrCreateRelationshipType(null, Collections.singleton(thingConcept), Collections.singleton(thingConcept), newRelationshipIri, "Junit Relationship", true, user, workspace.getWorkspaceId()); getOntologyRepository().clearCache(); doTestPublishEdgeAdd(newRelationshipIri, null, SandboxStatus.PUBLIC); }
@Test public void testPublishingNewPropertyValueAndPropertyTypeWithoutOntologyPublishPrivilege() { UserPropertyPrivilegeRepository privilegeRepository = (UserPropertyPrivilegeRepository) getPrivilegeRepository(); privilegeRepository.setPrivileges(user, Sets.newHashSet(Privilege.ONTOLOGY_ADD), getUserRepository().getSystemUser()); String newPropertyIri = "new-property"; OntologyPropertyDefinition propertyDefinition = new OntologyPropertyDefinition(Collections.singletonList(thingConcept), newPropertyIri, "New Property", PropertyType.STRING); propertyDefinition.setTextIndexHints(Collections.singleton(TextIndexHint.EXACT_MATCH)); propertyDefinition.setUserVisible(true); getOntologyRepository().getOrCreateProperty(propertyDefinition, user, workspace.getWorkspaceId()); getOntologyRepository().clearCache(); doTestPublishPropertyAdd(newPropertyIri, "Unable to publish relationship New Property", SandboxStatus.PRIVATE); }
@Test public void testPublishingNewPropertyValueAndPropertyType() { UserPropertyPrivilegeRepository privilegeRepository = (UserPropertyPrivilegeRepository) getPrivilegeRepository(); privilegeRepository.setPrivileges(user, Sets.newHashSet(Privilege.ONTOLOGY_ADD, Privilege.ONTOLOGY_PUBLISH), getUserRepository().getSystemUser()); String newPropertyIri = "new-property"; OntologyPropertyDefinition propertyDefinition = new OntologyPropertyDefinition(Collections.singletonList(thingConcept), newPropertyIri, "New Property", PropertyType.STRING); propertyDefinition.setTextIndexHints(Collections.singleton(TextIndexHint.EXACT_MATCH)); propertyDefinition.setUserVisible(true); getOntologyRepository().getOrCreateProperty(propertyDefinition, user, workspace.getWorkspaceId()); getOntologyRepository().clearCache(); doTestPublishPropertyAdd(newPropertyIri, null, SandboxStatus.PUBLIC); }
@Handle public JSONObject handle( @Required(name = "user-name") String userName, @Required(name = "privileges") String privilegesParameter, User authUser ) throws Exception { Set<String> privileges = Privilege.stringToPrivileges(privilegesParameter); User user = userRepository.findByUsername(userName); if (user == null) { throw new VisalloResourceNotFoundException("Could not find user: " + userName); } privilegeRepository.setPrivileges(user, privileges, authUser); return userRepository.toJsonWithAuths(user); } }