diff options
-rw-r--r-- | src/Psecio/Gatekeeper/PermissionModel.php | 9 | ||||
-rw-r--r-- | src/Psecio/Gatekeeper/UserCollection.php | 22 |
2 files changed, 31 insertions, 0 deletions
diff --git a/src/Psecio/Gatekeeper/PermissionModel.php b/src/Psecio/Gatekeeper/PermissionModel.php index 581e815..eccb355 100644 --- a/src/Psecio/Gatekeeper/PermissionModel.php +++ b/src/Psecio/Gatekeeper/PermissionModel.php @@ -63,6 +63,15 @@ class PermissionModel extends \Psecio\Gatekeeper\Model\Mysql 'local' => 'id' ) ), + 'users' => array( + 'description' => 'Users that have the permission', + 'type' => 'relation', + 'relation' => array( + 'model' => '\\Psecio\\Gatekeeper\\UserCollection', + 'method' => 'findUsersByPermissionId', + 'local' => 'id' + ) + ), 'children' => array( 'description' => 'Child Permissions', 'type' => 'relation', diff --git a/src/Psecio/Gatekeeper/UserCollection.php b/src/Psecio/Gatekeeper/UserCollection.php index 805ad52..ba9f9df 100644 --- a/src/Psecio/Gatekeeper/UserCollection.php +++ b/src/Psecio/Gatekeeper/UserCollection.php @@ -24,4 +24,26 @@ class UserCollection extends \Psecio\Gatekeeper\Collection\Mysql $this->add($user); } } + + /** + * Find the users that have a permission defined by the + * given ID + * + * @param integer $permId Permission ID + */ + public function findUsersByPermissionId($permId) + { + $prefix = $this->getPrefix(); + $data = array('permId' => $permId); + $sql = 'select u.* from '.$prefix.'users u, '.$prefix.'user_permission up' + .' where up.permission_id = :permId' + .' and up.user_id = u.id'; + + $results = $this->getDb()->fetch($sql, $data); + + foreach ($results as $result) { + $user = new UserModel($this->getDb(), $result); + $this->add($user); + } + } }
\ No newline at end of file |