From 6dcd23e5d7e6388a61c1490311925b7aa07ac219 Mon Sep 17 00:00:00 2001 From: vasya Date: Fri, 13 Mar 2026 18:12:44 +0300 Subject: [PATCH] =?UTF-8?q?=20=D0=B4=D0=B0=D0=BD=D0=BD=D1=8B=D0=B9=20?= =?UTF-8?q?=D1=84=D0=B0=D1=81=D0=B0=D0=B4=20=D0=BF=D0=BE=D0=B7=D0=B2=D0=BE?= =?UTF-8?q?=D0=BB=D1=8F=D0=B5=D1=82=20=D0=B2=20=D0=BB=D1=8E=D0=B1=D0=BE?= =?UTF-8?q?=D0=BC=20=D0=BC=D0=B5=D1=81=D1=82=D0=B5=20=D0=BF=D1=80=D0=B8?= =?UTF-8?q?=D0=BB=D0=BE=D0=B6=D0=B5=D0=BD=D0=B8=D1=8F=20=D0=BF=D0=BE=D0=BB?= =?UTF-8?q?=D1=83=D1=87=D0=B8=D1=82=D1=8C=20=D0=B8=D0=BD=D1=84=D0=BE=D1=80?= =?UTF-8?q?=D0=BC=D0=B0=D1=86=D0=B8=D1=8E=20=D0=BF=D0=BE=20=D0=B4=D0=B0?= =?UTF-8?q?=D0=BD=D0=BD=D1=8B=D0=BC=20=D0=BF=D0=BE=D0=BB=D1=8C=D0=B7=D0=BE?= =?UTF-8?q?=D0=B2=D0=B0=D1=82=D0=B5=D0=BB=D1=8F=20=D0=B8=D0=B7=20=D0=BA?= =?UTF-8?q?=D1=83=D0=BA=20(=D0=B2=20=D1=81=D0=BB=D1=83=D1=87=D0=B0=D0=B5?= =?UTF-8?q?=20web=20=D0=BA=D0=BE=D0=BD=D1=82=D1=83=D1=80=D0=B0,=20=D0=BD?= =?UTF-8?q?=D0=B0=D1=81=D1=87=D0=B5=D1=82=20=D0=BA=D0=BE=D0=BD=D1=82=D1=83?= =?UTF-8?q?=D1=80=D0=B0=20api=20=D0=BD=D0=B5=20=D1=83=D0=B2=D0=B5=D1=80?= =?UTF-8?q?=D0=B5=D0=BD).=20=D0=9F=D1=80=D0=B8=20=D1=8D=D1=82=D0=BE=D0=BC?= =?UTF-8?q?=20=D0=BD=D0=B5=20=D1=82=D1=80=D0=B5=D0=B1=D1=83=D0=B5=D1=82?= =?UTF-8?q?=D1=81=D1=8F=20=D0=B2=D1=8B=D0=BF=D0=BE=D0=BB=D0=BD=D1=8F=D1=82?= =?UTF-8?q?=D1=8C=20=D0=B8=D0=BD=D1=8A=D0=B5=D0=BA=D1=86=D0=B8=D0=B8=20?= =?UTF-8?q?=D0=B7=D0=B0=D0=B2=D0=B8=D1=81=D0=B8=D0=BC=D0=BE=D1=81=D1=82?= =?UTF-8?q?=D0=B5=D0=B9.=20=D0=A4=D0=B0=D1=81=D0=B0=D0=B4=20=D0=B8=D0=BD?= =?UTF-8?q?=D0=B8=D1=86=D0=B8=D0=B8=D1=80=D1=83=D0=B5=D1=82=D1=81=D1=8F=20?= =?UTF-8?q?=D0=BD=D0=B0=20=D1=8D=D1=82=D0=B0=D0=BF=D0=B5=20=D0=B0=D1=83?= =?UTF-8?q?=D1=82=D0=B5=D0=BD=D1=82=D0=B8=D1=84=D0=B8=D0=BA=D0=B0=D1=86?= =?UTF-8?q?=D0=B8=D0=B8.=20=D0=A4=D0=B0=D1=81=D0=B0=D0=B4=20=D0=B8=D1=81?= =?UTF-8?q?=D0=BF=D0=BE=D0=BB=D1=8C=D0=B7=D1=83=D0=B5=D1=82=20UserService?= =?UTF-8?q?=20=D0=BA=D0=B0=D0=BA=20=D0=BD=D0=B0=D0=B1=D0=BE=D1=80=20=D0=B3?= =?UTF-8?q?=D0=B5=D1=82=D0=B5=D1=80=D1=8B=20=D0=B8=20=D1=81=D0=B5=D1=82?= =?UTF-8?q?=D1=82=D0=B5=D1=80=D1=8B,=20=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D1=8F=D1=8E=20=D0=B5=D0=B3=D0=BE=20=D0=B8=20=D0=B5=D0=B3?= =?UTF-8?q?=D0=BE=20=D0=BF=D1=80=D0=BE=D0=B2=D0=B0=D0=B9=D0=B4=D0=B5=D1=80?= =?UTF-8?q?=20=D1=80=D0=B5=D0=B3=D0=B8=D1=81=D1=82=D1=80=D0=B0=D1=86=D0=B8?= =?UTF-8?q?=D0=B8=20=D1=81=D0=B5=D1=80=D0=B2=D0=B8=D1=81=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Facades/UserContext.php | 18 +++ app/Providers/UserServiceProvider.php | 30 ++++ app/Services/UserService.php | 198 ++++++++++++++++++++++++++ 3 files changed, 246 insertions(+) create mode 100644 app/Facades/UserContext.php create mode 100644 app/Providers/UserServiceProvider.php create mode 100644 app/Services/UserService.php diff --git a/app/Facades/UserContext.php b/app/Facades/UserContext.php new file mode 100644 index 0000000..c30bd64 --- /dev/null +++ b/app/Facades/UserContext.php @@ -0,0 +1,18 @@ +app->singleton(UserService::class, function($app){ + return new UserService; + }); + } + + /** + * Bootstrap services. + */ + public function boot(): void + { + // + } +} diff --git a/app/Services/UserService.php b/app/Services/UserService.php new file mode 100644 index 0000000..e25cbc0 --- /dev/null +++ b/app/Services/UserService.php @@ -0,0 +1,198 @@ +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; + } + +}