generated from mirzaev/pot
	большая разработка аутентификации
This commit is contained in:
		| @@ -7,8 +7,8 @@ namespace mirzaev\site\account\controllers; | ||||
| // Файлы проекта | ||||
| use mirzaev\site\account\views\templater; | ||||
| use mirzaev\site\account\models\core as models; | ||||
| use mirzaev\site\account\models\account_model as account; | ||||
| use mirzaev\site\account\models\session_model as session; | ||||
| use mirzaev\site\account\models\account; | ||||
| use mirzaev\site\account\models\session; | ||||
|  | ||||
| // Библиотека для ArangoDB | ||||
| use ArangoDBClient\Document as _document; | ||||
| @@ -26,13 +26,36 @@ use mirzaev\vk\robots\user as robot; | ||||
|  * @package mirzaev\site\account\controllers | ||||
|  * @author Arsen Mirzaev Tatyano-Muradovich <arsen@mirzaev.sexy> | ||||
|  */ | ||||
| class core extends controller  | ||||
| class core extends controller | ||||
| { | ||||
|   /** | ||||
|    * Переменные окружения | ||||
|    */ | ||||
|   protected robot $vk; | ||||
|  | ||||
|   /** | ||||
|    * Инстанция сессии | ||||
|    */ | ||||
|   public session $session; | ||||
|  | ||||
|   /** | ||||
|    * Инстанция аккаунта | ||||
|    */ | ||||
|   public ?account $account; | ||||
|  | ||||
|   /** | ||||
|    * Постфикс | ||||
|    */ | ||||
|   public string $postfix = ''; | ||||
|  | ||||
|   /** | ||||
|    * Реестр ошибок | ||||
|    */ | ||||
|   public array $errors = [ | ||||
|     'session' => [], | ||||
|     'account' => [] | ||||
|   ]; | ||||
|  | ||||
|   /** | ||||
|    * Конструктор | ||||
|    * | ||||
| @@ -48,25 +71,18 @@ class core extends controller | ||||
|     // Инициализация шаблонизатора представлений | ||||
|     $this->view = new templater; | ||||
|  | ||||
|     // Инициализация журнала ошибок | ||||
|     $this->view->errors = [ | ||||
|       'session' => [], | ||||
|       'account' => [], | ||||
|       'vk' => [] | ||||
|     ]; | ||||
|  | ||||
|     // Инициализация даты до которой будет активна сессия | ||||
|     $expires = time() + 604800; | ||||
|  | ||||
|     // Инициализация сессии (без журналирования) | ||||
|     $this->view->session = new session($_COOKIE["session"] ?? null, $expires) ?? | ||||
|     $this->session = new session($_COOKIE["session"] ?? null, $expires) ?? | ||||
|       header('Location: https://mirzaev.sexy/error?code=500&text=Не+удалось+инициализировать+сессию'); | ||||
|  | ||||
|     if ($_COOKIE["session"] ?? null !== $this->view->session->hash) { | ||||
|     if ($_COOKIE["session"] ?? null !== $this->session->hash) { | ||||
|       // Изменился хеш сессии (подразумевается, что сессия устарела) | ||||
|  | ||||
|       // Запись хеша новой сессии | ||||
|       setcookie('session', $this->view->session->hash, [ | ||||
|       setcookie('session', $this->session->hash, [ | ||||
|         'expires' => $expires, | ||||
|         'domain' => 'mirzaev.sexy', | ||||
|         'path' => '/', | ||||
| @@ -77,20 +93,11 @@ class core extends controller | ||||
|     } | ||||
|  | ||||
|     // Инициализация аккаунта (без журналирования) | ||||
|     $this->view->account = $this->view->session->account(); | ||||
|     $this->account = $this->session->account(); | ||||
|  | ||||
|     if ($this->view->account instanceof _document) { | ||||
|     if ($this->account instanceof _document) { | ||||
|       // Инициализирован аккаунт | ||||
|  | ||||
|       // Инициализация аккаунта ВКонтакте (без журналирования) | ||||
|       $this->variables['vk'] = account::vk($this->variables['account']); | ||||
|  | ||||
|       if ($this->variables['vk'] instanceof _document) { | ||||
|         // Инициализирован аккаунт ВКонтакте | ||||
|  | ||||
|         // Инициализация робота для аккаунта ВКонтакте | ||||
|         $this->vk = vk::init()->user(key: $this->variables['vk']->access['key']); | ||||
|       } else unset($this->variables['account'], $this->variables['vk']); | ||||
|     } | ||||
|   } | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user