36 lines
1.2 KiB
PHP
36 lines
1.2 KiB
PHP
<?php
|
|
namespace Incoviba\UI\Common\Controller;
|
|
|
|
use Psr\Http\Message\ServerRequestInterface as Request;
|
|
use Psr\Http\Message\ResponseInterface as Response;
|
|
use Slim\Views\Blade as View;
|
|
use Incoviba\UI\Common\Service\Auth as Service;
|
|
|
|
class Auth {
|
|
public function login(Request $request, Response $response, View $view): Response {
|
|
$route = $_SESSION['route'] ?? '/';
|
|
return $view->render($response, 'auth.login', compact('route'));
|
|
}
|
|
public function doLogin(Request $request, Response $response, Service $service): Response {
|
|
$post = $request->getParsedBody();
|
|
$user = $post['name'];
|
|
$password = $post['password'];
|
|
$output = [
|
|
'login' => $service->login($user, $password)
|
|
];
|
|
if ($output['login']) {
|
|
unset($_SESSION['route']);
|
|
}
|
|
$response->getBody()->write(json_encode($output, JSON_UNESCAPED_SLASHES));
|
|
return $response
|
|
->withStatus(200)
|
|
->withHeader('content-type', 'application/json');
|
|
}
|
|
public function logout(Request $request, Response $response, Service $service): Response {
|
|
$service->logout();
|
|
return $response
|
|
->withStatus(302)
|
|
->withHeader('Location', '/');
|
|
}
|
|
}
|