1
0

Доработка сессий

This commit is contained in:
2026-01-18 21:29:28 +07:00
parent 6928687982
commit 7d7b817d7e
7 changed files with 126 additions and 67 deletions

View File

@@ -24,7 +24,7 @@ if ($method === 'POST') {
RestApi::response($result);
}
// Выход (удаление всех сессий)
// Выход (только текущая сессия)
if ($action === 'logout') {
$account = new Account();
$keycookies = $data['keycookies'] ?? $_COOKIE['session'] ?? null;
@@ -32,6 +32,14 @@ if ($method === 'POST') {
RestApi::response($result);
}
// Выход со всех устройств
if ($action === 'logout_all') {
$account = new Account();
$keycookies = $data['keycookies'] ?? $_COOKIE['session'] ?? null;
$result = $account->logout_all($keycookies);
RestApi::response($result);
}
// Создание пользователя
if ($action === 'create_user') {
$account = new Account();

View File

@@ -196,7 +196,7 @@ class Account extends BaseEntity {
];
}
// Удаление всех сессий пользователя (logout)
// Удаление только текущей сессии (logout)
public function logout($keycookies) {
// Проверяем, что сессия не пустая
if (!$keycookies) {
@@ -204,6 +204,28 @@ class Account extends BaseEntity {
return $this->getErrors();
}
// Удаляем только текущую сессию
Database::delete($this->db_name_session, [
'keycookies' => $keycookies
]);
// Удаляем cookie
setcookie('session', '', [
'expires' => time() - 3600,
'path' => '/'
]);
return ['success' => true];
}
// Удаление всех сессий пользователя (logout со всех устройств)
public function logout_all($keycookies) {
// Проверяем, что сессия не пустая
if (!$keycookies) {
$this->addError('session', 'Сессия не указана');
return $this->getErrors();
}
// Получаем сессию чтобы узнать id пользователя
$session = Database::get($this->db_name_session, ['id_accounts'], [
'keycookies' => $keycookies