Varios cambios Co-authored-by: Juan Pablo Vial <jpvialb@incoviba.cl> Reviewed-on: #25
43 lines
1.4 KiB
PHP
43 lines
1.4 KiB
PHP
<?php
|
|
namespace Incoviba\Controller\API;
|
|
|
|
use Psr\Http\Message\ResponseInterface;
|
|
use Psr\Http\Message\ServerRequestInterface;
|
|
use Incoviba\Common\Implement\Exception\EmptyResult;
|
|
use Incoviba\Common\Ideal;
|
|
use Incoviba\Repository;
|
|
use Incoviba\Service;
|
|
|
|
class Login extends Ideal\Controller
|
|
{
|
|
use withJson;
|
|
|
|
public function __invoke(ServerRequestInterface $request, ResponseInterface $response,
|
|
Repository\User $userRepository,
|
|
Repository\Login $loginRepository,
|
|
Service\Login $loginService): ResponseInterface
|
|
{
|
|
$body = $request->getParsedBody();
|
|
$output = [
|
|
'username' => $body['username'],
|
|
'success' => false
|
|
];
|
|
$statusCode = 409;
|
|
try {
|
|
$user = $userRepository->fetchByName($body['username']);
|
|
if (!$user->validate($body['password'])) {
|
|
throw new EmptyResult("Invalid password");
|
|
}
|
|
$loginService->login($user);
|
|
$output['token'] = $loginService->getToken();
|
|
$output['success'] = true;
|
|
$statusCode = 200;
|
|
} catch (EmptyResult $exception) {
|
|
$this->logger->error($exception, [
|
|
'username' => $body['username']
|
|
]);
|
|
}
|
|
return $this->withJson($response, $output, $statusCode);
|
|
}
|
|
}
|