Author: mir
Date: Tue Mar 23 17:51:06 2010
New Revision: 926683

URL: http://svn.apache.org/viewvc?rev=926683&view=rev
Log:
CLEREZZA-172: made the BasePermissionsRole undeletable in usermanager. Now this 
role is assigned every newly created agent

Modified:
    
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.config/src/main/resources/META-INF/config.rdf
    
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.webinterface/src/main/resources/org/apache/clerezza/platform/usermanager/webinterface/role-overview-template.xhtml
    
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.usermanager/src/main/java/org/apache/clerezza/platform/usermanager/UserManagerImpl.java
    
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.rdf.ontologies/src/main/resources/org/apache/clerezza/rdf/ontologies/permission.rdf

Modified: 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.config/src/main/resources/META-INF/config.rdf
URL: 
http://svn.apache.org/viewvc/incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.config/src/main/resources/META-INF/config.rdf?rev=926683&r1=926682&r2=926683&view=diff
==============================================================================
--- 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.config/src/main/resources/META-INF/config.rdf
 (original)
+++ 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.config/src/main/resources/META-INF/config.rdf
 Tue Mar 23 17:51:06 2010
@@ -20,6 +20,7 @@
                <sioc:has_function>
                        <perm:Role>
                                <dc:title>BasePermissionsRole</dc:title>
+                               <rdf:type 
rdf:resource="http://clerezza.org/2008/10/permission#BaseRole"/>
                                <perm:hasPermission rdf:parseType="Resource">
                                        
<perm:javaPermissionEntry>(java.util.PropertyPermission "*" 
"read")</perm:javaPermissionEntry>
                                </perm:hasPermission>
@@ -39,7 +40,6 @@
                </sioc:has_function>
        </foaf:Agent>
        <perm:Role>
-               <rdf:type 
rdf:resource="http://clerezza.org/2008/10/permission#BaseRole"/>
                <dc:title>DefaultRole</dc:title>
                <perm:hasPermission rdf:parseType="Resource">
                        
<perm:javaPermissionEntry>(org.apache.clerezza.platform.accountcontrolpanel.AccountControlAccessPermission
 "{username}" "")</perm:javaPermissionEntry>

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=926683&r1=926682&r2=926683&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
 Tue Mar 23 17:51:06 2010
@@ -316,7 +316,6 @@ public class UserManagerWeb implements G
                for (int i = 0; i < userRole.length; i++) {
                        userRoles.add(userRole[i]);
                }
-
                StringWriter writer = new StringWriter();
                checkParamLength(writer, userName, "Username");
                checkQuote(writer, userName, "Username");
@@ -325,14 +324,11 @@ public class UserManagerWeb implements G
                checkQuote(writer, pathPrefix, "Path-Prefix");
                checkParamLength(writer, psw, "Password");
                checkQuote(writer, psw, "Password");
-
                String message = writer.toString();
                if (!message.isEmpty()) {
                        returnInputErrorMessages(message);
                }
-
                userManager.storeUser(userName, email, psw, userRoles, 
pathPrefix);
-
                MGraph contentGraph = cgProvider.getContentGraph();
                NonLiteral user = new BNode();
                contentGraph.add(new TripleImpl(user, RDF.type, FOAF.Agent));

Modified: 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.usermanager.webinterface/src/main/resources/org/apache/clerezza/platform/usermanager/webinterface/role-overview-template.xhtml
URL: 
http://svn.apache.org/viewvc/incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.usermanager.webinterface/src/main/resources/org/apache/clerezza/platform/usermanager/webinterface/role-overview-template.xhtml?rev=926683&r1=926682&r2=926683&view=diff
==============================================================================
--- 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.usermanager.webinterface/src/main/resources/org/apache/clerezza/platform/usermanager/webinterface/role-overview-template.xhtml
 (original)
+++ 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.platform.usermanager.webinterface/src/main/resources/org/apache/clerezza/platform/usermanager/webinterface/role-overview-template.xhtml
 Tue Mar 23 17:51:06 2010
@@ -1,6 +1,7 @@
 def permission(s: Any) = new UriRef("http://clerezza.org/2008/10/permission#"; 
+ s)
 def umr(s: Any) = new UriRef("http://clerezza.org/2009/05/usermanager#"; + s)
 def dc(s: Any) = new UriRef("http://purl.org/dc/elements/1.1/"; + s)
+def rdf(s: Any) = new UriRef("http://www.w3.org/1999/02/22-rdf-syntax-ns#"; + s)
 
 resultDocModifier.addStyleSheet("js/fancybox/jquery.fancybox.css");
 
resultDocModifier.addScriptReference("js/fancybox/jquery.fancybox-1.2.1.pack.js");
@@ -16,48 +17,58 @@ resultDocModifier.addNodes2Elem("tx-modu
 resultDocModifier.addNodes2Elem("tx-contextual-buttons-ol", <li><a 
id="deleteButton" class="tx-button tx-button-remove" href="#">Remove</a></li>);
 resultDocModifier.addNodes2Elem("tx-contextual-buttons-ol", <li><a 
id="addButton" class="tx-button tx-button-create" 
href="add-role.xhtml">Create</a></li>)
 
+               <div id="tx-content">
+                       <div class="tx-panel">
 
+                       </div>
 
-        <div id="tx-content">
-            <div class="tx-panel">
-                
-            </div>    
-            
-            <div class="tx-list">
-                <fieldset>
-                    <table>
+                       <div class="tx-list">
+                               <fieldset>
+                                       <table>
                                                <colgroup>
                                                        <col width="40" />
                                                        <col width="40" />
                                                        <col width="80" />
                                                        <col width="100" />
                                                </colgroup>
-                        <thead>
-                            <tr>
-                                <th colspan="2"><a href="">Name</a></th>
-                                <th><a href="">Special</a></th>
-                                <th><a href="">Permissions</a></th>
-                            </tr>
-                        </thead>
-                        <tbody>
-                
-                    {for (role <- (res/umr("role"))) yield {
-                    <tr id={role/dc("title")*}>
-                        <td>
-                            <input type="checkbox" value={role/dc("title")*} />
-                        </td>
-                        <td>{role/dc("title")*}</td>
-                        <td>
-                            <a href={"add-single-property?roleTitle=" + 
(role/dc("title")*)} >add single-valued property</a> /
-                            <a href={"add-multiple-property?roleTitle=" + 
(role/dc("title")*)} >add multiple-valued property</a> /
-                            <a href={"manage-custom-properties?role=" + 
(role/dc("title")*)} >manage customfields</a>
-                        </td>
-                        <td><a href={"manage-role-permissions?roleTitle=" + 
(role/dc("title")*)}>show permissions</a></td>
-                    </tr>
-                   }
-                                  }
-                    </tbody>
-                    </table>
-                </fieldset> 
-            </div>
-        </div>
+                                               <thead>
+                                                       <tr>
+                                                               <th 
colspan="2"><a href="">Name</a></th>
+                                                               <th><a 
href="">Special</a></th>
+                                                               <th><a 
href="">Permissions</a></th>
+                                                       </tr>
+                                               </thead>
+                                               <tbody>
+
+                                       {
+                                               for (role <- (res/umr("role"))) 
yield {
+                                                       <tr 
id={role/dc("title")*}>
+                                                               <td>
+                                                                       {
+                                                                               
var isBaseRole:Boolean = false
+                                                                               
for (rdfType <- (role/rdf("type"))) yield {
+                                                                               
        if (rdfType.getNode.equals(permission("BaseRole"))) {
+                                                                               
                isBaseRole = true;
+                                                                               
        } else {}
+                                                                               
}
+                                                                               
if (!isBaseRole) {
+                                                                               
        <input type="checkbox"  value={role/dc("title")*}/>
+                                                                               
} else {}
+
+                                                                       }
+                                                               </td>
+                                                               
<td>{role/dc("title")*}</td>
+                                                               <td>
+                                                                       <a 
href={"add-single-property?roleTitle=" + (role/dc("title")*)} >add 
single-valued property</a> /
+                                                                       <a 
href={"add-multiple-property?roleTitle=" + (role/dc("title")*)} >add 
multiple-valued property</a> /
+                                                                       <a 
href={"manage-custom-properties?role=" + (role/dc("title")*)} >manage 
customfields</a>
+                                                               </td>
+                                                               <td><a 
href={"manage-role-permissions?roleTitle=" + (role/dc("title")*)}>show 
permissions</a></td>
+                                                       </tr>
+                                          }
+                                       }
+                                       </tbody>
+                                       </table>
+                               </fieldset>
+                       </div>
+               </div>

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=926683&r1=926682&r2=926683&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
 Tue Mar 23 17:51:06 2010
@@ -103,29 +103,11 @@ public class UserManagerImpl implements 
 
        @Override
        public Iterator<NonLiteral> getRoles() {
-               return getRoles(PERMISSION.Role);
-       }
-
-       private Iterator<NonLiteral> getRoles(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.");
-                       }
-               };
+               final Iterator<NonLiteral> rolesIter = 
getResourcesOfType(PERMISSION.Role);
+               if (!rolesIter.hasNext()) {
+                       return rolesIter;
+               }
+               return rolesIter;
        }
 
        @Override
@@ -160,9 +142,17 @@ public class UserManagerImpl implements 
                if (role == null) {
                        return;
                }
+               if (isBaseRole(role)) {
+                       return;
+               }
                deleteTriplesOfASubject(role);
        }
 
+       private boolean isBaseRole(NonLiteral role) {
+               GraphNode roleNode = new GraphNode(role, systemGraph);
+               return roleNode.hasProperty(RDF.type, PERMISSION.BaseRole);
+       }
+
        private void deleteTriplesOfASubject(NonLiteral subject) {
                Iterator<Triple> triples = systemGraph.filter(subject, null, 
null);
                while (triples.hasNext()) {
@@ -340,18 +330,7 @@ public class UserManagerImpl implements 
                                        new PlainLiteralImpl(pathPrefix)));
                }
                if (!assignedRoles.isEmpty()) {
-                       for (String roleTitle : assignedRoles) {
-
-                               // skip empty strings
-                               if ((roleTitle == null) || 
(roleTitle.trim().length() == 0)) {
-                                       continue;
-                               }
-                               NonLiteral role = getRoleByTitle(roleTitle);
-                               if (role == null) {
-                                       throw new 
RoleUnavailableException(roleTitle);
-                               }
-                               systemGraph.add(new TripleImpl(user, 
SIOC.has_function, role));
-                       }
+                       addRolesToUser(assignedRoles, user);
                }
        }
 
@@ -417,23 +396,31 @@ public class UserManagerImpl implements 
                }
                if (!assignedRoles.isEmpty()) {
                        userGraphNode.deleteProperties(SIOC.has_function);
-                       for (String roleTitle : assignedRoles) {
-
-                               // skip empty strings
-                               if ((roleTitle == null) || 
(roleTitle.trim().length() == 0)) {
-                                       continue;
-                               }
-                               NonLiteral role = getRoleByTitle(roleTitle);
-                               if (role == null) {
-                                       throw new 
RoleUnavailableException(roleTitle);
-                               }
-                               userGraphNode.addProperty(SIOC.has_function, 
role);
-                       }
+                       addRolesToUser(assignedRoles, 
(BNode)userGraphNode.getNode());
                        //refresh the policy so it will recheck the permissions
                        Policy.getPolicy().refresh();
                }
        }
 
+       private void addRolesToUser(List<String> assignedRoles, BNode user) 
throws RoleUnavailableException {
+               for (String roleTitle : assignedRoles) {
+                       // skip empty strings
+                       if ((roleTitle == null) || (roleTitle.trim().length() 
== 0)) {
+                               continue;
+                       }
+                       NonLiteral role = getRoleByTitle(roleTitle);
+                       if (role == null) {
+                               throw new RoleUnavailableException(roleTitle);
+                       }
+                       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) {
                node.deleteProperties(predicate);
                node.addProperty(predicate, object);
@@ -460,7 +447,29 @@ public class UserManagerImpl implements 
 
        @Override
        public Iterator<NonLiteral> getUsers() {
-               return getRoles(FOAF.Agent);
+               return getResourcesOfType(FOAF.Agent);
+       }
+
+       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.");
+                       }
+               };
        }
 
        @Override

Modified: 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.rdf.ontologies/src/main/resources/org/apache/clerezza/rdf/ontologies/permission.rdf
URL: 
http://svn.apache.org/viewvc/incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.rdf.ontologies/src/main/resources/org/apache/clerezza/rdf/ontologies/permission.rdf?rev=926683&r1=926682&r2=926683&view=diff
==============================================================================
--- 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.rdf.ontologies/src/main/resources/org/apache/clerezza/rdf/ontologies/permission.rdf
 (original)
+++ 
incubator/clerezza/trunk/org.apache.clerezza.parent/org.apache.clerezza.rdf.ontologies/src/main/resources/org/apache/clerezza/rdf/ontologies/permission.rdf
 Tue Mar 23 17:51:06 2010
@@ -26,6 +26,13 @@
                rights</skos:definition>
        <rdfs:isDefinedBy 
rdf:resource="http://clerezza.org/2008/10/permission#"; />
 </rdfs:Class>
+<rdfs:Class rdf:about="http://clerezza.org/2008/10/permission#BaseRole";>
+       <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#Class"/>
+       <rdfs:label xml:lang="en">Base Role</rdfs:label>
+       <skos:definition xml:lang="en">A base role is a set of connected
+               rights that every user automatically has.</skos:definition>
+       <rdfs:isDefinedBy 
rdf:resource="http://clerezza.org/2008/10/permission#"; />
+</rdfs:Class>
 <rdfs:Class rdf:about="http://clerezza.org/2008/10/permission#Permission";>
        <rdf:type rdf:resource="http://www.w3.org/2002/07/owl#Class"/>
        <rdfs:label xml:lang="en">Permission</rdfs:label>


Reply via email to