PluginProbe
FluentCommunity – Ultra-Fast High-Performance Social Network, Community, LMS & Online Courses / 2.10.01
FluentCommunity – Ultra-Fast High-Performance Social Network, Community, LMS & Online Courses v2.10.01
2.11.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 All 78 releases
← All changes | app/Http/Policies/SpacePolicy.php +75 -16 2.4.01 → 2.10.01 View file →
@@ -3,8 +3,9 @@
3 3 namespace FluentCommunity\App\Http\Policies;
4 4
5 5 use FluentCommunity\App\Models\User;
6 6 use FluentCommunity\App\Models\Space;
7 +use FluentCommunity\App\Models\BaseSpace;
7 8 use FluentCommunity\App\Services\Helper;
8 9 use FluentCommunity\Framework\Http\Request\Request;
9 10
10 11 class SpacePolicy extends BasePolicy
@@ -35,26 +36,55 @@
35 36 }
36 37
37 38 public function join(Request $request)
38 39 {
39 - return !!get_current_user_id();
40 + $xProfile = Helper::getCurrentProfile(true);
41 +
42 + return $xProfile && $xProfile->status == 'active';
40 43 }
41 44
42 45 public function leave(Request $request)
43 46 {
44 - return !!get_current_user_id();
47 + $xProfile = Helper::getCurrentProfile(true);
48 +
49 + return $xProfile && $xProfile->status == 'active';
45 50 }
46 51
47 - public function deleteBySlug(Request $request)
52 + public function create(Request $request)
48 53 {
54 + return $this->canManageCommunity($request, null);
55 + }
56 +
57 + public function searchProduct(Request $request)
58 + {
49 59 return $this->canManageCommunity($request);
50 60 }
51 61
52 - public function deleteById(Request $request)
62 + public function patchBySlug(Request $request, $slug)
53 63 {
54 - return $this->canManageCommunity($request);
64 + return $this->canManageCommunity($request, Space::where('slug', $slug)->first());
55 65 }
56 66
67 + public function patchById(Request $request, $id)
68 + {
69 + return $this->canManageCommunity($request, Space::find($id));
70 + }
71 +
72 + public function updateLinks(Request $request, $slug)
73 + {
74 + return $this->canManageCommunity($request, Space::where('slug', $slug)->first());
75 + }
76 +
77 + public function deleteBySlug(Request $request, $slug)
78 + {
79 + return $this->canManageCommunity($request, Space::where('slug', $slug)->first());
80 + }
81 +
82 + public function deleteById(Request $request, $id)
83 + {
84 + return $this->canManageCommunity($request, Space::find($id));
85 + }
86 +
57 87 public function addMember(Request $request, $slug)
58 88 {
59 89 $space = Space::where('slug', $slug)->first();
60 90
@@ -74,36 +104,61 @@
74 104
75 105 public function getSpaceGroups(Request $request)
76 106 {
77 107 if ($request->get('options_only')) {
78 - return true;
108 + return !!Helper::canAccessPortal(get_current_user_id());
79 109 }
80 110
81 - return $this->canManageSpace($request);
111 + return $this->canManageSpace($request, null);
82 112 }
83 113
84 114 public function createSpaceGroup(Request $request)
85 115 {
86 - return $this->canManageSpace($request);
116 + return $this->canManageSpace($request, null);
87 117 }
88 118
89 119 public function updateSpaceGroup(Request $request)
90 120 {
91 - return $this->canManageSpace($request);
121 + return $this->canManageSpace($request, null);
92 122 }
93 123
94 124 public function deleteSpaceGroup(Request $request)
95 125 {
96 - return $this->canManageSpace($request);
126 + return $this->canManageSpace($request, null);
97 127 }
98 128
99 - public function getMetaSettings(Request $request)
129 + public function updateSpaceGroupIndexes(Request $request)
100 130 {
101 - return $this->canManageSpace($request);
131 + return $this->canManageSpace($request, null);
102 132 }
103 133
104 - protected function canManageCommunity(Request $request)
134 + public function updateSpaceIndexes(Request $request)
105 135 {
136 + return $this->canManageSpace($request, null);
137 + }
138 +
139 + public function moveSpace(Request $request)
140 + {
141 + return $this->canManageCommunity($request);
142 + }
143 +
144 + public function getMetaSettings(Request $request, $spaceSlug)
145 + {
146 + return $this->canManageSpace($request, Space::where('slug', $spaceSlug)->first());
147 + }
148 +
149 + public function addPaywall(Request $request, $spaceId)
150 + {
151 + return $this->canManageCommunity($request, BaseSpace::withoutGlobalScopes()->find((int) $spaceId));
152 + }
153 +
154 + public function removePaywall(Request $request, $spaceId)
155 + {
156 + return $this->canManageCommunity($request, BaseSpace::withoutGlobalScopes()->find((int) $spaceId));
157 + }
158 +
159 + protected function canManageCommunity(Request $request, $space = false)
160 + {
106 161 $user = User::find(get_current_user_id());
107 162
108 163 if (!$user) {
109 164 return false;
@@ -112,14 +167,16 @@
112 167 if ($user->hasCommunityAdminAccess()) {
113 168 return true;
114 169 }
115 170
116 - $space = Space::find($request->get('space_id'));
171 + if ($space === false) {
172 + $space = Space::find((int) $request->get('space_id'));
173 + }
117 174
118 175 return $space && $user->getSpaceRole($space) === 'admin';
119 176 }
120 177
121 - protected function canManageSpace(Request $request)
178 + protected function canManageSpace(Request $request, $space = false)
122 179 {
123 180 $user = User::find(get_current_user_id());
124 181
125 182 if (!$user) {
@@ -129,9 +186,11 @@
129 186 if ($user->hasSpaceManageAccess()) {
130 187 return true;
131 188 }
132 189
133 - $space = Space::find($request->get('space_id'));
190 + if ($space === false) {
191 + $space = Space::find((int) $request->get('space_id'));
192 + }
134 193
135 194 return $space && $user->getSpaceRole($space) === 'admin';
136 195 }
137 196 }