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