webcron/src/Controller/SecurityController.php

66 lines
2.7 KiB
PHP
Raw Normal View History

2021-04-06 19:33:20 +02:00
<?php
namespace JeroenED\Webcron\Controller;
use JeroenED\Framework\Controller;
2021-04-08 12:54:49 +02:00
use JeroenED\Webcron\Repository\User;
2021-04-06 23:19:51 +02:00
use Symfony\Component\HttpFoundation\RedirectResponse;
2021-04-06 19:33:20 +02:00
use Symfony\Component\HttpFoundation\Response;
class SecurityController extends Controller
{
public function loginAction(): Response
{
2021-04-06 23:19:51 +02:00
if(isset($_SESSION['isAuthenticated']) && $_SESSION['isAuthenticated']) {
return new RedirectResponse($this->generateRoute('default'));
2021-04-09 15:14:35 +02:00
} elseif(isset($_COOKIE['autologin_enable']) && $_COOKIE['autologin_enable'] == true) {
$userRepository = new User($this->getDbCon());
$userId = $userRepository->checkAuthentication($_COOKIE['autologin_user'], $_COOKIE['autologin_auth'], true);
if($userId !== false) {
$_SESSION['user.id'] = $userId;
$_SESSION['isAuthenticated'] = true;
} else {
return new RedirectResponse($this->generateRoute('logout'));
}
return new RedirectResponse($this->generateRoute('default'));
2021-04-06 23:19:51 +02:00
}
2021-04-06 19:33:20 +02:00
return $this->render('security/login.html.twig');
}
2021-04-07 13:31:57 +02:00
2021-04-09 15:14:35 +02:00
public function logoutAction(): Response
{
$_SESSION['isAuthenticated'] = false;
unset($_SESSION['user.id']);
unset($_COOKIE['autologin_auth']);
unset($_COOKIE['autologin_user']);
unset($_COOKIE['autologin_enable']);
setcookie('autologin_auth', "", time() - 3600);
setcookie('autologin_user', "", time() - 3600);
setcookie('autologin_enable', "", time() - 3600);
$this->addFlash('success', 'Successfully logged out');
return new RedirectResponse($this->generateRoute('login'));
}
2021-04-07 13:31:57 +02:00
public function loginCheckAction(): Response
{
2021-04-08 12:54:49 +02:00
$request = $this->getRequest();
$userRepository = new User($this->getDbCon());
$credentials = $request->request->all();
2021-04-09 15:14:35 +02:00
$userId = $userRepository->checkAuthentication($credentials['name'], $credentials['passwd']);
if($userId !== false) {
$_SESSION['user.id'] = $userId;
2021-04-08 12:54:49 +02:00
$_SESSION['isAuthenticated'] = true;
2021-04-09 15:14:35 +02:00
if(isset($credentials['autologin'])) {
$token = $userRepository->createAutologinToken($credentials['passwd']);
setcookie('autologin_auth', $token, time() + $_ENV['COOKIE_LIFETIME'], "/");
setcookie('autologin_user', $credentials['name'], time() + $_ENV['COOKIE_LIFETIME'], "/");
setcookie('autologin_enable', true, time() + $_ENV['COOKIE_LIFETIME'], "/");
}
2021-04-08 12:54:49 +02:00
return new RedirectResponse($this->generateRoute('default'));
}
2021-04-09 15:14:35 +02:00
$this->addFlash('danger', 'Login Failed');
2021-04-08 12:54:49 +02:00
return new RedirectResponse($this->generateRoute('login'));
2021-04-07 13:31:57 +02:00
}
2021-04-06 19:33:20 +02:00
}