80 lines
3.0 KiB
PHP
80 lines
3.0 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;
|
|
|
|
/**
|
|
* Проверяет логин/пароль, не авторизуя (не трогает сессию) — первый шаг
|
|
* двухфакторной авторизации: логин/пароль верны, но сессия ещё не
|
|
* выставляется, пока не пройдёт второй фактор (см. forceLogin()).
|
|
*
|
|
* @param string $login
|
|
* @param string $password
|
|
* @return bool
|
|
*/
|
|
public function verifyCredentials(string $login, string $password): bool;
|
|
|
|
/**
|
|
* Авторизует пользователя без проверки пароля — второй шаг двухфакторной
|
|
* авторизации (после verifyCredentials() и успешной проверки кода).
|
|
*
|
|
* @param string $login
|
|
* @param bool $remember «Запомнить меня» — не спрашивать логин повторно
|
|
* до явного logout() (см. logout())
|
|
* @return void
|
|
*/
|
|
public function forceLogin(string $login, bool $remember = false): void;
|
|
|
|
/**
|
|
* Разлогинивает пользователя (очищает состояние сессии).
|
|
*
|
|
* @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;
|
|
}
|