summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTim Almdal <tnalmdal@shaw.ca>2009-10-29 19:16:08 -0700
committerTim Almdal <tnalmdal@shaw.ca>2009-10-29 19:16:08 -0700
commitc6fbd34f28f9d02f38a6c6cacbcd72fa34eee591 (patch)
tree9286b05b17b91755059c5598a9979162701707d9
parent04bf50bfb4241f7c814782c516732d927ff1f457 (diff)
Add the add_user_to_group and remove_user_from_group api method calls. If the identity provider isn't writable, the method implementations should throw an Invalid Operation exception.
-rw-r--r--modules/gallery/helpers/identity.php14
-rw-r--r--modules/gallery/libraries/IdentityProvider.php14
-rw-r--r--modules/gallery/libraries/drivers/IdentityProvider.php13
-rw-r--r--modules/user/libraries/drivers/IdentityProvider/Gallery.php18
4 files changed, 59 insertions, 0 deletions
diff --git a/modules/gallery/helpers/identity.php b/modules/gallery/helpers/identity.php
index 0111cb1a..72e3312d 100644
--- a/modules/gallery/helpers/identity.php
+++ b/modules/gallery/helpers/identity.php
@@ -227,4 +227,18 @@ class identity_Core {
static function groups() {
return IdentityProvider::instance()->groups();
}
+
+ /**
+ * @see IdentityProvider_Driver::add_user_to_group.
+ */
+ static function add_user_to_group($user, $group_id) {
+ return IdentityProvider::instance()->add_user_to_group($user, $group_id);
+ }
+
+ /**
+ * @see IdentityProvider_Driver::remove_user_to_group.
+ */
+ static function remove_user_from_group($user, $group_id) {
+ return IdentityProvider::instance()->remove_user_from_group($user, $group_id);
+ }
} \ No newline at end of file
diff --git a/modules/gallery/libraries/IdentityProvider.php b/modules/gallery/libraries/IdentityProvider.php
index 3bb4fcf5..aa519bd3 100644
--- a/modules/gallery/libraries/IdentityProvider.php
+++ b/modules/gallery/libraries/IdentityProvider.php
@@ -190,4 +190,18 @@ class IdentityProvider_Core {
public function groups() {
return $this->driver->groups();
}
+
+ /**
+ * @see IdentityProvider_Driver::add_user_to_group.
+ */
+ public function add_user_to_group($user, $group_id) {
+ return $this->driver->add_user_to_group($user, $group_id);
+ }
+
+ /**
+ * @see IdentityProvider_Driver::remove_user_to_group.
+ */
+ public function remove_user_from_group($user, $group_id) {
+ return $this->driver->remove_user_from_group($user, $group_id);
+ }
} // End Identity
diff --git a/modules/gallery/libraries/drivers/IdentityProvider.php b/modules/gallery/libraries/drivers/IdentityProvider.php
index 739c7f6a..a808c7e8 100644
--- a/modules/gallery/libraries/drivers/IdentityProvider.php
+++ b/modules/gallery/libraries/drivers/IdentityProvider.php
@@ -113,6 +113,19 @@ interface IdentityProvider_Driver {
*/
public function groups();
+ /**
+ * Add the user to the specified group
+ * @param User_Definition the user to add to the group
+ * @param int the group_id
+ */
+ static function add_user_to_group($user, $group_id);
+
+ /**
+ * Remove the user to the specified group
+ * @param User_Definition the user to add to the group
+ * @param int the group id
+ */
+ static function remove_user_from_group($user, $group_id);
} // End Identity Driver Definition
interface Group_Definition {}
diff --git a/modules/user/libraries/drivers/IdentityProvider/Gallery.php b/modules/user/libraries/drivers/IdentityProvider/Gallery.php
index f133a32a..f02c53a2 100644
--- a/modules/user/libraries/drivers/IdentityProvider/Gallery.php
+++ b/modules/user/libraries/drivers/IdentityProvider/Gallery.php
@@ -139,5 +139,23 @@ class IdentityProvider_Gallery_Driver implements IdentityProvider_Driver {
return ORM::factory("group")->find_all();
}
+ /**
+ * @see IdentityProvider_Driver::add_user_to_group.
+ */
+ static function add_user_to_group($user, $group_id) {
+ $group = self::lookup_group($group_id);
+
+ $group->add($user);
+ $group->save();
+ }
+
+ /**
+ * @see IdentityProvider_Driver::remove_user_to_group.
+ */
+ static function remove_user_from_group($user, $group_id) {
+ $group = self::lookup_group_by_name($group_id);
+ $group->remove($user);
+ $group->save();
+ }
} // End Identity Gallery Driver