isIn()) { return $response->withStatus(302)->withHeader('Location', $view->get('urls')->base); } return $view->render($response, 'login.form'); } public function login(ServerRequestInterface $request, ResponseInterface $response, Repository\User $userRepository, Service\Login $service): ResponseInterface { $body = $request->getParsedBody(); $output = [ 'name' => $body['name'], 'login' => false ]; try { $user = $userRepository->fetchByName($body['name']); if ($service->validateUser($user, $body['password'])) { $output['login'] = $service->login($user); } } catch (EmptyResult) {} $response->getBody()->write(json_encode($output)); return $response->withHeader('Content-Type', 'application/json'); } public function logout(ServerRequestInterface $request, ResponseInterface $response, Repository\Login $loginRepository, Service\Login $service): ResponseInterface { $output = [ 'name' => '', 'logout' => false ]; try { $user = $service->getUser(); $output = [ 'name' => $user->name, 'logout' => $service->logout($user) ]; } catch (PDOException) {} $response->getBody()->write(json_encode($output)); return $response->withHeader('Content-Type', 'application/json'); } }