clerezza-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From bblf...@apache.org
Subject svn commit: r1125119 - /incubator/clerezza/trunk/parent/platform.accountcontrolpanel/platform.accountcontrolpanel.core/src/main/scala/org/apache/clerezza/platform/accountcontrolpanel/ProfilePanel.scala
Date Thu, 19 May 2011 21:24:17 GMT
Author: bblfish
Date: Thu May 19 21:24:17 2011
New Revision: 1125119

URL: http://svn.apache.org/viewvc?rev=1125119&view=rev
Log:
CLEREZZA-506: profile access denied -- placing some code inside AccessController.doPriviledged
fixes the problem. Something to keep watching out for. Also added scala logging support.

Modified:
    incubator/clerezza/trunk/parent/platform.accountcontrolpanel/platform.accountcontrolpanel.core/src/main/scala/org/apache/clerezza/platform/accountcontrolpanel/ProfilePanel.scala

Modified: incubator/clerezza/trunk/parent/platform.accountcontrolpanel/platform.accountcontrolpanel.core/src/main/scala/org/apache/clerezza/platform/accountcontrolpanel/ProfilePanel.scala
URL: http://svn.apache.org/viewvc/incubator/clerezza/trunk/parent/platform.accountcontrolpanel/platform.accountcontrolpanel.core/src/main/scala/org/apache/clerezza/platform/accountcontrolpanel/ProfilePanel.scala?rev=1125119&r1=1125118&r2=1125119&view=diff
==============================================================================
--- incubator/clerezza/trunk/parent/platform.accountcontrolpanel/platform.accountcontrolpanel.core/src/main/scala/org/apache/clerezza/platform/accountcontrolpanel/ProfilePanel.scala
(original)
+++ incubator/clerezza/trunk/parent/platform.accountcontrolpanel/platform.accountcontrolpanel.core/src/main/scala/org/apache/clerezza/platform/accountcontrolpanel/ProfilePanel.scala
Thu May 19 21:24:17 2011
@@ -37,8 +37,6 @@ import impl.{SimpleMGraph, TripleImpl}
 import org.apache.clerezza.rdf.utils.GraphNode
 import org.apache.clerezza.rdf.utils.UnionMGraph
 import org.osgi.service.component.ComponentContext
-import org.slf4j.Logger
-import org.slf4j.LoggerFactory
 import javax.ws.rs._
 import javax.ws.rs.core.Context
 import javax.ws.rs.core.MediaType
@@ -53,9 +51,9 @@ import org.apache.clerezza.platform.user
 import java.net.URI
 import org.apache.clerezza.rdf.scala.utils.{RichGraphNode, EasyGraphNode, EasyGraph}
 import org.apache.clerezza.rdf.ontologies._
+import org.slf4j.scala.Logging
 
 object ProfilePanel {
-	private val logger: Logger = LoggerFactory.getLogger(classOf[ProfilePanel])
 	val webIdTemplate = classOf[ProfilePanel].getAnnotation(classOf[Path]).value+"#me"
 
 
@@ -77,9 +75,8 @@ object ProfilePanel {
  */
 
 @Path("/user/{id}/profile")
-class ProfilePanel {
+class ProfilePanel extends Logging {
 
-	import ProfilePanel.logger
 	import collection.JavaConversions._
 	import EasyGraph._
 
@@ -97,15 +94,13 @@ class ProfilePanel {
 	private def getPersonalProfile(userName: String, info: UriInfo): EasyGraphNode = {
 		val profileDocUri = getSuggestedPPDUri(userName)
 
-		val userInSysGraph = userManager.getUserInSystemGraph(userName)
-
-
-		val profile: EasyGraphNode  = AccessController.doPrivileged(new PrivilegedAction[EasyGraphNode]
{
-			def run: EasyGraphNode = {
-				userInSysGraph.getNode match {
+		val (user,profile) = AccessController.doPrivileged(new PrivilegedAction[Pair[Resource,EasyGraphNode]]
{
+			def run: Pair[Resource,EasyGraphNode] = {
+				val userInSysGraph = userManager.getUserInSystemGraph(userName)
+				val profile = userInSysGraph.getNode match {
 					case blank: BNode => { //user does not have a webId yet
 						val g = new EasyGraph()
-						return (
+						(
 							g.bnode ⟝ CONTROLPANEL.isLocalProfile ⟶ true
 								⟝ CONTROLPANEL.suggestedPPDUri ⟶ profileDocUri
 								⟝ FOAF.primaryTopic ⟶ (g.bnode ⟝ PLATFORM.userName ⟶ userName)
@@ -123,10 +118,11 @@ class ProfilePanel {
 						res
 					}
 				}
+				(userInSysGraph.getNode,profile)
 			}
 		})
 
-		val friendInfo = for (kn: Triple <- profile.getGraph.filter(userInSysGraph.getNode.asInstanceOf[NonLiteral],
FOAF.knows, null)
+		val friendInfo = for (kn: Triple <- profile.getGraph.filter(user.asInstanceOf[NonLiteral],
FOAF.knows, null)
 		                     if kn.getObject.isInstanceOf[UriRef];
 		                     friend = kn.getObject.asInstanceOf[UriRef]
 									if (friend != profileDocUri)
@@ -336,14 +332,18 @@ class ProfilePanel {
 	                  @FormParam("webId") webId: UriRef,
 	                  @FormParam("name") name: String,
 	                  @FormParam("description") description: String): Response = {
-		val webIDInfo = webIdGraphsService.getWebIdInfo(webId)
-		val agent: GraphNode = new GraphNode(webId, webIDInfo.localPublicUserData)
-		agent.deleteProperties(FOAF.name)
-		agent.addPropertyValue(FOAF.name, name)
-		agent.deleteProperties(DC.description)
-		agent.addPropertyValue(DC.description, description)
-		logger.debug("local graph (uri: {}) is now of size {}", webIDInfo.webId, webIDInfo.localPublicUserData.size)
-		return RedirectUtil.createSeeOtherResponse("../profile", uriInfo)
+		 AccessController.doPrivileged(new PrivilegedAction[Response] {
+			def run: Response = {
+				val webIDInfo = webIdGraphsService.getWebIdInfo(webId)
+				val agent: GraphNode = new GraphNode(webId, webIDInfo.localPublicUserData)
+				agent.deleteProperties(FOAF.name)
+				agent.addPropertyValue(FOAF.name, name)
+				agent.deleteProperties(DC.description)
+				agent.addPropertyValue(DC.description, description)
+				logger.debug("local graph (uri: {}) is now of size {}".format( webIDInfo.webId, webIDInfo.localPublicUserData.size))
+				RedirectUtil.createSeeOtherResponse("../profile", uriInfo)
+			}
+		 })
 	}
 
 	protected def bindUserManager(usermanager: UserManager): Unit = {



Mime
View raw message