Added fallback anonymous user to authorization
This commit is contained in:
parent
2335037a9c
commit
1f6017aae7
4 changed files with 46 additions and 9 deletions
|
@ -4,10 +4,15 @@ namespace Szurubooru\Controllers;
|
||||||
final class AuthController extends AbstractController
|
final class AuthController extends AbstractController
|
||||||
{
|
{
|
||||||
private $authService;
|
private $authService;
|
||||||
|
private $inputReader;
|
||||||
|
|
||||||
public function __construct(\Szurubooru\Services\AuthService $authService)
|
public function __construct(
|
||||||
|
\Szurubooru\Services\AuthService $authService,
|
||||||
|
\Szurubooru\Helpers\InputReader $inputReader)
|
||||||
{
|
{
|
||||||
$this->authService = $authService;
|
$this->authService = $authService;
|
||||||
|
$this->inputReader = $inputReader;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function registerRoutes(\Szurubooru\Router $router)
|
public function registerRoutes(\Szurubooru\Router $router)
|
||||||
|
@ -18,16 +23,28 @@ final class AuthController extends AbstractController
|
||||||
|
|
||||||
public function login()
|
public function login()
|
||||||
{
|
{
|
||||||
$input = new \Szurubooru\Helpers\InputReader();
|
if (isset($this->inputReader->userName) and isset($this->inputReader->password))
|
||||||
|
{
|
||||||
|
if (!$this->inputReader->userName)
|
||||||
|
throw new \DomainException('User name cannot be empty.');
|
||||||
|
else if (!$this->inputReader->password)
|
||||||
|
throw new \DomainException('Password cannot be empty.');
|
||||||
|
|
||||||
if ($input->userName and $input->password)
|
$this->authService->loginFromCredentials($this->inputReader->userName, $this->inputReader->password);
|
||||||
$this->authService->loginFromCredentials($input->userName, $input->password);
|
}
|
||||||
elseif ($input->token)
|
elseif (isset($this->inputReader->token))
|
||||||
$this->authService->loginFromToken($input->token);
|
{
|
||||||
|
if (!$this->inputReader->token)
|
||||||
|
throw new \DomainException('Authentication token cannot be empty.');
|
||||||
|
$this->authService->loginFromToken($this->inputReader->token);
|
||||||
|
}
|
||||||
else
|
else
|
||||||
throw new \Szurubooru\MissingArgumentException();
|
{
|
||||||
|
$this->authService->loginAnonymous();
|
||||||
|
}
|
||||||
|
|
||||||
return [
|
return
|
||||||
|
[
|
||||||
'token' => new \Szurubooru\ViewProxies\Token($this->authService->getLoginToken()),
|
'token' => new \Szurubooru\ViewProxies\Token($this->authService->getLoginToken()),
|
||||||
'user' => new \Szurubooru\ViewProxies\User($this->authService->getLoggedInUser()),
|
'user' => new \Szurubooru\ViewProxies\User($this->authService->getLoggedInUser()),
|
||||||
];
|
];
|
||||||
|
|
|
@ -3,6 +3,13 @@ namespace Szurubooru\Entities;
|
||||||
|
|
||||||
final class User extends Entity
|
final class User extends Entity
|
||||||
{
|
{
|
||||||
|
const ACCESS_RANK_NOBODY = 0;
|
||||||
|
const ACCESS_RANK_ANONYMOUS = 1;
|
||||||
|
const ACCESS_RANK_REGULAR_USER = 2;
|
||||||
|
const ACCESS_RANK_POWER_USER = 3;
|
||||||
|
const ACCESS_RANK_MODERATOR = 4;
|
||||||
|
const ACCESS_RANK_ADMINISTRATOR = 5;
|
||||||
|
|
||||||
public $name;
|
public $name;
|
||||||
public $passwordHash;
|
public $passwordHash;
|
||||||
}
|
}
|
||||||
|
|
|
@ -34,7 +34,7 @@ final class AuthService
|
||||||
|
|
||||||
public function getLoginToken()
|
public function getLoginToken()
|
||||||
{
|
{
|
||||||
return $this->token;
|
return $this->loginToken;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function loginFromCredentials($userName, $password)
|
public function loginFromCredentials($userName, $password)
|
||||||
|
@ -66,6 +66,12 @@ final class AuthService
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function loginAnonymous()
|
||||||
|
{
|
||||||
|
$this->loginToken = null;
|
||||||
|
$this->loggedInUser = $this->userService->getAnonymousUser();
|
||||||
|
}
|
||||||
|
|
||||||
public function logout()
|
public function logout()
|
||||||
{
|
{
|
||||||
if (!$this->isLoggedIn())
|
if (!$this->isLoggedIn())
|
||||||
|
|
|
@ -24,4 +24,11 @@ class UserService
|
||||||
{
|
{
|
||||||
return $this->userDao->save($user);
|
return $this->userDao->save($user);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function getAnonymousUser()
|
||||||
|
{
|
||||||
|
$user = new \Szurubooru\Entities\User();
|
||||||
|
$user->name = 'Anonymous user';
|
||||||
|
$user->accessRank = \Szurubooru\Entities\User::ACCESS_RANK_ANONYMOUS;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue