58 lines
1.9 KiB
PHP
58 lines
1.9 KiB
PHP
<?php
|
|
/**
|
|
* @package Bicycle
|
|
* @author Egor Isaev
|
|
* @description AuthDriver.php
|
|
* @copyright (c) 06/08/2026
|
|
*/
|
|
|
|
namespace Services\Auth;
|
|
|
|
/**
|
|
* Общий интерфейс драйвера авторизации. Реализации: {@see FileAuthDriver}
|
|
* (по умолчанию), позже — БД/LDAP/Keycloak — без изменения кода, который
|
|
* работает через этот интерфейс.
|
|
*/
|
|
interface AuthDriver
|
|
{
|
|
/**
|
|
* Проверяет логин/пароль и, если верны, авторизует пользователя
|
|
* (сохраняет состояние в сессии).
|
|
*
|
|
* @param string $login
|
|
* @param string $password
|
|
* @return bool
|
|
*/
|
|
public function login(string $login, string $password): bool;
|
|
|
|
/**
|
|
* Разлогинивает пользователя (очищает состояние сессии).
|
|
*
|
|
* @return void
|
|
*/
|
|
public function logout(): void;
|
|
|
|
/**
|
|
* Авторизован ли пользователь в текущей сессии.
|
|
*
|
|
* @return bool
|
|
*/
|
|
public function loggedIn(): bool;
|
|
|
|
/**
|
|
* Данные текущего авторизованного пользователя.
|
|
*
|
|
* @return array|null null, если не авторизован
|
|
*/
|
|
public function getUser(): ?array;
|
|
|
|
/**
|
|
* Проверяет пароль против сохранённого хэша текущего авторизованного
|
|
* пользователя (например, для подтверждения перед сменой настроек).
|
|
*
|
|
* @param string $password
|
|
* @return bool false, если пользователь не авторизован или пароль не совпал
|
|
*/
|
|
public function checkPassword(string $password): bool;
|
|
}
|