use of com.enonic.xp.security.PrincipalKey in project xp by enonic.
the class ContentAuditLogSupportImpl method doUpdate.
private void doUpdate(final UpdateContentParams params, final Content content, final Context rootContext) {
final PropertyTree data = new PropertyTree();
final PropertySet paramsSet = data.addSet("params");
final PropertySet resultSet = data.addSet("result");
final PrincipalKey modifier = rootContext.getAuthInfo().getUser() != null ? rootContext.getAuthInfo().getUser().getKey() : PrincipalKey.ofAnonymous();
paramsSet.addString("contentId", nullToNull(params.getContentId()));
paramsSet.addString("modifier", nullToNull(modifier));
paramsSet.addBoolean("clearAttachments", params.isClearAttachments());
paramsSet.addBoolean("requireValid", params.isRequireValid());
addContent(resultSet, content);
log("system.content.update", data, content.getId(), rootContext);
}
use of com.enonic.xp.security.PrincipalKey in project xp by enonic.
the class NodesHasPermissionResolver method execute.
public boolean execute() {
final Context context = ContextAccessor.current();
if (context.getAuthInfo().hasRole(RoleKeys.ADMIN)) {
return true;
}
if (nodeIds.isEmpty()) {
return false;
}
final NodeQuery query = NodeQuery.create().addQueryFilter(IdFilter.create().fieldName(NodeIndexPath.ID.getPath()).values(nodeIds).build()).addQueryFilter(ValueFilter.create().fieldName(getPermissionFieldName().getPath()).addValues(context.getAuthInfo().getPrincipals().stream().map(PrincipalKey::toString).collect(Collectors.toList())).build()).searchMode(SearchMode.COUNT).build();
final FindNodesByQueryResult result = FindNodesByQueryCommand.create(this).query(query).build().execute();
return result.getTotalHits() == nodeIds.getSize();
}
use of com.enonic.xp.security.PrincipalKey in project xp by enonic.
the class ApplicationAuditLogSupportImpl method log.
private void log(final String type, final PropertyTree data, final AuditLogUris uris) {
final Context rootContext = ContextBuilder.copyOf(ContextAccessor.current()).build();
final PrincipalKey userPrincipalKey = rootContext.getAuthInfo().getUser() != null ? rootContext.getAuthInfo().getUser().getKey() : PrincipalKey.ofAnonymous();
ContextBuilder.from(rootContext).authInfo(AuthenticationInfo.copyOf(rootContext.getAuthInfo()).principals(RoleKeys.AUDIT_LOG).build()).build().callWith(() -> auditLogService.log(LogAuditLogParams.create().type(type).source(SOURCE).data(data).objectUris(uris).user(userPrincipalKey).build()));
}
use of com.enonic.xp.security.PrincipalKey in project xp by enonic.
the class SecurityServiceImplTest method testUpdateIdProvider.
@Test
public void testUpdateIdProvider() throws Exception {
runAsAdmin(() -> {
// setup
final PrincipalKey userKey = PrincipalKey.ofUser(SYSTEM, "User1");
final PrincipalKey groupKey1 = PrincipalKey.ofGroup(SYSTEM, "Group-a");
final PrincipalKey groupKey2 = PrincipalKey.ofGroup(SYSTEM, "group-b");
final IdProviderAccessControlList permissions = IdProviderAccessControlList.of(IdProviderAccessControlEntry.create().principal(userKey).access(CREATE_USERS).build(), IdProviderAccessControlEntry.create().principal(groupKey1).access(ADMINISTRATOR).build(), IdProviderAccessControlEntry.create().principal(groupKey2).access(WRITE_USERS).build());
final CreateIdProviderParams createIdProvider = CreateIdProviderParams.create().key(IdProviderKey.from("enonic")).displayName("Enonic Id Provider").permissions(permissions).description("old id provider description").build();
final IdProvider idProviderCreated = securityService.createIdProvider(createIdProvider);
// exercise
final IdProviderAccessControlList updatePermissions = IdProviderAccessControlList.of(IdProviderAccessControlEntry.create().principal(userKey).access(CREATE_USERS).build(), IdProviderAccessControlEntry.create().principal(groupKey1).access(ADMINISTRATOR).build());
final UpdateIdProviderParams updateIdProvider = UpdateIdProviderParams.create().key(IdProviderKey.from("enonic")).displayName("Enonic Id Provider updated").permissions(updatePermissions).description("new id provider description").build();
final IdProvider idProviderUpdated = securityService.updateIdProvider(updateIdProvider);
// verify
assertNotNull(idProviderUpdated);
assertEquals("enonic", idProviderUpdated.getKey().toString());
assertEquals("Enonic Id Provider updated", idProviderUpdated.getDisplayName());
assertEquals("new id provider description", idProviderUpdated.getDescription());
final IdProviderAccessControlList updatedPermissions = securityService.getIdProviderPermissions(IdProviderKey.from("enonic"));
assertNotNull(idProviderCreated);
assertEquals(CREATE_USERS, updatedPermissions.getEntry(userKey).getAccess());
assertEquals(ADMINISTRATOR, updatedPermissions.getEntry(groupKey1).getAccess());
assertNull(updatedPermissions.getEntry(groupKey2));
});
}
use of com.enonic.xp.security.PrincipalKey in project xp by enonic.
the class SecurityServiceImplTest method testUpdateUserDuplicatedEmailWithEditor.
@Test
public void testUpdateUserDuplicatedEmailWithEditor() {
try {
runAsAdmin(() -> {
final PrincipalKey userKey1 = PrincipalKey.ofUser(SYSTEM, "User1");
final CreateUserParams createUser1 = CreateUserParams.create().userKey(userKey1).displayName("User 1").email("same_email@enonic.com").login("User1").password("123456").build();
final PrincipalKey userKey2 = PrincipalKey.ofUser(SYSTEM, "user2");
final CreateUserParams createUser2 = CreateUserParams.create().userKey(userKey2).displayName("User 2").email("same_email@enonic.com").login("user2").build();
final User user1 = securityService.createUser(createUser1);
securityService.createUser(createUser2);
final UpdateUserParams updateUserParams = UpdateUserParams.create(user1).editor(editableUser -> editableUser.email = "same_email@enonic.com").build();
securityService.updateUser(updateUserParams);
refresh();
});
fail("Expected exception");
} catch (IllegalArgumentException e) {
assertEquals("A user with email 'same_email@enonic.com' already exists in id provider 'system'", e.getMessage());
}
}
Aggregations