auth #3
@@ -0,0 +1,18 @@
|
||||
<?php
|
||||
|
||||
namespace App\Facades;
|
||||
|
||||
use Illuminate\Support\Facades\Facade;
|
||||
|
||||
/**
|
||||
* Фасад для доступа к user сервису без инъекции зависимостей
|
||||
*
|
||||
* @see \App\Services\UserService
|
||||
*/
|
||||
class UserContext extends Facade
|
||||
{
|
||||
protected static function getFacadeAccessor()
|
||||
{
|
||||
return \App\Services\UserService::class;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
<?php
|
||||
|
||||
namespace App\Providers;
|
||||
|
||||
use Illuminate\Support\ServiceProvider;
|
||||
use App\Services\UserService;
|
||||
|
||||
/**
|
||||
* Провайдер для регистрации сервиса работы с данными юзера (установка логина, групп, подмена значений в случае работы на тестовой среде)
|
||||
*/
|
||||
class UserServiceProvider extends ServiceProvider
|
||||
{
|
||||
/**
|
||||
* Register services.
|
||||
*/
|
||||
public function register(): void
|
||||
{
|
||||
$this->app->singleton(UserService::class, function($app){
|
||||
return new UserService;
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Bootstrap services.
|
||||
*/
|
||||
public function boot(): void
|
||||
{
|
||||
//
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user