add login, logout, dashboard methods to user controller

This commit is contained in:
Yisroel Baum 2025-10-29 22:07:01 +02:00
parent 175bd3734b
commit 20cc34ca1e
Signed by: yisroelbaum
GPG key ID: 0FA60884F75520A9

View file

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