diff options
Diffstat (limited to 'src/Helpers/Authenticator.php')
-rw-r--r-- | src/Helpers/Authenticator.php | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/src/Helpers/Authenticator.php b/src/Helpers/Authenticator.php new file mode 100644 index 00000000..eee7b965 --- /dev/null +++ b/src/Helpers/Authenticator.php @@ -0,0 +1,56 @@ +<?php + +namespace Engelsystem\Helpers; + +use Engelsystem\Models\BaseModel; +use Engelsystem\Models\User\User; +use Engelsystem\Models\User\User as UserRepository; +use Symfony\Component\HttpFoundation\Session\Session; + +class Authenticator +{ + /** @var UserRepository */ + protected $user = null; + + /** @var Session */ + protected $session; + + /** @var BaseModel */ + protected $userRepository; + + /** + * @param Session $session + * @param UserRepository $userRepository + */ + public function __construct(Session $session, UserRepository $userRepository) + { + $this->session = $session; + $this->userRepository = $userRepository; + } + + /** + * @return User|null + */ + public function user() + { + if ($this->user) { + return $this->user; + } + + $userId = $this->session->get('uid'); + if (!$userId) { + return null; + } + + $user = $this + ->userRepository + ->find($userId); + if (!$user) { + return null; + } + + $this->user = $user; + + return $user; + } +} |