1 <?php
2
3 namespace PLus\Orders\Repositories\Security;
4
5
6 7 8 9 10
11 class RoleRepository extends \PLus\Orders\Repositories\Repository {
12
13 14 15 16
17 public function findPairRoleByName($username) {
18 return $this->getTable()
19 ->select('role.*')
20 ->where(':role_user.user.username', $username)
21 ->order('name ASC')
22 ->fetchPairs('code', 'name');
23 }
24
25 public function findPairRoleById($user_id) {
26 return $this->getTable()
27 ->select('role.*')
28 ->where(':role_user.user.id', $user_id)
29 ->order('name ASC')
30 ->fetchPairs('code', 'name');
31 }
32
33 public function findRoleByName($username) {
34 return $this->getTable()
35 ->select('role.code')
36 ->where(':role_user.user.username', $username);
37 }
38
39 public function findRoleById($user_id) {
40 return $this->getTable()
41 ->select('role.code')
42 ->where(':role_user.user.id', $user_id);
43 }
44
45
46 47 48 49 50
51 function getPairData() {
52 return $this->getTable()->select('code, name')
53 ->where('NOT code', 'sa')
54 ->order('name ASC')
55 ->fetchPairs('code', 'name');
56 }
57
58
59 function getGridSelection() {
60 return $this->getTable()->select('code AS id,name')
61 ->where('NOT code', 'sa')
62 ->order('name ASC');
63 }
64
65
66 public function findById($code) {
67 return $this->getTable()->select('role.*')->wherePrimary($code)->fetch();
68 }
69
70 71 72 73 74 75 76 77 78 79
80 public function isAllowed(\Nette\Security\User $user, $presenterName, $actionName, $parameter) {
81 switch ($presenterName) {
82 case 'Role':
83 case 'User':
84 switch ($actionName) {
85 case 'view':
86 if (!$user->isAllowed('user', 'view')) {
87 return false;
88 }
89 break;
90 case 'default':
91 case 'edit':
92 if (!$user->isAllowed('user', 'edit')) {
93 return false;
94 }
95 break;
96 case 'setup':
97 if ($user->isInRole('guest')) {
98 return false;
99 }
100 break;
101 case 'create':
102 if (!$user->isInRole('admin')) {
103 return false;
104 }
105 break;
106 case 'forgot':
107 case 'reset':
108 if ($user->isLoggedIn()) {
109 return false;
110 }
111 break;
112 }
113
114 break;
115
116 case 'Order':
117 switch ($actionName) {
118 case 'closed':
119 case 'returned':
120 case 'sent':
121 case 'view':
122 if(!$user->isInRole('department') && !$user->isInRole('chief') && !$user->isInRole('sa')) {
123 return false;
124 }
125 break;
126 case 'create':
127 if(!$user->isInRole('department') && !$user->isInRole('sa')) {
128 return false;
129 }
130 break;
131 case 'bcreate':
132 case 'validate':
133 if(!$user->isInRole('chief') && !$user->isInRole('sa')) {
134 return false;
135 }
136 break;
137 }
138
139 break;
140
141 case 'Investment':
142 switch ($actionName) {
143 case 'create':
144 if(!$user->isInRole('chief') && !$user->isInRole('sa')) {
145 return false;
146 }
147 break;
148 }
149
150 break;
151
152 case 'Trader':
153 switch ($actionName){
154 case 'closed':
155 case 'in':
156 case 'toexpert':
157 case 'tomanager':
158 case 'torealize':
159 case 'tounit':
160 case 'validate':
161 case 'view':
162 if(!$user->isInRole('trader') && !$user->isInRole('sa')) {
163 return false;
164 }
165 break;
166 }
167
168 break;
169
170 case 'Expert':
171 switch ($actionName) {
172 case 'all':
173 if(!$user->isInRole('admin')) {
174 return false;
175 }
176 break;
177 case 'closed':
178 case 'torealize':
179 case 'validate':
180 case 'view':
181 if(!$user->isInRole('expert') && !$user->isInRole('sa')) {
182 return false;
183 }
184 break;
185 }
186
187 break;
188
189 case 'Manager':
190 switch ($actionName) {
191 case 'all':
192 case 'closed':
193 case 'validate':
194 case 'view':
195 if(!$user->isInRole('manager') && !$user->isInRole('sa')) {
196 return false;
197 }
198 break;
199 }
200
201 break;
202
203 case 'Economist':
204 switch ($actionName) {
205 case 'view':
206 case 'approved':
207 if(!$user->isInRole('economist') && !$user->isInRole('sa')) {
208 return false;
209 }
210 break;
211 }
212
213 break;
214
215 case 'Director':
216 switch ($actionName) {
217 case 'view':
218 case 'all':
219 if(!$user->isInRole('director') && !$user->isInRole('sa')) {
220 return false;
221 }
222 break;
223 }
224
225 break;
226
227 case 'Consultant':
228 switch ($actionName) {
229 case 'view':
230 case 'watch':
231 if(!$user->isInRole('sa') && !$user->isInRole('admin') && !$user->isInRole('trader') && !$user->isInRole('manager') &&
232 !$user->isInRole('expert') && !$user->isInRole('director') && !$user->isInRole('consultant')) {
233 return false;
234 }
235 break;
236 }
237
238 break;
239
240 case 'Consultation':
241 switch ($actionName) {
242 case 'view':
243 if(!$user->isInRole('sa') && !$user->isInRole('admin') && !$user->isInRole('trader') && !$user->isInRole('manager') &&
244 !$user->isInRole('expert') && !$user->isInRole('director') && !$user->isInRole('consultant')) {
245 return false;
246 }
247 break;
248 }
249
250 break;
251
252 case 'News':
253 switch ($actionName) {
254 case 'default':
255 case 'view':
256
257 break;
258 case 'template':
259 if(!$user->isInRole('sa')) {
260 return false;
261 }
262 break;
263 }
264
265 break;
266
267 case 'Area':
268 case 'Branch':
269 case 'Department':
270 case 'Documenttype':
271 case 'Unit':
272 switch ($actionName) {
273 case 'default':
274 case 'view':
275 if (!$user->isAllowed('setup', 'view')) {
276 return false;
277 }
278
279 break;
280
281 case 'create':
282 case 'edit':
283 if (!$user->isAllowed('setup', 'edit')) {
284 return false;
285 }
286
287 break;
288 }
289
290 case 'Dimenzion':
291 case 'Justify':
292 switch ($actionName) {
293 case 'default':
294 case 'view':
295 if (!$user->isAllowed('catalog', 'view')) {
296 return false;
297 }
298 break;
299
300 case 'edit':
301 if (!$user->isAllowed('catalog', 'edit')) {
302 return false;
303 }
304 break;
305
306 case 'create':
307 if (!$user->isAllowed('catalog', 'create')) {
308 return false;
309 }
310 break;
311 }
312
313
314
315 if ($parameter != null) {
316 switch ($parameter) {
317 case 'Delete':
318 if (!$user->isAllowed('setup', 'delete')) {
319 return false;
320 }
321
322 break;
323 }
324 }
325
326 break;
327 }
328
329 return true;
330 }
331
332 }
333