diff options
author | Frederic Guillot <fred@kanboard.net> | 2016-01-22 21:23:12 -0500 |
---|---|---|
committer | Frederic Guillot <fred@kanboard.net> | 2016-01-22 21:23:12 -0500 |
commit | ad8fcf035ab92d8cd06179959000b9a1681b1505 (patch) | |
tree | 80f4e35b16c1c1a6d4c473983bc6cb62b9519494 /app/Api | |
parent | f27bcec2d92af83ee7205c84954cda9d7b2fc55d (diff) |
Add new API procedures for groups, roles and project permissions
Diffstat (limited to 'app/Api')
-rw-r--r-- | app/Api/App.php | 10 | ||||
-rw-r--r-- | app/Api/Auth.php | 2 | ||||
-rw-r--r-- | app/Api/File.php | 10 | ||||
-rw-r--r-- | app/Api/Group.php | 49 | ||||
-rw-r--r-- | app/Api/GroupMember.php | 32 | ||||
-rw-r--r-- | app/Api/ProjectPermission.php | 51 |
6 files changed, 146 insertions, 8 deletions
diff --git a/app/Api/App.php b/app/Api/App.php index d082bcfb..635f1ce2 100644 --- a/app/Api/App.php +++ b/app/Api/App.php @@ -34,4 +34,14 @@ class App extends \Kanboard\Core\Base { return $this->color->getList(); } + + public function getApplicationRoles() + { + return $this->role->getApplicationRoles(); + } + + public function getProjectRoles() + { + return $this->role->getProjectRoles(); + } } diff --git a/app/Api/Auth.php b/app/Api/Auth.php index a9d1617c..c7c5298c 100644 --- a/app/Api/Auth.php +++ b/app/Api/Auth.php @@ -23,7 +23,7 @@ class Auth extends Base */ public function checkCredentials($username, $password, $class, $method) { - $this->container['dispatcher']->dispatch('app.bootstrap'); + $this->dispatcher->dispatch('app.bootstrap'); if ($this->isUserAuthenticated($username, $password)) { $this->checkProcedurePermission(true, $method); diff --git a/app/Api/File.php b/app/Api/File.php index be415ecb..269803e1 100644 --- a/app/Api/File.php +++ b/app/Api/File.php @@ -32,14 +32,18 @@ class File extends \Kanboard\Core\Base } } catch (ObjectStorageException $e) { $this->logger->error($e->getMessage()); + return ''; } - - return ''; } public function createFile($project_id, $task_id, $filename, $blob) { - return $this->file->uploadContent($project_id, $task_id, $filename, $blob); + try { + return $this->file->uploadContent($project_id, $task_id, $filename, $blob); + } catch (ObjectStorageException $e) { + $this->logger->error($e->getMessage()); + return false; + } } public function removeFile($file_id) diff --git a/app/Api/Group.php b/app/Api/Group.php new file mode 100644 index 00000000..a1e0a73d --- /dev/null +++ b/app/Api/Group.php @@ -0,0 +1,49 @@ +<?php + +namespace Kanboard\Api; + +/** + * Group API controller + * + * @package api + * @author Frederic Guillot + */ +class Group extends \Kanboard\Core\Base +{ + public function createGroup($name, $external_id = '') + { + return $this->group->create($name, $external_id); + } + + public function updateGroup($group_id, $name = null, $external_id = null) + { + $values = array( + 'id' => $group_id, + 'name' => $name, + 'external_id' => $external_id, + ); + + foreach ($values as $key => $value) { + if (is_null($value)) { + unset($values[$key]); + } + } + + return $this->group->update($values); + } + + public function removeGroup($group_id) + { + return $this->group->remove($group_id); + } + + public function getGroup($group_id) + { + return $this->group->getById($group_id); + } + + public function getAllGroups() + { + return $this->group->getAll(); + } +} diff --git a/app/Api/GroupMember.php b/app/Api/GroupMember.php new file mode 100644 index 00000000..de62f0c6 --- /dev/null +++ b/app/Api/GroupMember.php @@ -0,0 +1,32 @@ +<?php + +namespace Kanboard\Api; + +/** + * Group Member API controller + * + * @package api + * @author Frederic Guillot + */ +class GroupMember extends \Kanboard\Core\Base +{ + public function getGroupMembers($group_id) + { + return $this->groupMember->getMembers($group_id); + } + + public function addGroupMember($group_id, $user_id) + { + return $this->groupMember->addUser($group_id, $user_id); + } + + public function removeGroupMember($group_id, $user_id) + { + return $this->groupMember->removeUser($group_id, $user_id); + } + + public function isGroupMember($group_id, $user_id) + { + return $this->groupMember->isMember($group_id, $user_id); + } +} diff --git a/app/Api/ProjectPermission.php b/app/Api/ProjectPermission.php index d4408197..11e92af0 100644 --- a/app/Api/ProjectPermission.php +++ b/app/Api/ProjectPermission.php @@ -5,25 +5,68 @@ namespace Kanboard\Api; use Kanboard\Core\Security\Role; /** - * ProjectPermission API controller + * Project Permission API controller * * @package api * @author Frederic Guillot */ class ProjectPermission extends \Kanboard\Core\Base { - public function getMembers($project_id) + public function getProjectUsers($project_id) { return $this->projectUserRole->getAllUsers($project_id); } - public function revokeUser($project_id, $user_id) + public function getAssignableUsers($project_id, $prepend_unassigned = false) + { + return $this->projectUserRole->getAssignableUsersList($project_id, $prepend_unassigned); + } + + public function addProjectUser($project_id, $user_id, $role = Role::PROJECT_MEMBER) + { + return $this->projectUserRole->addUser($project_id, $user_id, $role); + } + + public function addProjectGroup($project_id, $group_id, $role = Role::PROJECT_MEMBER) + { + return $this->projectGroupRole->addGroup($project_id, $group_id, $role); + } + + public function removeProjectUser($project_id, $user_id) { return $this->projectUserRole->removeUser($project_id, $user_id); } + public function removeProjectGroup($project_id, $group_id) + { + return $this->projectGroupRole->removeGroup($project_id, $group_id); + } + + public function changeProjectUserRole($project_id, $user_id, $role) + { + return $this->projectUserRole->changeUserRole($project_id, $user_id, $role); + } + + public function changeProjectGroupRole($project_id, $group_id, $role) + { + return $this->projectGroupRole->changeGroupRole($project_id, $group_id, $role); + } + + // Deprecated + public function getMembers($project_id) + { + return $this->getProjectUsers($project_id); + } + + // Deprecated + public function revokeUser($project_id, $user_id) + { + return $this->removeProjectUser($project_id, $user_id); + } + + // Deprecated public function allowUser($project_id, $user_id) { - return $this->projectUserRole->addUser($project_id, $user_id, Role::PROJECT_MEMBER); + return $this->addProjectUser($project_id, $user_id); } } |