большая разработка аутентификации

This commit is contained in:
2023-03-02 11:46:14 +10:00
parent 0aae5b6558
commit 687db4e4b1
129 changed files with 2282 additions and 646 deletions

View File

@@ -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']);
}
}
}