use of com.enonic.xp.security.PrincipalKey in project xp by enonic.
the class UserNodeTranslatorTest method toUser.
@Test
public void toUser() throws Exception {
final PrincipalKey userKey = PrincipalKey.ofUser(IdProviderKey.system(), "i-am-a-user");
final PropertyTree rootDataSet = new PropertyTree();
rootDataSet.setString(PrincipalPropertyNames.LOGIN_KEY, "loginkey");
rootDataSet.setString(PrincipalPropertyNames.EMAIL_KEY, "rmy@enonic.com");
rootDataSet.setString(PrincipalPropertyNames.DISPLAY_NAME_KEY, "displayname");
rootDataSet.setString(PrincipalPropertyNames.PRINCIPAL_TYPE_KEY, userKey.getType().toString());
rootDataSet.setString(PrincipalPropertyNames.ID_PROVIDER_KEY, userKey.getIdProviderKey().toString());
rootDataSet.setString(PrincipalPropertyNames.AUTHENTICATION_HASH_KEY, "clear:password");
final Node node = Node.create().id(NodeId.from("id")).name(PrincipalKeyNodeTranslator.toNodeName(userKey)).data(rootDataSet).build();
final User user = (User) PrincipalNodeTranslator.fromNode(node);
assertEquals("loginkey", user.getLogin());
assertEquals("rmy@enonic.com", user.getEmail());
assertEquals(userKey, user.getKey());
assertEquals("clear:password", user.getAuthenticationHash());
}
use of com.enonic.xp.security.PrincipalKey in project xp by enonic.
the class JsonExceptionMapper method createContextJson.
private static ObjectNode createContextJson() {
final Context context = ContextAccessor.current();
final AuthenticationInfo authInfo = context.getAuthInfo();
final ObjectNode node = JsonNodeFactory.instance.objectNode();
node.put("authenticated", (authInfo != null) && authInfo.isAuthenticated());
final ArrayNode principals = node.putArray("principals");
if (authInfo != null) {
for (final PrincipalKey principal : authInfo.getPrincipals()) {
principals.add(principal.toString());
}
}
return node;
}
use of com.enonic.xp.security.PrincipalKey in project xp by enonic.
the class IssueCommentQueryNodeQueryTranslator method translate.
public static NodeQuery translate(final IssueCommentQuery issueCommentQuery, NodeName parentName) {
final NodeQuery.Builder builder = NodeQuery.create();
builder.parent(NodePath.create(IssueConstants.ISSUE_ROOT_PATH, parentName.toString()).build());
final ValueFilter issueCommentsCollectionFilter = ValueFilter.create().fieldName(NodeIndexPath.NODE_TYPE.getPath()).addValue(ValueFactory.newString(IssueCommentConstants.NODE_COLLECTION.getName())).build();
if (issueCommentQuery.isCount()) {
builder.searchMode(SearchMode.COUNT);
}
builder.from(issueCommentQuery.getFrom()).size(issueCommentQuery.getSize()).addQueryFilter(issueCommentsCollectionFilter);
final PrincipalKey creator = issueCommentQuery.getCreator();
if (creator != null) {
builder.addQueryFilter(ValueFilter.create().fieldName(CREATOR).addValues(creator.toString()).build());
}
builder.setOrderExpressions(issueCommentQuery.getOrder().getOrderExpressions());
return builder.build();
}
use of com.enonic.xp.security.PrincipalKey in project xp by enonic.
the class IssueQueryNodeQueryTranslator method translate.
public static NodeQuery translate(final IssueQuery issueQuery) {
final NodeQuery.Builder builder = NodeQuery.create();
final ValueFilter issueCollectionFilter = ValueFilter.create().fieldName(NodeIndexPath.NODE_TYPE.getPath()).addValue(ValueFactory.newString(IssueConstants.ISSUE_NODE_COLLECTION.getName())).build();
if (issueQuery.isCount()) {
builder.searchMode(SearchMode.COUNT);
}
builder.from(issueQuery.getFrom()).size(issueQuery.getSize()).addQueryFilter(issueCollectionFilter);
final PrincipalKey creator = issueQuery.getCreator();
if (creator != null) {
builder.addQueryFilter(ValueFilter.create().fieldName(CREATOR).addValues(creator.toString()).build());
}
final PrincipalKeys approvers = issueQuery.getApprovers();
if (approvers != null && approvers.isNotEmpty()) {
builder.addQueryFilter(ValueFilter.create().fieldName(APPROVERS).addValues(approvers.stream().map(PrincipalKey::toString).collect(toList())).build());
}
final ContentIds items = issueQuery.getItems();
if (items != null && items.isNotEmpty()) {
builder.addQueryFilter(ValueFilter.create().fieldName(PUBLISH_REQUEST_ITEM_ID).addValues(items.stream().map(ContentId::toString).collect(toList())).build());
}
final IssueStatus status = issueQuery.getStatus();
if (status != null) {
builder.addQueryFilter(ValueFilter.create().fieldName(STATUS).addValues(status.toString()).build());
}
final IssueType type = issueQuery.getType();
if (type != null) {
final Filter isOfType = ValueFilter.create().fieldName(TYPE).addValues(type.toString()).build();
if (type == IssueType.STANDARD) {
final Filter notExists = BooleanFilter.create().mustNot(ExistsFilter.create().fieldName(TYPE).build()).build();
final Filter isStandard = BooleanFilter.create().should(isOfType).should(notExists).build();
builder.addQueryFilter(isStandard);
} else {
builder.addQueryFilter(isOfType);
}
}
builder.setOrderExpressions(IssueConstants.DEFAULT_CHILD_ORDER.getOrderExpressions());
return builder.build();
}
use of com.enonic.xp.security.PrincipalKey in project xp by enonic.
the class UpdateProjectRolesCommand method doSetRoleMembers.
private Set<PrincipalKey> doSetRoleMembers(final ProjectRole projectRole) {
final PrincipalKey roleKey = ProjectAccessHelper.createRoleKey(projectName, projectRole);
final PrincipalRelationships currRoleMembers = securityService.getRelationships(roleKey);
final PrincipalKeys newRoleMembers = this.permissions.getPermission(projectRole);
doGetAddedMembers(currRoleMembers, newRoleMembers, roleKey).forEach(securityService::addRelationship);
doGetRemovedMembers(currRoleMembers, newRoleMembers).forEach(securityService::removeRelationship);
return securityService.getRelationships(roleKey).stream().map(PrincipalRelationship::getTo).collect(Collectors.toSet());
}
Aggregations