1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
hraccesseventhandler.php
См. документацию.
1<?php
2
3namespace Bitrix\Main\Access\Auth;
4
5use Bitrix\HumanResources\Service\Container;
6use Bitrix\HumanResources\Type\MemberEntityType;
7use Bitrix\Main\Access\AccessCode;
8use Bitrix\Main\Event;
9use Bitrix\Main\UserAccessTable;
10
12{
13 public static function onMemberUpdated(Event $event): void
14 {
15 $updatedFields = $event->getParameter('fields');
16 $member = $event->getParameter('previousMember');
17
18 if (!$member || $member->entityType !== MemberEntityType::USER)
19 {
20 return;
21 }
22
23 $roleHelperService = Container::getRoleHelperService();
24 $roleCollection = $roleHelperService->getAllRoleCollectionForSync();
25 $roleId = $member->roles[0];
26
27 if (in_array('role', $updatedFields, true))
28 {
29 (new AccessAuthProvider())->DeleteByUser($member->entityId);
30 }
31
32 if (!in_array($roleId, $roleCollection->getKeys(), true))
33 {
34 return;
35 }
36
37 $role = $roleCollection->getItemById($roleId);
38 if (!$role)
39 {
40 return;
41 }
42
43 $type = $roleHelperService->getAccessCodeByRoleXmlId($role->xmlId);
44 if (!$type)
45 {
46 return;
47 }
48
49 $accessCode = $type . $member->nodeId;
50
51 // some collision between old and new node id
52 self::deleteByAccessCode($accessCode);
53 }
54
55 public static function onMemberDeleted(Event $event): void
56 {
58 }
59
60 public static function onMemberAdded(Event $event): void
61 {
62 $member = $event->getParameter('member');
63
64 if (!$member || $member->entityType !== MemberEntityType::USER)
65 {
66 return;
67 }
68
69 (new AccessAuthProvider())->DeleteByUser($member->entityId);
70 }
71
72 private static function deleteByAccessCode(string $accessCode): void
73 {
74 // find users by access codes
75 $res = UserAccessTable::getList(
76 [
77 'filter' => [
78 '=ACCESS_CODE' => $accessCode,
79 ],
80 'select' => ['USER_ID'],
81 ],
82 );
83
85 while ($row = $res->fetch())
86 {
87 $provider->DeleteByUser($row['USER_ID']);
88 }
89 }
90}
$type
Определения options.php:106
if(!Loader::includeModule('messageservice')) $provider
Определения callback_ednaruimhpx.php:21
static onMemberAdded(Event $event)
Определения hraccesseventhandler.php:60
static onMemberUpdated(Event $event)
Определения hraccesseventhandler.php:13
static onMemberDeleted(Event $event)
Определения hraccesseventhandler.php:55
Определения event.php:5
$res
Определения filter_act.php:7
$event
Определения prolog_after.php:141