1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
access.php
См. документацию.
1<?php
2
10
19
20class Access
21{
22 public static function isRuleEnabled(string $rule = ''): bool
23 {
24 if (empty($rule))
25 {
26 return Option::get('socialnetwork', 'group_access_rules_enabled', 'Y') === 'Y';
27 }
28
29 return Option::get('socialnetwork', 'group_access_rules_enabled_rule_'. $rule, 'Y') === 'Y';
30 }
31
32 public static function canCreate(array $params = []): bool
33 {
34 $siteId = (string)($params['siteId'] ?? SITE_ID);
35 $userId = (int)($params['userId'] ?? Helper\User::getCurrentUserId());
36
37 if (static::isRuleEnabled(GroupDictionary::CREATE))
38 {
39 return GroupAccessController::getInstance($userId)
40 ->check(GroupDictionary::CREATE, GroupModel::createFromArray(['siteIds' => [$siteId]]));
41 }
42
43 $checkAdminSession = (bool)($params['checkAdminSession'] ?? true);
44
45 return (
46 \CSocNetUser::isCurrentUserModuleAdmin(SITE_ID, $checkAdminSession)
47 || (\CMain::getGroupRight('socialnetwork', false, 'Y', 'Y', [ $siteId, false ]) >= 'K')
48 );
49 }
50
51 public static function canView(array $params = []): bool
52 {
53 $groupId = (int)($params['groupId'] ?? 0);
54 $currentUserId = (int)($params['userId'] ?? Helper\User::getCurrentUserId());
55
56 if (static::isRuleEnabled(GroupDictionary::VIEW))
57 {
58 return GroupAccessController::can($currentUserId, GroupDictionary::VIEW, $groupId);
59 }
60
61 if ($groupId <= 0)
62 {
63 return false;
64 }
65
66 if ($currentUserId <= 0)
67 {
68 return false;
69 }
70
71 $checkAdminSession = (bool)($params['checkAdminSession'] ?? true);
72
73 $group = WorkgroupTable::getList([
74 'filter' => [
75 '=ID' => $groupId,
76 ],
77 'select' => [ 'ID', 'CLOSED', 'PROJECT', 'SCRUM_MASTER_ID', 'VISIBLE' ],
78 ])->fetchObject();
79 if (!$group)
80 {
81 return false;
82 }
83
84 $currentUserRelation = UserToGroupTable::getList([
85 'filter' => [
86 '=GROUP_ID' => $groupId,
87 '=USER_ID' => $currentUserId,
88 ],
89 'select' => [ 'ID', 'ROLE', 'USER_ID', 'GROUP_ID' ],
90 ])->fetchObject();
91
92 $accessManager = new AccessManager(
93 $group,
94 $currentUserRelation,
95 $currentUserRelation,
96 [],
97 [
98 'checkAdminSession' => $checkAdminSession,
99 ]
100 );
101
102 return $accessManager->canView();
103 }
104
105 public static function canModify(array $params = []): bool
106 {
107 $groupId = (int)($params['groupId'] ?? 0);
108 $currentUserId = (int)($params['userId'] ?? Helper\User::getCurrentUserId());
109
110 if (static::isRuleEnabled(GroupDictionary::UPDATE))
111 {
112 return GroupAccessController::can($currentUserId, GroupDictionary::UPDATE, $groupId);
113 }
114
115 $checkAdminSession = (bool)($params['checkAdminSession'] ?? true);
116
117 if ($groupId <= 0)
118 {
119 return false;
120 }
121
122 if ($currentUserId <= 0)
123 {
124 return false;
125 }
126
127 $group = WorkgroupTable::getList([
128 'filter' => [
129 '=ID' => $groupId,
130 ],
131 'select' => [ 'ID', 'CLOSED', 'PROJECT', 'SCRUM_MASTER_ID' ],
132 ])->fetchObject();
133 if (!$group)
134 {
135 return false;
136 }
137
138 $currentUserRelation = UserToGroupTable::getList([
139 'filter' => [
140 '=GROUP_ID' => $groupId,
141 '=USER_ID' => $currentUserId,
142 ],
143 'select' => [ 'ID', 'ROLE', 'USER_ID', 'GROUP_ID' ],
144 ])->fetchObject();
145
146 $accessManager = new AccessManager(
147 $group,
148 $currentUserRelation,
149 $currentUserRelation,
150 [],
151 [
152 'checkAdminSession' => $checkAdminSession,
153 ]
154 );
155
156 return $accessManager->canModify();
157 }
158
159 public static function canUpdate(array $params = []): bool
160 {
161 return static::canModify($params);
162 }
163
164 public static function canDelete(array $params = []): bool
165 {
166 return static::canModify($params);
167 }
168
169 public static function canSetOwner(array $params = []): bool
170 {
171 $groupId = (int)($params['groupId'] ?? 0);
172 $userId = (int)($params['userId'] ?? 0);
173 $currentUserId = (int)($params['fromUserId'] ?? Helper\User::getCurrentUserId());
174
175 if (static::isRuleEnabled(GroupDictionary::SET_OWNER))
176 {
177 return GroupAccessController::can(
178 $currentUserId,
179 GroupDictionary::SET_OWNER,
180 $groupId,
181 ['userId' => $userId]
182 );
183 }
184
185 if (
186 $groupId <= 0
187 || $userId <= 0
188 || $currentUserId <= 0
189 )
190 {
191 return false;
192 }
193
194 $group = WorkgroupTable::getList([
195 'filter' => [
196 '=ID' => $groupId,
197 ],
198 'select' => [ 'ID', 'CLOSED', 'PROJECT', 'SCRUM_MASTER_ID' ],
199 ])->fetchObject();
200 if (!$group)
201 {
202 return false;
203 }
204
205 $targetUserRelation = UserToGroupTable::getList([
206 'filter' => [
207 '=GROUP_ID' => $groupId,
208 '=USER_ID' => $userId,
209 ],
210 'select' => [ 'ID', 'ROLE', 'USER_ID', 'GROUP_ID' ],
211 ])->fetchObject();
212
213 $currentUserRelation = UserToGroupTable::getList([
214 'filter' => [
215 '=GROUP_ID' => $groupId,
216 '=USER_ID' => $currentUserId,
217 ],
218 'select' => [ 'ID', 'ROLE', 'USER_ID', 'GROUP_ID' ],
219 ])->fetchObject();
220
221 $accessManager = new AccessManager(
222 $group,
223 $targetUserRelation,
224 $currentUserRelation
225 );
226
227 return $accessManager->canSetOwner();
228 }
229
230 public static function canSetScrumMaster(array $params = []): bool
231 {
232 $groupId = (int)($params['groupId'] ?? 0);
233 $userId = ($params['userId'] ?? null);
234 $currentUserId = (int)($params['fromUserId'] ?? Helper\User::getCurrentUserId());
235
236 if (static::isRuleEnabled(GroupDictionary::SET_SCRUM_MASTER))
237 {
238 return GroupAccessController::can(
239 $currentUserId,
240 GroupDictionary::SET_SCRUM_MASTER,
241 $groupId,
242 ['userId' => $userId]
243 );
244 }
245
246 if (
247 $groupId <= 0
248 || $userId <= 0
249 || $currentUserId <= 0
250 )
251 {
252 return false;
253 }
254
255 $group = WorkgroupTable::getList([
256 'filter' => [
257 '=ID' => $groupId,
258 ],
259 'select' => [ 'ID', 'CLOSED', 'PROJECT', 'SCRUM_MASTER_ID' ],
260 ])->fetchObject();
261 if (!$group)
262 {
263 return false;
264 }
265
266 $targetUserRelation = UserToGroupTable::getList([
267 'filter' => [
268 '=GROUP_ID' => $groupId,
269 '=USER_ID' => $userId,
270 ],
271 'select' => [ 'ID', 'ROLE', 'USER_ID', 'GROUP_ID' ],
272 ])->fetchObject();
273
274 $currentUserRelation = UserToGroupTable::getList([
275 'filter' => [
276 '=GROUP_ID' => $groupId,
277 '=USER_ID' => $currentUserId,
278 ],
279 'select' => [ 'ID', 'ROLE', 'USER_ID', 'GROUP_ID' ],
280 ])->fetchObject();
281
282 $accessManager = new AccessManager(
283 $group,
284 $targetUserRelation,
285 $currentUserRelation
286 );
287
288 return $accessManager->canSetScrumMaster();
289 }
290
291 public static function canDeleteOutgoingRequest(array $params = []): bool
292 {
293 $groupId = (int)($params['groupId'] ?? 0);
294 $userId = ($params['userId'] ?? null);
295 $currentUserId = (int)($params['fromUserId'] ?? Helper\User::getCurrentUserId());
296
297 if (static::isRuleEnabled(GroupDictionary::DELETE_OUTGOING_REQUEST))
298 {
299 return GroupAccessController::can(
300 $currentUserId,
301 GroupDictionary::DELETE_OUTGOING_REQUEST,
302 $groupId,
303 ['userId' => $userId]
304 );
305 }
306
307 if (
308 $groupId <= 0
309 || $userId <= 0
310 || $currentUserId <= 0
311 )
312 {
313 return false;
314 }
315
316 $group = WorkgroupTable::getList([
317 'filter' => [
318 '=ID' => $groupId,
319 ],
320 'select' => [ 'ID', 'CLOSED', 'PROJECT', 'SCRUM_MASTER_ID', 'INITIATE_PERMS' ],
321 ])->fetchObject();
322 if (!$group)
323 {
324 return false;
325 }
326
327 $targetUserRelation = UserToGroupTable::getList([
328 'filter' => [
329 '=GROUP_ID' => $groupId,
330 '=USER_ID' => $userId,
331 ],
332 'select' => [ 'ID', 'ROLE', 'USER_ID', 'GROUP_ID', 'INITIATED_BY_TYPE', 'INITIATED_BY_USER_ID' ],
333 ])->fetchObject();
334
335 $currentUserRelation = UserToGroupTable::getList([
336 'filter' => [
337 '=GROUP_ID' => $groupId,
338 '=USER_ID' => $currentUserId,
339 ],
340 'select' => [ 'ID', 'ROLE', 'USER_ID', 'GROUP_ID' ],
341 ])->fetchObject();
342
343 $accessManager = new AccessManager(
344 $group,
345 $targetUserRelation,
346 $currentUserRelation
347 );
348
349 return $accessManager->canDeleteOutgoingRequest();
350 }
351
352 public static function canDeleteIncomingRequest(array $params = []): bool
353 {
354 $groupId = (int)($params['groupId'] ?? 0);
355 $userId = ($params['userId'] ?? null);
356 $currentUserId = (int)($params['fromUserId'] ?? Helper\User::getCurrentUserId());
357
358 if (static::isRuleEnabled(GroupDictionary::DELETE_INCOMING_REQUEST))
359 {
360 return GroupAccessController::can(
361 $currentUserId,
362 GroupDictionary::DELETE_INCOMING_REQUEST,
363 $groupId,
364 ['userId' => $userId]
365 );
366 }
367
368 if (
369 $groupId <= 0
370 || $userId <= 0
371 || $currentUserId <= 0
372 )
373 {
374 return false;
375 }
376
377 $group = WorkgroupTable::getList([
378 'filter' => [
379 '=ID' => $groupId,
380 ],
381 'select' => [ 'ID', 'CLOSED', 'PROJECT', 'SCRUM_MASTER_ID' ],
382 ])->fetchObject();
383 if (!$group)
384 {
385 return false;
386 }
387
388 $targetUserRelation = UserToGroupTable::getList([
389 'filter' => [
390 '=GROUP_ID' => $groupId,
391 '=USER_ID' => $userId,
392 ],
393 'select' => [ 'ID', 'ROLE', 'GROUP_ID', 'INITIATED_BY_TYPE', 'INITIATED_BY_USER_ID' ],
394 ])->fetchObject();
395
396 $currentUserRelation = UserToGroupTable::getList([
397 'filter' => [
398 '=GROUP_ID' => $groupId,
399 '=USER_ID' => $currentUserId,
400 ],
401 'select' => [ 'ID', 'GROUP_ID' ],
402 ])->fetchObject();
403
404 $accessManager = new AccessManager(
405 $group,
406 $targetUserRelation,
407 $currentUserRelation
408 );
409
410 return $accessManager->canDeleteIncomingRequest();
411 }
412
413 public static function canProcessIncomingRequest(array $params = []): bool
414 {
415 $groupId = (int)($params['groupId'] ?? 0);
416 $userId = ($params['userId'] ?? null);
417 $currentUserId = (int)($params['fromUserId'] ?? Helper\User::getCurrentUserId());
418
419 if (static::isRuleEnabled(GroupDictionary::PROCESS_INCOMING_REQUEST))
420 {
421 return GroupAccessController::can(
422 $currentUserId,
423 GroupDictionary::PROCESS_INCOMING_REQUEST,
424 $groupId,
425 ['userId' => $userId]
426 );
427 }
428
429 if (
430 $groupId <= 0
431 || $userId <= 0
432 || $currentUserId <= 0
433 )
434 {
435 return false;
436 }
437
438 $group = WorkgroupTable::getList([
439 'filter' => [
440 '=ID' => $groupId,
441 ],
442 'select' => [ 'ID', 'CLOSED', 'PROJECT', 'SCRUM_MASTER_ID', 'INITIATE_PERMS' ],
443 ])->fetchObject();
444 if (!$group)
445 {
446 return false;
447 }
448
449 $targetUserRelation = UserToGroupTable::getList([
450 'filter' => [
451 '=GROUP_ID' => $groupId,
452 '=USER_ID' => $userId,
453 ],
454 'select' => [ 'ID', 'ROLE', 'GROUP_ID', 'INITIATED_BY_TYPE' ],
455 ])->fetchObject();
456
457 $currentUserRelation = UserToGroupTable::getList([
458 'filter' => [
459 '=GROUP_ID' => $groupId,
460 '=USER_ID' => $currentUserId,
461 ],
462 'select' => [ 'ID', 'ROLE', 'USER_ID', 'GROUP_ID' ],
463 ])->fetchObject();
464
465 $accessManager = new AccessManager(
466 $group,
467 $targetUserRelation,
468 $currentUserRelation
469 );
470
471 return $accessManager->canProcessIncomingRequest();
472 }
473
474 public static function canExclude(array $params = []): bool
475 {
476 $groupId = (int)($params['groupId'] ?? 0);
477 $userId = ($params['userId'] ?? null);
478 $currentUserId = (int)($params['fromUserId'] ?? Helper\User::getCurrentUserId());
479
480 if (static::isRuleEnabled(GroupDictionary::EXCLUDE))
481 {
482 return GroupAccessController::can(
483 $currentUserId,
484 GroupDictionary::EXCLUDE,
485 $groupId,
486 ['userId' => $userId]
487 );
488 }
489
490 $group = WorkgroupTable::getList([
491 'filter' => [
492 '=ID' => $groupId,
493 ],
494 'select' => [ 'ID', 'CLOSED', 'PROJECT', 'SCRUM_MASTER_ID', 'INITIATE_PERMS' ],
495 ])->fetchObject();
496 if (!$group)
497 {
498 return false;
499 }
500
501 $targetUserRelation = UserToGroupTable::getList([
502 'filter' => [
503 '=GROUP_ID' => $groupId,
504 '=USER_ID' => $userId,
505 ],
506 'select' => [ 'ID', 'ROLE', 'USER_ID', 'GROUP_ID', 'AUTO_MEMBER' ],
507 ])->fetchObject();
508
509 $currentUserRelation = UserToGroupTable::getList([
510 'filter' => [
511 '=GROUP_ID' => $groupId,
512 '=USER_ID' => $currentUserId,
513 ],
514 'select' => [ 'ID', 'ROLE', 'USER_ID', 'GROUP_ID' ],
515 ])->fetchObject();
516
517 $accessManager = new AccessManager(
518 $group,
519 $targetUserRelation,
520 $currentUserRelation
521 );
522
523 return $accessManager->canExclude();
524 }
525
526 public static function canJoin(array $params = []): bool
527 {
528 $groupId = (int)($params['groupId'] ?? 0);
529 $userId = ($params['userId'] ?? Helper\User::getCurrentUserId());
530
531 if (static::isRuleEnabled(GroupDictionary::JOIN))
532 {
533 return GroupAccessController::can($userId, GroupDictionary::JOIN, $groupId);
534 }
535
536 if (
537 $groupId <= 0
538 || $userId <= 0
539 )
540 {
541 return false;
542 }
543
544 $group = WorkgroupTable::getList([
545 'filter' => [
546 '=ID' => $groupId,
547 ],
548 'select' => [ 'ID', 'CLOSED', 'VISIBLE' ],
549 ])->fetchObject();
550 if (!$group)
551 {
552 return false;
553 }
554
555 $currentUserRelation = UserToGroupTable::getList([
556 'filter' => [
557 '=GROUP_ID' => $groupId,
558 '=USER_ID' => $userId,
559 ],
560 'select' => [ 'ID', 'ROLE', 'USER_ID', 'GROUP_ID', 'INITIATED_BY_TYPE' ],
561 ])->fetchObject();
562
563 $accessManager = new AccessManager(
564 $group,
565 null,
566 $currentUserRelation
567 );
568
569 return $accessManager->canJoin();
570 }
571
572 public static function canLeave(array $params = []): bool
573 {
574 $groupId = (int)($params['groupId'] ?? 0);
575 $userId = ($params['userId'] ?? Helper\User::getCurrentUserId());
576
577 if (static::isRuleEnabled(GroupDictionary::LEAVE))
578 {
579 return GroupAccessController::can($userId, GroupDictionary::LEAVE, $groupId);
580 }
581
582 if (
583 $groupId <= 0
584 || $userId <= 0
585 )
586 {
587 return false;
588 }
589
590 $group = WorkgroupTable::getList([
591 'filter' => [
592 '=ID' => $groupId,
593 ],
594 'select' => [ 'ID', 'PROJECT', 'SCRUM_MASTER_ID' ],
595 ])->fetchObject();
596 if (!$group)
597 {
598 return false;
599 }
600
601 $currentUserRelation = UserToGroupTable::getList([
602 'filter' => [
603 '=GROUP_ID' => $groupId,
604 '=USER_ID' => $userId,
605 ],
606 'select' => [ 'ID', 'ROLE', 'USER_ID', 'GROUP_ID', 'AUTO_MEMBER' ],
607 ])->fetchObject();
608
609 $accessManager = new AccessManager(
610 $group,
611 null,
612 $currentUserRelation
613 );
614
615 return $accessManager->canLeave();
616 }
617
618 public static function canSetModerator(array $params = []): bool
619 {
620 $groupId = (int)($params['groupId'] ?? 0);
621 $userId = ($params['userId'] ?? null);
622 $currentUserId = (int)($params['fromUserId'] ?? Helper\User::getCurrentUserId());
623
624 if (static::isRuleEnabled(GroupDictionary::SET_MODERATOR))
625 {
626 return GroupAccessController::can(
627 $currentUserId,
628 GroupDictionary::SET_MODERATOR,
629 $groupId,
630 ['userId' => $userId]
631 );
632 }
633
634 if (
635 $groupId <= 0
636 || $userId <= 0
637 || $currentUserId <= 0
638 )
639 {
640 return false;
641 }
642
643 $group = WorkgroupTable::getList([
644 'filter' => [
645 '=ID' => $groupId,
646 ],
647 'select' => [ 'ID', 'CLOSED', 'PROJECT', 'SCRUM_MASTER_ID' ],
648 ])->fetchObject();
649 if (!$group)
650 {
651 return false;
652 }
653
654 $targetUserRelation = UserToGroupTable::getList([
655 'filter' => [
656 '=GROUP_ID' => $groupId,
657 '=USER_ID' => $userId,
658 ],
659 'select' => [ 'ID', 'ROLE', 'USER_ID', 'GROUP_ID' ],
660 ])->fetchObject();
661
662 $currentUserRelation = UserToGroupTable::getList([
663 'filter' => [
664 '=GROUP_ID' => $groupId,
665 '=USER_ID' => $currentUserId,
666 ],
667 'select' => [ 'ID', 'ROLE', 'USER_ID', 'GROUP_ID' ],
668 ])->fetchObject();
669
670 $accessManager = new AccessManager(
671 $group,
672 $targetUserRelation,
673 $currentUserRelation
674 );
675
676 return $accessManager->canSetModerator();
677 }
678
679 public static function canRemoveModerator(array $params = []): bool
680 {
681 $groupId = (int)($params['groupId'] ?? 0);
682 $userId = ($params['userId'] ?? null);
683 $currentUserId = (int)($params['fromUserId'] ?? Helper\User::getCurrentUserId());
684
685 if (static::isRuleEnabled(GroupDictionary::REMOVE_MODERATOR))
686 {
687 return GroupAccessController::can(
688 $currentUserId,
689 GroupDictionary::REMOVE_MODERATOR,
690 $groupId,
691 ['userId' => $userId]
692 );
693 }
694
695 if (
696 $groupId <= 0
697 || $userId <= 0
698 || $currentUserId <= 0
699 )
700 {
701 return false;
702 }
703
704 $group = WorkgroupTable::getList([
705 'filter' => [
706 '=ID' => $groupId,
707 ],
708 'select' => [ 'ID', 'CLOSED', 'PROJECT', 'SCRUM_MASTER_ID' ],
709 ])->fetchObject();
710 if (!$group)
711 {
712 return false;
713 }
714
715 $targetUserRelation = UserToGroupTable::getList([
716 'filter' => [
717 '=GROUP_ID' => $groupId,
718 '=USER_ID' => $userId,
719 ],
720 'select' => [ 'ID', 'ROLE', 'USER_ID', 'GROUP_ID' ],
721 ])->fetchObject();
722
723 $currentUserRelation = UserToGroupTable::getList([
724 'filter' => [
725 '=GROUP_ID' => $groupId,
726 '=USER_ID' => $currentUserId,
727 ],
728 'select' => [ 'ID', 'ROLE', 'USER_ID', 'GROUP_ID' ],
729 ])->fetchObject();
730
731 $accessManager = new AccessManager(
732 $group,
733 $targetUserRelation,
734 $currentUserRelation
735 );
736
737 return $accessManager->canRemoveModerator();
738 }
739}
if(!is_object($USER)||! $USER->IsAuthorized()) $userId
Определения check_mail.php:18
static getCurrentUserId()
Определения user.php:18
static canSetModerator(array $params=[])
Определения access.php:618
static canView(array $params=[])
Определения access.php:51
static canCreate(array $params=[])
Определения access.php:32
static canJoin(array $params=[])
Определения access.php:526
static canRemoveModerator(array $params=[])
Определения access.php:679
static canSetOwner(array $params=[])
Определения access.php:169
static canUpdate(array $params=[])
Определения access.php:159
static canDeleteIncomingRequest(array $params=[])
Определения access.php:352
static isRuleEnabled(string $rule='')
Определения access.php:22
static canSetScrumMaster(array $params=[])
Определения access.php:230
static canDelete(array $params=[])
Определения access.php:164
static canModify(array $params=[])
Определения access.php:105
static canExclude(array $params=[])
Определения access.php:474
static canDeleteOutgoingRequest(array $params=[])
Определения access.php:291
static canLeave(array $params=[])
Определения access.php:572
static canProcessIncomingRequest(array $params=[])
Определения access.php:413
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
Определения file_new.php:804
$siteId
Определения ajax.php:8
Определения accesscode.php:9
if($inWords) echo htmlspecialcharsbx(Number2Word_Rus(roundEx($totalVatSum $params['CURRENCY']
Определения template.php:799
const SITE_ID
Определения sonet_set_content_view.php:12