pnever 2003/12/03 09:34:25
Modified: src/share/org/apache/slide/lock LockImpl.java
src/share/org/apache/slide/util Configuration.java
Log:
Added "principal identified locks".
If security is on and the property org.apache.slide.principalIdentifiedLocks=true
the opaquelocktoken is not checked when the authenticated user is the
lock owner.
Revision Changes Path
1.38 +19 -4 jakarta-slide/src/share/org/apache/slide/lock/LockImpl.java
Index: LockImpl.java
===================================================================
RCS file: /home/cvs/jakarta-slide/src/share/org/apache/slide/lock/LockImpl.java,v
retrieving revision 1.37
retrieving revision 1.38
diff -u -r1.37 -r1.38
--- LockImpl.java 1 Dec 2003 12:10:49 -0000 1.37
+++ LockImpl.java 3 Dec 2003 17:34:25 -0000 1.38
@@ -560,7 +560,22 @@
public boolean checkLockToken(SlideToken slideToken, NodeLock token) {
if (!slideToken.isEnforceLockTokens())
return true;
+
+ SubjectNode principalNode = null;
+ SubjectNode ownerNode = SubjectNode.getSubjectNode(token.getSubjectUri());
+ try {
+ principalNode = (SubjectNode)securityHelper.getPrincipal(slideToken);
+ }
+ catch (SlideException e) {}
+ if (Configuration.usePrincipalIdentifiedLocks() &&
+ ownerNode != null &&
+ ownerNode != SubjectNode.UNAUTHENTICATED &&
+ ownerNode.equals(principalNode)) {
+ return true;
+ }
+ else {
return (slideToken.checkLockToken(token.getLockId()));
+ }
}
/**
1.14 +33 -4 jakarta-slide/src/share/org/apache/slide/util/Configuration.java
Index: Configuration.java
===================================================================
RCS file:
/home/cvs/jakarta-slide/src/share/org/apache/slide/util/Configuration.java,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -r1.13 -r1.14
--- Configuration.java 18 Aug 2003 06:51:52 -0000 1.13
+++ Configuration.java 3 Dec 2003 17:34:25 -0000 1.14
@@ -174,6 +174,15 @@
/**
+ * Property specifying whether principal-identified locks are supported.
+ * <pre>
+ * org.apache.slide.principalIdentifiedLocks
+ * </pre>
+ */
+ public static final String PrincipalIdentifiedLocks =
"org.apache.slide.principalIdentifiedLocks";
+
+
+ /**
* Property specifying whether to run in debug mode.
* <pre>
* org.apache.slide.debug
@@ -248,6 +257,12 @@
private static String _urlEncoding;
+ /**
+ * Principal identified locks.
+ */
+ private static boolean _principalIdentifiedLocks;
+
+
// ------------------------------------------------------------- Properties
@@ -311,6 +326,13 @@
return _urlEncoding;
}
+ /**
+ * Returns true if Principal identified locks are enabled.
+ */
+ public static boolean usePrincipalIdentifiedLocks() {
+ return _principalIdentifiedLocks;
+ }
+
// ------------------------------------------------------------ Initializer
@@ -433,6 +455,13 @@
_binding = true;
} else {
_binding = false;
+ }
+
+ prop = _default.getProperty(Property.PrincipalIdentifiedLocks, "false");
+ if (prop.equalsIgnoreCase("true") || prop.equalsIgnoreCase("on")) {
+ _principalIdentifiedLocks = true;
+ } else {
+ _principalIdentifiedLocks = false;
}
String defaultEncoding = new
java.io.InputStreamReader(System.in).getEncoding();
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]