From 20cc34ca1e7d552f80f32a12f1e99d791afbe903 Mon Sep 17 00:00:00 2001 From: Yisroel Baum Date: Wed, 29 Oct 2025 22:07:01 +0200 Subject: [PATCH] add login, logout, dashboard methods to user controller --- src/Controllers/UserController.php | 54 ++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) diff --git a/src/Controllers/UserController.php b/src/Controllers/UserController.php index 740776c..440dfa7 100644 --- a/src/Controllers/UserController.php +++ b/src/Controllers/UserController.php @@ -5,15 +5,69 @@ namespace DigiWill\Controllers; use Psr\Http\Message\ResponseInterface as Response; use Psr\Http\Message\RequestInterface as Request; use Slim\Views\Twig; +use DigiWill\Repositories\UserRepository; class UserController { + public function __construct( + private UserRepository $userRepo + ) {} + public function home(Request $request, Response $response): Response { + $this->userRepo->find(1); $view = Twig::fromRequest($request); return $view->render($response, 'home.html.twig', [ 'name' => '', ]); } + + public function login(Request $request, Response $response): Response + { + $view = Twig::fromRequest($request); + + return $view->render($response, 'login.html.twig', [ + 'name' => '', + ]); + } + + public function doLogin(Request $request, Response $response): Response + { + $_SESSION['user_id'] = 1; + $_SESSION['user'] = ['id' => 1, 'email' => 'email@email.com']; + + return $response->withHeader('Location', '/dashboard')->withStatus(302); + } + + public function dashboard(Request $request, Response $response): Response + { + $view = Twig::fromRequest($request); + + return $view->render($response, 'dashboard.html.twig', [ + 'name' => '', + ]); + } + + public function logout(Request $request, Response $response): Response + { + $_SESSION = []; + if (ini_get('session.use_cookies')) { + $params = session_get_cookie_params(); + setcookie( + session_name(), + '', + time() - 42000, + $params['path'], + $params['domain'], + $params['secure'], + $params['httponly'] + ); + } + session_destroy(); + + return $response + ->withHeader('Location', '/') + ->withStatus(302); + } }