You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-commits@jackrabbit.apache.org by al...@apache.org on 2014/04/24 13:58:15 UTC
svn commit: r1589684 - in /jackrabbit/oak/branches/1.0: ./
oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/lock/LockManagerImpl.java
Author: alexparvulescu
Date: Thu Apr 24 11:58:14 2014
New Revision: 1589684
URL: http://svn.apache.org/r1589684
Log:
OAK-1765 An admin user should be able to unlock any node
- merged to 1.0 branch
Modified:
jackrabbit/oak/branches/1.0/ (props changed)
jackrabbit/oak/branches/1.0/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/lock/LockManagerImpl.java
Propchange: jackrabbit/oak/branches/1.0/
------------------------------------------------------------------------------
Merged /jackrabbit/oak/trunk:r1589682
Modified: jackrabbit/oak/branches/1.0/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/lock/LockManagerImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/branches/1.0/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/lock/LockManagerImpl.java?rev=1589684&r1=1589683&r2=1589684&view=diff
==============================================================================
--- jackrabbit/oak/branches/1.0/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/lock/LockManagerImpl.java (original)
+++ jackrabbit/oak/branches/1.0/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/lock/LockManagerImpl.java Thu Apr 24 11:58:14 2014
@@ -30,6 +30,8 @@ import javax.jcr.lock.Lock;
import javax.jcr.lock.LockException;
import javax.jcr.lock.LockManager;
+import org.apache.jackrabbit.api.security.user.Authorizable;
+import org.apache.jackrabbit.api.security.user.User;
import org.apache.jackrabbit.oak.api.Tree.Status;
import org.apache.jackrabbit.oak.jcr.session.SessionContext;
import org.apache.jackrabbit.oak.jcr.delegate.NodeDelegate;
@@ -186,7 +188,7 @@ public class LockManagerImpl implements
return true;
} else if (sessionContext.getAttributes().get(RELAXED_LOCKING) == TRUE) {
String user = sessionContext.getSessionDelegate().getAuthInfo().getUserID();
- return node.isLockOwner(user);
+ return node.isLockOwner(user) || isAdmin(sessionContext, user);
} else {
return false;
}
@@ -194,6 +196,19 @@ public class LockManagerImpl implements
});
}
+ private boolean isAdmin(SessionContext sessionContext, String user) {
+ try {
+ Authorizable a = sessionContext.getUserManager().getAuthorizable(
+ user);
+ if (a != null && !a.isGroup()) {
+ return ((User) a).isAdmin();
+ }
+ } catch (RepositoryException e) {
+ // ?
+ }
+ return false;
+ }
+
private <T> T perform(SessionOperation<T> operation)
throws RepositoryException {
return delegate.perform(operation);