1
+ <?php
2
+
3
+ use Garden \Web \Exception \ClientException ;
4
+ use Garden \Schema \Schema ;
5
+ use Vanilla \Utility \InstanceValidatorSchema ;
6
+ use Garden \Web \Data ;
7
+ use Garden \Web \Exception \NotFoundException ;
8
+ use Garden \Web \Exception \ServerException ;
9
+ use Vanilla \ApiUtils ;
10
+
11
+ /**
12
+ * Permission API Controller for the `/permission` resource.
13
+ */
14
+ class PermissionApiController extends AbstractApiController {
15
+
16
+ /**
17
+ * Get default user permissions
18
+ * @param $userID
19
+ * @return Data
20
+ * @throws \Garden\Web\Exception\HttpException
21
+ * @throws \Vanilla\Exception\PermissionException
22
+ */
23
+ public function index ($ userID ) {
24
+ $ this ->permission ('Garden.Settings.Manage ' );
25
+ if (!Gdn::userModel ()->getID ($ userID )) {
26
+ throw notFoundException ('User ' );
27
+ }
28
+ $ userPermissions = Gdn::userModel ()->getPermissions ($ userID );
29
+ $ data = [
30
+ 'userPermissions ' => $ userPermissions ,
31
+ ];
32
+ return $ data ;
33
+ }
34
+
35
+ /**
36
+ * Get user permissions for a category
37
+ * @param $userID
38
+ * @param $categoryID
39
+ * @return Data
40
+ * @throws \Garden\Web\Exception\HttpException
41
+ * @throws \Vanilla\Exception\PermissionException
42
+ */
43
+ public function get ($ userID , $ categoryID ) {
44
+ $ this ->permission ('Garden.Settings.Manage ' );
45
+
46
+ if (!Gdn::userModel ()->getID ($ userID )) {
47
+ throw notFoundException ('User ' );
48
+ }
49
+
50
+ $ category = CategoryModel::categories ($ categoryID );
51
+ if (!$ category ) {
52
+ throw notFoundException ('Category ' );
53
+ }
54
+ $ groupID = val ('GroupID ' , $ category , null );
55
+ $ data = [
56
+ 'GroupID ' => $ groupID ,
57
+ 'PermsGroupView ' => $ groupID ? GroupModel::getGroupRoleFor ($ userID , $ groupID ) : null ,
58
+ 'PermsDiscussionsView ' => CategoryModel::checkPermission ($ category , 'Vanilla.Discussions.View ' , true , $ userID ),
59
+ 'PermsDiscussionsAdd ' => CategoryModel::checkPermission ($ category , 'Vanilla.Discussions.Add ' , true , $ userID ),
60
+ 'PermsDiscussionsEdit ' => CategoryModel::checkPermission ($ category , 'Vanilla.Discussions.Edit ' , true , $ userID ),
61
+ 'PermsCommentsAdd ' => CategoryModel::checkPermission ($ category , 'Vanilla.Comments.Add ' , true , $ userID ),
62
+ 'PermsDiscussionsUploads ' => CategoryModel::checkPermission ($ category , 'Vanilla.Discussions.Uploads ' , true , $ userID ),
63
+ 'PermsCommentsUploads ' => CategoryModel::checkPermission ($ category , 'Vanilla.Comments.Uploads ' , true , $ userID )
64
+ ];
65
+ return $ data ;
66
+ }
67
+ }
0 commit comments