<?php
class AuthService
{
protected UserRepository $userRepository;
public function __construct(UserRepository $userRepository) {
$this->userRepository = $userRepository;
}
// kj
public function login($username, $password)
{
$user = $this->userRepository->getUserByUsername($username);
if ($user && password_verify($password, $user['password'])) {
$_SESSION['user_id'] = $user['id'];
return true;
}
return false;
}
// удалаем сесссию
public function logout() {
unset($_SESSION['user_id']);
}
// проверяем, а зашел ли пользователь на сайт
public function isLoggedIn() {
return isset($_SESSION['user_id']);
}
public function getCurrentUser()
{
if ($this->isLoggedIn()) {
return $this->userRepository->getUserById($_SESSION['user_id']);
}
return null;
}
}
class UserRepository
{
protected $users = [
1 => ['id' => 1, 'username' => 'myrusakov', 'password' => '$2y$10$1XvZnO1UFf/6JlmzDgSPSeP2V0bQDyZLFiBz75bZv.5x63vNBY1o6'], // Пароль 'password'
2 => ['id' => 2, 'username' => 'myrusakov2', 'password' => '$2y$10$amUgTC8HBk7aMUuFAK.uoONfsvhZwGpC1kDDvJb9WwvfnbXF4X8BO'], // Пароль 'password123'
];
public function getUserByUsername($username)
{
foreach ($this->users as $user) {
if ($user['username'] === $username) {
return $user;
}
}
return null;
}
public function getUserById($id)
{
return isset($this->users[$id]) ? $this->users[$id] : null;
}
}
// Пример использования:
// начинаем сессию
session_start();
// создаем классы
$userRepository = new UserRepository();
$authService = new AuthService($userRepository);
// Пример входа на сайт
$username = 'myrusakov';
$password = 'password';
if ($authService->login($username, $password)) {
echo "Вход выполнен успешно! Добро пожаловать, {$authService->getCurrentUser()['username']}!";
} else {
echo "Неверное имя пользователя или пароль.";
}
// Проверка статуса входа - залогинен ли пользователь
if ($authService->isLoggedIn()) {
echo "Пользователь вошел в систему.";
} else {
echo "Пользователь не вошел в систему.";
}
// Пример выхода
$authService->logout();
echo "Пользователь вышел из системы.";