• Модуль: main
  • Путь к файлу: ~/bitrix/modules/main/lib/access/user/usermodel.php
  • Класс: BitrixMainAccessUserUserModel
  • Вызов: UserModel::getAccessCodes
public function getAccessCodes(): array
{
	if ($this->accessCodes === null)
	{
		$this->accessCodes = [];
		if ($this->userId === 0)
		{
			return $this->accessCodes;
		}

		// mantis #0160102
		$res = UserAccessTable::getList([
			'select' => ['ACCESS_CODE'],
			'filter' => [
				'=USER_ID' => $this->userId,
				'!%=ACCESS_CODE' => 'CHAT%',
			]
		]);
		foreach ($res as $row)
		{
			$signature = (new AccessCode($row['ACCESS_CODE']))->getSignature();
			if ($signature)
			{
				$this->accessCodes[$signature] = $signature;
			}
		}

		$this->accessCodes = array_values($this->accessCodes);

		// add employee access code
		if (!BitrixMainModuleManager::isModuleInstalled('intranet'))
            {
                return $this->accessCodes;
            }

            $user = UserTable::getList([
                'select' => ['UF_DEPARTMENT'],
                'filter' => [
                    '=ID' => $this->userId,
                ],
                'limit' => 1
            ])->fetch();

            if (
                $user
                && is_array($user['UF_DEPARTMENT'])
                && count($user['UF_DEPARTMENT'])
                && !empty(array_values($user['UF_DEPARTMENT'])[0])
            )
            {
                $this->accessCodes[] = AccessCode::ACCESS_EMPLOYEE . '0';
            }
	}
	return $this->accessCodes;
}