summaryrefslogtreecommitdiff
path: root/src/Helpers/Authenticator.php
diff options
context:
space:
mode:
Diffstat (limited to 'src/Helpers/Authenticator.php')
-rw-r--r--src/Helpers/Authenticator.php56
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;
+ }
+}