diff options
Diffstat (limited to 'src/Helpers')
-rw-r--r-- | src/Helpers/Authenticator.php | 51 |
1 files changed, 44 insertions, 7 deletions
diff --git a/src/Helpers/Authenticator.php b/src/Helpers/Authenticator.php index eee7b965..3061fbc1 100644 --- a/src/Helpers/Authenticator.php +++ b/src/Helpers/Authenticator.php @@ -2,33 +2,40 @@ namespace Engelsystem\Helpers; -use Engelsystem\Models\BaseModel; use Engelsystem\Models\User\User; use Engelsystem\Models\User\User as UserRepository; +use Psr\Http\Message\ServerRequestInterface; use Symfony\Component\HttpFoundation\Session\Session; class Authenticator { - /** @var UserRepository */ + /** @var User */ protected $user = null; + /** @var ServerRequestInterface */ + protected $request; + /** @var Session */ protected $session; - /** @var BaseModel */ + /** @var UserRepository */ protected $userRepository; /** - * @param Session $session - * @param UserRepository $userRepository + * @param ServerRequestInterface $request + * @param Session $session + * @param UserRepository $userRepository */ - public function __construct(Session $session, UserRepository $userRepository) + public function __construct(ServerRequestInterface $request, Session $session, UserRepository $userRepository) { + $this->request = $request; $this->session = $session; $this->userRepository = $userRepository; } /** + * Load the user from session + * * @return User|null */ public function user() @@ -51,6 +58,36 @@ class Authenticator $this->user = $user; - return $user; + return $this->user; + } + + /** + * Get the user by his api key + * + * @param string $parameter + * @return User|null + */ + public function apiUser($parameter = 'api_key') + { + if ($this->user) { + return $this->user; + } + + $params = $this->request->getQueryParams(); + if (!isset($params[$parameter])) { + return null; + } + + $user = $this + ->userRepository + ->whereApiKey($params[$parameter]) + ->first(); + if (!$user) { + return $this->user(); + } + + $this->user = $user; + + return $this->user; } } |