PluginProbe
FluentCommunity – Ultra-Fast High-Performance Social Network, Community, LMS & Online Courses / 2.6.0
FluentCommunity – Ultra-Fast High-Performance Social Network, Community, LMS & Online Courses v2.6.0
2.10.0 2.10.01 2.9.1 2.9.0 2.8.1 2.8.0 2.7.7 2.7.5 2.7.0 2.6.01 2.6.0 2.5.0 2.4.01 trunk 1.0.90 1.0.91 1.0.92 1.0.93 1.0.94 1.0.95 1.0.96 1.0.97 1.0.98 1.0.99 1.1.0 All 77 releases
fluent-community / app / Http / Policies / SpacePolicy.php

SpacePolicy.php in FluentCommunity – Ultra-Fast High-Performance Social Network, Community, LMS & Online Courses 2.6.0, at app/Http/Policies/SpacePolicy.php

139 lines 3.2 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 namespace FluentCommunity\App\Http\Policies;
4
5 use FluentCommunity\App\Models\User;
6 use FluentCommunity\App\Models\Space;
7 use FluentCommunity\App\Services\Helper;
8 use FluentCommunity\Framework\Http\Request\Request;
9
10 class SpacePolicy extends BasePolicy
11 {
12 /**
13 * Check user permission for any method
14 * @param \FluentCommunity\Framework\Http\Request\Request $request
15 * @return Boolean
16 */
17 public function verifyRequest(Request $request)
18 {
19 $xProfile = Helper::getCurrentProfile(true);
20 if ($xProfile && $xProfile->status != 'active') {
21 return false;
22 }
23
24 $userId = get_current_user_id();
25
26 if ($request->getMethod() == 'GET') {
27 return !!Helper::canAccessPortal($userId);
28 }
29
30 if (!$userId) {
31 return false;
32 }
33
34 return $this->canManageCommunity($request);
35 }
36
37 public function join(Request $request)
38 {
39 return !!get_current_user_id();
40 }
41
42 public function leave(Request $request)
43 {
44 return !!get_current_user_id();
45 }
46
47 public function deleteBySlug(Request $request)
48 {
49 return $this->canManageCommunity($request);
50 }
51
52 public function deleteById(Request $request)
53 {
54 return $this->canManageCommunity($request);
55 }
56
57 public function addMember(Request $request, $slug)
58 {
59 $space = Space::where('slug', $slug)->first();
60
61 $user = User::find(get_current_user_id());
62
63 return $user && $user->verifySpacePermission('can_add_member', $space);
64 }
65
66 public function removeMember(Request $request, $slug)
67 {
68 $space = Space::where('slug', $slug)->first();
69
70 $user = User::find(get_current_user_id());
71
72 return $user && $user->verifySpacePermission('can_remove_member', $space);
73 }
74
75 public function getSpaceGroups(Request $request)
76 {
77 if ($request->get('options_only')) {
78 return true;
79 }
80
81 return $this->canManageSpace($request);
82 }
83
84 public function createSpaceGroup(Request $request)
85 {
86 return $this->canManageSpace($request);
87 }
88
89 public function updateSpaceGroup(Request $request)
90 {
91 return $this->canManageSpace($request);
92 }
93
94 public function deleteSpaceGroup(Request $request)
95 {
96 return $this->canManageSpace($request);
97 }
98
99 public function getMetaSettings(Request $request)
100 {
101 return $this->canManageSpace($request);
102 }
103
104 protected function canManageCommunity(Request $request)
105 {
106 $user = User::find(get_current_user_id());
107
108 if (!$user) {
109 return false;
110 }
111
112 if ($user->hasCommunityAdminAccess()) {
113 return true;
114 }
115
116 $space = Space::find($request->get('space_id'));
117
118 return $space && $user->getSpaceRole($space) === 'admin';
119 }
120
121 protected function canManageSpace(Request $request)
122 {
123 $user = User::find(get_current_user_id());
124
125 if (!$user) {
126 return false;
127 }
128
129 if ($user->hasSpaceManageAccess()) {
130 return true;
131 }
132
133 $space = Space::find($request->get('space_id'));
134
135 return $space && $user->getSpaceRole($space) === 'admin';
136 }
137 }
138
139