Bicycle/Services/Auth/AuthDriver.php
Egor Isaev bbeb36b2e8 dev
2026-08-06 16:52:19 +03:00

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;
}