You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@esme.apache.org by vd...@apache.org on 2009/04/25 22:36:27 UTC
svn commit: r768598 - in
/incubator/esme/branches/access-pools/server/src/main/scala/org/apache/esme:
api/RestAPI.scala model/AccessPool.scala model/Privilege.scala
Author: vdichev
Date: Sat Apr 25 20:36:26 2009
New Revision: 768598
URL: http://svn.apache.org/viewvc?rev=768598&view=rev
Log:
ESME-56 RESTful API to add user to an access pool.
Modified:
incubator/esme/branches/access-pools/server/src/main/scala/org/apache/esme/api/RestAPI.scala
incubator/esme/branches/access-pools/server/src/main/scala/org/apache/esme/model/AccessPool.scala
incubator/esme/branches/access-pools/server/src/main/scala/org/apache/esme/model/Privilege.scala
Modified: incubator/esme/branches/access-pools/server/src/main/scala/org/apache/esme/api/RestAPI.scala
URL: http://svn.apache.org/viewvc/incubator/esme/branches/access-pools/server/src/main/scala/org/apache/esme/api/RestAPI.scala?rev=768598&r1=768597&r2=768598&view=diff
==============================================================================
--- incubator/esme/branches/access-pools/server/src/main/scala/org/apache/esme/api/RestAPI.scala (original)
+++ incubator/esme/branches/access-pools/server/src/main/scala/org/apache/esme/api/RestAPI.scala Sat Apr 25 20:36:26 2009
@@ -100,6 +100,9 @@
case Req("api" :: "add_pool" :: poolName :: Nil, "", PostRequest) =>
() => addPool(poolName)
+
+ case Req("api" :: "add_user_pool" :: Nil, "", PostRequest) =>
+ addUserToPool
}
def findAction: Box[Action] =
@@ -354,6 +357,24 @@
r
}
+ def addUserToPool(): LiftResponse = {
+ val r: Box[Boolean] =
+ for (adminUser <- User.currentUser;
+ poolName <- S.param("pool") ?~ "Pool not specified";
+ realm <- (S.param("realm") or Full("Native"));
+ pool <- AccessPool.findPool(poolName, realm) ?~ "Pool not found";
+ _ <- Privilege.find(By(Privilege.pool, pool),
+ By(Privilege.user, adminUser),
+ By(Privilege.permission, Permission.Admin)) ?~ "User has no permission to administer pool";
+ userName <- S.param("user") ?~ "User to add to pool not specified";
+ user <- User.findFromWeb(userName) ?~ "User not found";
+ permissionName <- (S.param("permission") or Full("Write"));
+ permission <- Box(Permission.valueOf(permissionName)) ?~ "Unknown permission type"
+ ) yield Privilege.create.user(user).pool(pool).permission(permission).save
+
+ r
+ }
+
def createTag(in: NodeSeq) = <esme_api>{in}</esme_api>
Modified: incubator/esme/branches/access-pools/server/src/main/scala/org/apache/esme/model/AccessPool.scala
URL: http://svn.apache.org/viewvc/incubator/esme/branches/access-pools/server/src/main/scala/org/apache/esme/model/AccessPool.scala?rev=768598&r1=768597&r2=768598&view=diff
==============================================================================
--- incubator/esme/branches/access-pools/server/src/main/scala/org/apache/esme/model/AccessPool.scala (original)
+++ incubator/esme/branches/access-pools/server/src/main/scala/org/apache/esme/model/AccessPool.scala Sat Apr 25 20:36:26 2009
@@ -30,18 +30,20 @@
object AccessPool extends AccessPool with LongKeyedMetaMapper[AccessPool] {
+ def findPool(name: String, realm: String): Box[AccessPool] =
+ AccessPool.find(By(AccessPool.name, name),
+ By(AccessPool.realm, realm))
+
}
class AccessPool extends LongKeyedMapper[AccessPool] {
def getSingleton = AccessPool
def primaryKeyField = id
- private def sameName(name: String) =
- AccessPool.findAll(By(AccessPool.name, name)).
- filter(_.realm.is.equalsIgnoreCase(this.realm.is))
-
object id extends MappedLongIndex(this)
+ object realm extends MappedString(this, 256)
+
private[model] object name extends MappedString(this, 256) {
override def validations = checkDuplicate _ :: super.validations
@@ -58,6 +60,8 @@
case List(_,_*) => Failure("Duplicate access pool name!")
}
- object realm extends MappedString(this, 256)
-
+ private def sameName(name: String) =
+ AccessPool.findAll(By(AccessPool.name, name)).
+ filter(_.realm.is.equalsIgnoreCase(this.realm.is))
+
}
Modified: incubator/esme/branches/access-pools/server/src/main/scala/org/apache/esme/model/Privilege.scala
URL: http://svn.apache.org/viewvc/incubator/esme/branches/access-pools/server/src/main/scala/org/apache/esme/model/Privilege.scala?rev=768598&r1=768597&r2=768598&view=diff
==============================================================================
--- incubator/esme/branches/access-pools/server/src/main/scala/org/apache/esme/model/Privilege.scala (original)
+++ incubator/esme/branches/access-pools/server/src/main/scala/org/apache/esme/model/Privilege.scala Sat Apr 25 20:36:26 2009
@@ -26,7 +26,14 @@
import util._
object Privilege extends Privilege with LongKeyedMetaMapper[Privilege] {
+
+ override def beforeSave = deleteExisting _ :: super.beforeSave
+ private def deleteExisting(in: Privilege) {
+ findAll(By(pool, in.pool),
+ By(user, in.user)).
+ foreach(_.delete_!)
+ }
}
class Privilege extends LongKeyedMapper[Privilege] {