diff options
author | Igor Scheller <igor.scheller@igorshp.de> | 2018-10-11 01:26:34 +0200 |
---|---|---|
committer | msquare <msquare@notrademark.de> | 2018-10-31 13:43:23 +0100 |
commit | 4e09ee3eb255160c88a378375d69123a3e000497 (patch) | |
tree | e4a03ff40c939473cc1278f8286675cfa31e4556 /src/Helpers/Authenticator.php | |
parent | 7c6afc2bfe3263b91ecabf5530da57fe1162ea0b (diff) |
Replaced more user related stuff
(Contains some buggy stuff too...)
Diffstat (limited to 'src/Helpers/Authenticator.php')
-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; } } |