diff --git a/java/com.sap.sse.security/src/com/sap/sse/security/impl/SecurityServiceImpl.java b/java/com.sap.sse.security/src/com/sap/sse/security/impl/SecurityServiceImpl.java index 309afe7909f..ab8967eafa0 100644 --- a/java/com.sap.sse.security/src/com/sap/sse/security/impl/SecurityServiceImpl.java +++ b/java/com.sap.sse.security/src/com/sap/sse/security/impl/SecurityServiceImpl.java @@ -120,6 +120,7 @@ import com.sap.sse.security.operations.DeleteRoleDefinitionOperation; import com.sap.sse.security.operations.DeleteUserGroupOperation; import com.sap.sse.security.operations.DeleteUserOperation; import com.sap.sse.security.operations.PutRoleDefinitionToUserGroupOperation; +import com.sap.sse.security.operations.RemoveAccessTokenOperation; import com.sap.sse.security.operations.RemovePermissionForUserOperation; import com.sap.sse.security.operations.RemoveRoleDefinitionFromUserGroupOperation; import com.sap.sse.security.operations.RemoveRoleFromUserOperation; @@ -1683,7 +1684,7 @@ public class SecurityServiceImpl implements ReplicableSecurityService, ClearStat public void removeAccessToken(String username) { Subject subject = SecurityUtils.getSubject(); if (hasCurrentUserUpdatePermission(getUserByName(username))) { - apply(s -> s.internalRemoveAccessToken(username)); + apply(new RemoveAccessTokenOperation(username)); } else { throw new org.apache.shiro.authz.AuthorizationException("User " + subject.getPrincipal().toString() + " does not have permission to remove access token of user " + username); diff --git a/java/com.sap.sse.security/src/com/sap/sse/security/operations/RemoveAccessTokenOperation.java b/java/com.sap.sse.security/src/com/sap/sse/security/operations/RemoveAccessTokenOperation.java new file mode 100644 index 00000000000..5a89b3db839 --- /dev/null +++ b/java/com.sap.sse.security/src/com/sap/sse/security/operations/RemoveAccessTokenOperation.java @@ -0,0 +1,20 @@ +package com.sap.sse.security.operations; + +import com.sap.sse.replication.OperationWithResult; +import com.sap.sse.security.impl.ReplicableSecurityService; + +public class RemoveAccessTokenOperation implements OperationWithResult { + private static final long serialVersionUID = 1L; + + protected final String username; + + public RemoveAccessTokenOperation(String username) { + this.username = username; + } + + @Override + public Void internalApplyTo(ReplicableSecurityService toState) throws Exception { + toState.internalRemoveAccessToken(username); + return null; + } +}