diff --git a/DebugPlugin/controllers/api/PermissionApiController.php b/DebugPlugin/controllers/api/PermissionApiController.php new file mode 100644 index 0000000..dd47f1d --- /dev/null +++ b/DebugPlugin/controllers/api/PermissionApiController.php @@ -0,0 +1,67 @@ +permission('Garden.Settings.Manage'); + if (!Gdn::userModel()->getID($userID)) { + throw notFoundException('User'); + } + $userPermissions = Gdn::userModel()->getPermissions($userID); + $data = [ + 'userPermissions' => $userPermissions, + ]; + return $data; + } + + /** + * Get user permissions for a category + * @param $userID + * @param $categoryID + * @return Data + * @throws \Garden\Web\Exception\HttpException + * @throws \Vanilla\Exception\PermissionException + */ + public function get($userID, $categoryID) { + $this->permission('Garden.Settings.Manage'); + + if (!Gdn::userModel()->getID($userID)) { + throw notFoundException('User'); + } + + $category = CategoryModel::categories($categoryID); + if (!$category) { + throw notFoundException('Category'); + } + $groupID = val('GroupID', $category, null); + $data = [ + 'GroupID' => $groupID, + 'PermsGroupView' => $groupID? GroupModel::getGroupRoleFor($userID, $groupID) : null, + 'PermsDiscussionsView' => CategoryModel::checkPermission($category, 'Vanilla.Discussions.View', true, $userID), + 'PermsDiscussionsAdd' => CategoryModel::checkPermission($category, 'Vanilla.Discussions.Add', true, $userID), + 'PermsDiscussionsEdit' => CategoryModel::checkPermission($category, 'Vanilla.Discussions.Edit', true, $userID), + 'PermsCommentsAdd' => CategoryModel::checkPermission($category, 'Vanilla.Comments.Add', true, $userID), + 'PermsDiscussionsUploads' => CategoryModel::checkPermission($category, 'Vanilla.Discussions.Uploads', true, $userID), + 'PermsCommentsUploads' => CategoryModel::checkPermission($category, 'Vanilla.Comments.Uploads', true, $userID) + ]; + return $data; + } +} \ No newline at end of file diff --git a/DebugPlugin/openapi/permission.yml b/DebugPlugin/openapi/permission.yml new file mode 100644 index 0000000..63c826a --- /dev/null +++ b/DebugPlugin/openapi/permission.yml @@ -0,0 +1,52 @@ +openapi: 3.0.2 +info: Vanilla Permission API +paths: + /permission/{userID}/{categoryID}: + get: + parameters: + - description: UserID to check. + in: path + name: userID + schema: + type: integer + - description: CategoryID to check. + in: path + name: categoryID + schema: + type: integer + responses: + '200': + content: + 'application/json': + schema: + items: + $ref: '#/components/schemas/Records' + type: array + description: Success + tags: + - Data + summary: List records. + /permission/{userID}: + get: + parameters: + - description: UserID to check. + in: path + name: userID + schema: + type: integer + responses: + '200': + content: + 'application/json': + schema: + items: + $ref: '#/components/schemas/Records' + type: array + description: Success + tags: + - Data + summary: List records. +components: + schemas: + Records: + type: object \ No newline at end of file