Author: reto
Date: Thu Jun 17 22:33:10 2010
New Revision: 955771
URL: http://svn.apache.org/viewvc?rev=955771&view=rev
Log:
CLEREZZA-172: BaseRoles cannot be added or removed, they just comprise
permissions that every user has
Modified:
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.security/src/main/java/org/apache/clerezza/platform/security/UserAwarePolicy.java
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.usermanager.webinterface/src/main/java/org/apache/clerezza/platform/usermanager/webinterface/UserManagerWeb.java
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.usermanager/src/main/java/org/apache/clerezza/platform/usermanager/UserManager.java
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.usermanager/src/main/java/org/apache/clerezza/platform/usermanager/UserManagerImpl.java
Modified:
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.security/src/main/java/org/apache/clerezza/platform/security/UserAwarePolicy.java
URL:
http://svn.apache.org/viewvc/incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.security/src/main/java/org/apache/clerezza/platform/security/UserAwarePolicy.java?rev=955771&r1=955770&r2=955771&view=diff
==============================================================================
---
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.security/src/main/java/org/apache/clerezza/platform/security/UserAwarePolicy.java
(original)
+++
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.security/src/main/java/org/apache/clerezza/platform/security/UserAwarePolicy.java
Thu Jun 17 22:33:10 2010
@@ -44,9 +44,11 @@ import org.apache.clerezza.rdf.core.BNod
import org.apache.clerezza.rdf.core.MGraph;
import org.apache.clerezza.rdf.core.NonLiteral;
import org.apache.clerezza.rdf.core.Triple;
+import org.apache.clerezza.rdf.core.UriRef;
import org.apache.clerezza.rdf.core.impl.PlainLiteralImpl;
import org.apache.clerezza.rdf.ontologies.PERMISSION;
import org.apache.clerezza.rdf.ontologies.PLATFORM;
+import org.apache.clerezza.rdf.ontologies.RDF;
import org.apache.clerezza.rdf.ontologies.SIOC;
/**
@@ -194,6 +196,10 @@ public class UserAwarePolicy extends Pol
.getObject();
result.addAll(getPermissionEntriesOfARole(anotherRole,
userName));
}
+ Iterator<NonLiteral> baseRoles =
getResourcesOfType(PERMISSION.BaseRole);
+ while(baseRoles.hasNext()) {
+
result.addAll(getPermissionEntriesOfARole(baseRoles.next(), userName));
+ }
return result;
}
@@ -229,4 +235,27 @@ public class UserAwarePolicy extends Pol
}
return result;
}
+
+ private Iterator<NonLiteral> getResourcesOfType(UriRef type) {
+ final Iterator<Triple> triples =
+ systemGraph.filter(null, RDF.type, type);
+ return new Iterator<NonLiteral>() {
+
+ @Override
+ public boolean hasNext() {
+ return triples.hasNext();
+ }
+
+ @Override
+ public NonLiteral next() {
+ return triples.next().getSubject();
+ }
+
+ @Override
+ public void remove() {
+ throw new UnsupportedOperationException("Not
supported yet.");
+ }
+ };
+ }
+
}
Modified:
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.usermanager.webinterface/src/main/java/org/apache/clerezza/platform/usermanager/webinterface/UserManagerWeb.java
URL:
http://svn.apache.org/viewvc/incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.usermanager.webinterface/src/main/java/org/apache/clerezza/platform/usermanager/webinterface/UserManagerWeb.java?rev=955771&r1=955770&r2=955771&view=diff
==============================================================================
---
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.usermanager.webinterface/src/main/java/org/apache/clerezza/platform/usermanager/webinterface/UserManagerWeb.java
(original)
+++
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.usermanager.webinterface/src/main/java/org/apache/clerezza/platform/usermanager/webinterface/UserManagerWeb.java
Thu Jun 17 22:33:10 2010
@@ -27,6 +27,8 @@ import java.net.URLEncoder;
import java.security.AccessControlException;
import java.security.AccessController;
import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
@@ -281,11 +283,6 @@ public class UserManagerWeb implements G
resultGraph.add(new TripleImpl(addUserPage, RDF.type,
PLATFORM.HeadedPage));
- Iterator<NonLiteral> roles = userManager.getRoles();
- while (roles.hasNext()) {
- resultGraph.add(new TripleImpl(addUserPage,
USERMANAGER.role, roles
- .next()));
- }
MGraph contentGraph = cgProvider.getContentGraph();
Iterator<Triple> formFields = contentGraph.filter(null,
RDF.type,
USERMANAGER.UserFormField);
@@ -297,8 +294,10 @@ public class UserManagerWeb implements G
}
- return new GraphNode(addUserPage, new UnionMGraph(
+ GraphNode result = new GraphNode(addUserPage, new UnionMGraph(
resultGraph, systemGraph, contentGraph));
+ addAvailableRoles(result);
+ return result;
}
@POST
@@ -585,11 +584,7 @@ public class UserManagerWeb implements G
USERMANAGER.UpdateUserPage));
resultGraph.add(new TripleImpl(updateUserPage, RDF.type,
PLATFORM.HeadedPage));
- Iterator<NonLiteral> roles = userManager.getRoles();
- while (roles.hasNext()) {
- resultGraph.add(new TripleImpl(updateUserPage,
- USERMANAGER.role,
roles.next()));
- }
+
MGraph contentGraph = cgProvider.getContentGraph();
resultGraph.add(new TripleImpl(updateUserPage,
USERMANAGER.user,
@@ -621,8 +616,10 @@ public class UserManagerWeb implements G
CUSTOMPROPERTY.actualvalues, value));
}
}
- return new GraphNode(updateUserPage,
+ GraphNode result = new GraphNode(updateUserPage,
new UnionMGraph(resultGraph,
systemGraph, contentGraph));
+ addAvailableRoles(result);
+ return result;
}
throw new
WebApplicationException(Response.status(Status.NOT_FOUND)
.entity("User " + userName + "does not exist in
our database")
@@ -636,20 +633,19 @@ public class UserManagerWeb implements G
throws UnsupportedEncodingException {
String userName = getTextParamValueOfForm(form, 0, "userName");
- String email = getTextParamValueOfForm(form, 0, "email");
String pathPrefix = getTextParamValueOfForm(form, 0,
"pathPrefix");
String[] userRole = form.getTextParameterValues("userRoles");
- List<String> userRoles = new ArrayList<String>();
- for (int i = 0; i < userRole.length; i++) {
- userRoles.add(userRole[i]);
+ List<String> userRoleList = Arrays.asList(userRole);
+ String email = getTextParamValueOfForm(form, 0, "email");
+ if (email != null) {
+ email = email.replaceAll("mailto:", "");
}
- email = email.replaceAll("mailto:", "");
- NonLiteral user = userManager.getUserByName(userName);
+ NonLiteral user = (NonLiteral)
userManager.getUserInSystemGraph(userName).getNode();
if (user != null) {
- userManager.updateUser(userName, email, null, userRoles,
+ userManager.updateUser(userName, email, null,
userRoleList,
pathPrefix);
MGraph contentGraph = cgProvider.getContentGraph();
- saveCustomUserInformation(contentGraph, userName,
userRoles, form);
+ saveCustomUserInformation(contentGraph, userName,
userRoleList, form);
return
RedirectUtil.createSeeOtherResponse("list-users", uriInfo);
}
return Response.status(Status.NOT_FOUND).entity(
@@ -673,16 +669,12 @@ public class UserManagerWeb implements G
USERMANAGER.RoleOverviewPage));
resultGraph.add(new TripleImpl(roleOverviewPage, RDF.type,
PLATFORM.HeadedPage));
-
- Iterator<NonLiteral> roles = userManager.getRoles();
-
- while (roles.hasNext()) {
- resultGraph.add(new TripleImpl(roleOverviewPage,
USERMANAGER.role,
- roles.next()));
- }
- return new GraphNode(roleOverviewPage,
+ GraphNode result = new GraphNode(roleOverviewPage,
new UnionMGraph(resultGraph, systemGraph));
+ addAvailableRoles(result);
+ return result;
+
}
/**
@@ -945,4 +937,11 @@ public class UserManagerWeb implements G
"Main-Modules"));
return items;
}
+
+ private void addAvailableRoles(GraphNode result) {
+ Iterator<NonLiteral> roles = userManager.getRoles();
+ while (roles.hasNext()) {
+ result.addProperty(USERMANAGER.role, roles.next());
+ }
+ }
}
Modified:
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.usermanager/src/main/java/org/apache/clerezza/platform/usermanager/UserManager.java
URL:
http://svn.apache.org/viewvc/incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.usermanager/src/main/java/org/apache/clerezza/platform/usermanager/UserManager.java?rev=955771&r1=955770&r2=955771&view=diff
==============================================================================
---
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.usermanager/src/main/java/org/apache/clerezza/platform/usermanager/UserManager.java
(original)
+++
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.usermanager/src/main/java/org/apache/clerezza/platform/usermanager/UserManager.java
Thu Jun 17 22:33:10 2010
@@ -18,6 +18,7 @@
*/
package org.apache.clerezza.platform.usermanager;
+import java.util.Collection;
import java.util.Iterator;
import java.util.List;
@@ -62,7 +63,7 @@ public interface UserManager {
/**
*
- * @return Iterator defining all roles
+ * @return Iterator defining all roles, except base roles
*/
public Iterator<NonLiteral> getRoles();
@@ -130,15 +131,16 @@ public interface UserManager {
List<String> assignedRoles, String pathPrefix);
/**
- *
+ * Updates the user with the specified userName
+ *
* @param name, may not be null
- * @param email
+ * @param email the email address (note that this is not the mailto-uri)
* @param password
* @param assignedRoles
* @param pathPrefix
*/
public void updateUser(String name, String email, String password,
- List<String> assignedRoles, String pathPrefix);
+ Collection<String> assignedRoles, String pathPrefix);
/**
* Checks if the username exists
Modified:
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.usermanager/src/main/java/org/apache/clerezza/platform/usermanager/UserManagerImpl.java
URL:
http://svn.apache.org/viewvc/incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.usermanager/src/main/java/org/apache/clerezza/platform/usermanager/UserManagerImpl.java?rev=955771&r1=955770&r2=955771&view=diff
==============================================================================
---
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.usermanager/src/main/java/org/apache/clerezza/platform/usermanager/UserManagerImpl.java
(original)
+++
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.usermanager/src/main/java/org/apache/clerezza/platform/usermanager/UserManagerImpl.java
Thu Jun 17 22:33:10 2010
@@ -24,8 +24,11 @@ import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.security.Policy;
import java.security.PrivilegedAction;
+import java.util.Collection;
+import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
+import java.util.Set;
import org.apache.felix.scr.annotations.Component;
import org.apache.felix.scr.annotations.Reference;
import org.apache.felix.scr.annotations.Service;
@@ -103,11 +106,18 @@ public class UserManagerImpl implements
@Override
public Iterator<NonLiteral> getRoles() {
- final Iterator<NonLiteral> rolesIter =
getResourcesOfType(PERMISSION.Role);
- if (!rolesIter.hasNext()) {
- return rolesIter;
+ final Iterator<NonLiteral> allRolesIter =
getResourcesOfType(PERMISSION.Role);
+ final Set<NonLiteral> allRolesSet = new HashSet<NonLiteral>();
+ while (allRolesIter.hasNext()) {
+ allRolesSet.add(allRolesIter.next());
+ }
+ final Set<NonLiteral> nonBaseRolesSet = new
HashSet<NonLiteral>();
+ for (NonLiteral role : allRolesSet) {
+ if (!systemGraph.filter(role, RDF.type,
PERMISSION.BaseRole).hasNext()) {
+ nonBaseRolesSet.add(role);
+ }
}
- return rolesIter;
+ return nonBaseRolesSet.iterator();
}
@Override
@@ -365,12 +375,11 @@ public class UserManagerImpl implements
@Override
public void updateUser(String name, String email, String password,
- List<String> assignedRoles, String pathPrefix) {
+ Collection<String> assignedRoles, String pathPrefix) {
if (name == null) {
- return;
+ throw new IllegalArgumentException("userName may not be
null");
}
-
NonLiteral user = getUserByUserName(name);
if (user == null) {
throw new UserNotExistsException(name);
@@ -402,7 +411,7 @@ public class UserManagerImpl implements
}
}
- private void addRolesToUser(List<String> assignedRoles, BNode user)
throws RoleUnavailableException {
+ private void addRolesToUser(Collection<String> assignedRoles, BNode
user) throws RoleUnavailableException {
for (String roleTitle : assignedRoles) {
// skip empty strings
if ((roleTitle == null) || (roleTitle.trim().length()
== 0)) {
@@ -414,11 +423,6 @@ public class UserManagerImpl implements
}
systemGraph.add(new TripleImpl(user, SIOC.has_function,
role));
}
- Iterator<NonLiteral> baseRoles =
getResourcesOfType(PERMISSION.BaseRole);
- while (baseRoles.hasNext()) {
- NonLiteral baseRole = baseRoles.next();
- systemGraph.add(new TripleImpl(user, SIOC.has_function,
baseRole));
- }
}
private void updateProperty(GraphNode node, UriRef predicate, Resource
object) {