From 4e09ee3eb255160c88a378375d69123a3e000497 Mon Sep 17 00:00:00 2001 From: Igor Scheller Date: Thu, 11 Oct 2018 01:26:34 +0200 Subject: Replaced more user related stuff (Contains some buggy stuff too...) --- src/Helpers/Authenticator.php | 51 +++++++++++++++++++++++++++++++++++++------ 1 file changed, 44 insertions(+), 7 deletions(-) (limited to 'src/Helpers') 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; } } -- cgit v1.2.3-54-g00ecf