PluginProbe
FluentCommunity – Ultra-Fast High-Performance Social Network, Community, LMS & Online Courses / 2.7.5
FluentCommunity – Ultra-Fast High-Performance Social Network, Community, LMS & Online Courses v2.7.5
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.7.5, at app/Http/Policies/SpacePolicy.php

178 lines 4.4 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 create(Request $request)
48 {
49 return $this->canManageCommunity($request, null);
50 }
51
52 public function patchBySlug(Request $request, $slug)
53 {
54 return $this->canManageCommunity($request, Space::where('slug', $slug)->first());
55 }
56
57 public function patchById(Request $request, $id)
58 {
59 return $this->canManageCommunity($request, Space::find($id));
60 }
61
62 public function updateLinks(Request $request, $slug)
63 {
64 return $this->canManageCommunity($request, Space::where('slug', $slug)->first());
65 }
66
67 public function deleteBySlug(Request $request, $slug)
68 {
69 return $this->canManageCommunity($request, Space::where('slug', $slug)->first());
70 }
71
72 public function deleteById(Request $request, $id)
73 {
74 return $this->canManageCommunity($request, Space::find($id));
75 }
76
77 public function addMember(Request $request, $slug)
78 {
79 $space = Space::where('slug', $slug)->first();
80
81 $user = User::find(get_current_user_id());
82
83 return $user && $user->verifySpacePermission('can_add_member', $space);
84 }
85
86 public function removeMember(Request $request, $slug)
87 {
88 $space = Space::where('slug', $slug)->first();
89
90 $user = User::find(get_current_user_id());
91
92 return $user && $user->verifySpacePermission('can_remove_member', $space);
93 }
94
95 public function getSpaceGroups(Request $request)
96 {
97 if ($request->get('options_only')) {
98 return true;
99 }
100
101 return $this->canManageSpace($request, null);
102 }
103
104 public function createSpaceGroup(Request $request)
105 {
106 return $this->canManageSpace($request, null);
107 }
108
109 public function updateSpaceGroup(Request $request)
110 {
111 return $this->canManageSpace($request, null);
112 }
113
114 public function deleteSpaceGroup(Request $request)
115 {
116 return $this->canManageSpace($request, null);
117 }
118
119 public function updateSpaceGroupIndexes(Request $request)
120 {
121 return $this->canManageSpace($request, null);
122 }
123
124 public function updateSpaceIndexes(Request $request)
125 {
126 return $this->canManageSpace($request, null);
127 }
128
129 public function moveSpace(Request $request)
130 {
131 return $this->canManageCommunity($request);
132 }
133
134 public function getMetaSettings(Request $request, $spaceSlug)
135 {
136 return $this->canManageSpace($request, Space::where('slug', $spaceSlug)->first());
137 }
138
139 protected function canManageCommunity(Request $request, $space = false)
140 {
141 $user = User::find(get_current_user_id());
142
143 if (!$user) {
144 return false;
145 }
146
147 if ($user->hasCommunityAdminAccess()) {
148 return true;
149 }
150
151 if ($space === false) {
152 $space = Space::find($request->get('space_id'));
153 }
154
155 return $space && $user->getSpaceRole($space) === 'admin';
156 }
157
158 protected function canManageSpace(Request $request, $space = false)
159 {
160 $user = User::find(get_current_user_id());
161
162 if (!$user) {
163 return false;
164 }
165
166 if ($user->hasSpaceManageAccess()) {
167 return true;
168 }
169
170 if ($space === false) {
171 $space = Space::find($request->get('space_id'));
172 }
173
174 return $space && $user->getSpaceRole($space) === 'admin';
175 }
176 }
177
178