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