данный фасад позволяет в любом месте приложения получить информацию по данным пользователя из кук (в случае web контура, насчет контура api не уверен). При этом не требуется выполнять инъекции зависимостей. Фасад инициируется на этапе аутентификации. Фасад использует UserService как набор гетеры и сеттеры, добавляю его и его провайдер регистрации сервиса

This commit is contained in:
vasya
2026-03-13 18:12:44 +03:00
parent e927910fda
commit 6dcd23e5d7
3 changed files with 246 additions and 0 deletions
+198
View File
@@ -0,0 +1,198 @@
<?php
namespace App\Services;
use Exception;
/**
* Сервис работы с данными юзера (установка/получение логина, групп, подмена значений в случае работы на тестовой среде)
*/
class UserService
{
/**
* @var string пользовательский логин
*/
public string $userLogin;
/**
* @var array пользовательские группы AD
*/
public array $userADGroups;
/**
* @var array почтовые рассылки куда входит пользователь
*/
public array $userEmails;
/**
* @var boolean является ли пользователь админом приложения Magic
*/
public bool $isAdmin;
/**
* @var array доступы пользователя к приложениям
*/
public array $userAppPermissions;
/**
* @var int идентификатор пользователя из таблицы users
*/
public int $userId;
/**
* Установка пользовательского логина
*
* @param string $login логин для подмены превоначального значения, взятого из сессии
* @return void
*/
public function setUserLogin(string $login): void
{
$this->userLogin = $login;
}
/**
* Установка пользовательского логина
*
* @param array $appRoles доступы пользователя к приложениям Magic
* @return void
*/
public function setUserAppPermissions(array $appRoles): void
{
$this->userAppPermissions = $appRoles;
}
/**
* Установка пользовательского идентификатора из таблицы users
*
* @param int $userId идентификатор пользователя
* @return void
*/
public function setUserId(int $userId): void
{
$this->userId = $userId;
}
/**
* Установка групп AD пользователя
*
* @param array $userGroups все группы из AD где состоит пользователь (emails, AD и т.д.)
* @return void
*/
public function setUserADGroups(array $userGroups): void
{
$this->userADGroups = array_filter($userGroups, function($el){return substr($el, 0, 1) !== '#';});
}
/**
* Установка почтовых рассылок куда входит пользователь
*
* @param array $userGroups все групы пользователя AD, в которых он состоит (почтовые ящики, AD и т.д.)
* @return void
*/
public function setUserEmails(array $userGroups): void
{
$this->userEmails = array_filter($userGroups, function($el){return substr($el, 0, 1) === '#';});
}
/**
* Устанавливаем флаг является ли пользователь админом приложения Magic
*
* @param boolean $flag
* @return void
*/
public function setIsAdminFlag(bool $flag): void
{
$this->isAdmin = $flag;
}
/**
* Добавление группы AD в массив групп пользователя
*
* @param string $group группа для добавления в массив установленных при аутентификации групп AD пользователя
* @return void
*/
public function addUserADGroup(string $group): void
{
$this->userADGroups[] = $group;
}
/**
* Добавление email в массив емейлов пользователя
*
* @param string $email почтовая рассылка для добавления в массив установленных при аутентификации почтовых ящиков пользователя
* @return void
*/
public function addUserEmail(string $email): void
{
$this->userEmails[] = $email;
}
/**
* Возвращаем доступы пользователя к приложениям Magic
*
* @return array
*/
public function getUserAppPermissions(): array
{
return $this->userAppPermissions;
}
/**
* Получаем пользовательский логин
*
* @return string
*/
public function getUserLogin(): string
{
return $this->userLogin;
}
/**
* Получаем пользовательский логин
*
* @return int
*/
public function getUserId(): int
{
return $this->userId;
}
/**
* Получаем пользовательский логин
*
* @return array
*/
public function getUserADGroups(): array
{
return $this->userADGroups;
}
/**
* Получаем email рассылки куда он входит
*
* @return array
*/
public function getUserEmails(): array
{
return $this->userEmails;
}
/**
* Получаем значение флага является ли пользователь админом приложения Magic
*
* @return boolean
*/
public function getIsAdminFlag(): bool
{
return $this->isAdmin;
}
}