diff options
| author | George Halkiadakis <gchalkiadakis@sklavenitis.co.gr> | 2023-03-12 07:01:30 +0200 |
|---|---|---|
| committer | George Halkiadakis <gchalkiadakis@sklavenitis.co.gr> | 2023-03-12 07:01:30 +0200 |
| commit | 47cbb529f5723b246125ae083a193e11481b89ef (patch) | |
| tree | 31ab20b2fbf12bee1cd994c3d6fb822fa52622e3 /classes/authenticator/UserManager.php | |
| download | classroom-47cbb529f5723b246125ae083a193e11481b89ef.tar.gz classroom-47cbb529f5723b246125ae083a193e11481b89ef.tar.bz2 classroom-47cbb529f5723b246125ae083a193e11481b89ef.zip | |
initializing classroom structure using anom framework
Diffstat (limited to 'classes/authenticator/UserManager.php')
| -rw-r--r-- | classes/authenticator/UserManager.php | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/classes/authenticator/UserManager.php b/classes/authenticator/UserManager.php new file mode 100644 index 0000000..36f0d16 --- /dev/null +++ b/classes/authenticator/UserManager.php @@ -0,0 +1,69 @@ +<?php + +// namespace DevCoder\Authentication\Core; +// +// use DevCoder\Authentication\Token\UserToken; +// use DevCoder\Authentication\Token\UserTokenInterface; +// use DevCoder\Authentication\UserInterface; + +/** + * Class UserManager + * @package DevCoder\Authentication\Core + */ +class UserManager implements UserManagerInterface +{ + + use PasswordTrait; + + public function __construct() + { + if (session_status() === PHP_SESSION_NONE) { + session_start(); + } + } + + public function getUserToken(): ?UserTokenInterface + { + $userToken = null; + if ($this->hasUserToken()) { + $userToken = unserialize($_SESSION[UserTokenInterface::DEFAULT_PREFIX_KEY]); + } + + return $userToken; + } + + public function hasUserToken(): bool + { + $key = UserTokenInterface::DEFAULT_PREFIX_KEY; + return (array_key_exists($key, $_SESSION) && unserialize($_SESSION[$key]) !== false); + } + + public function isGranted(array $roles): bool + { + if (!is_null($userToken = $this->getUserToken())) { + return false; + } + + if ($userToken->getUser() instanceof UserInterface) { + return (!empty(array_intersect($roles, $userToken->getUser()->getRoles()))); + } + + return false; + } + + public function createUserToken(UserInterface $user): UserTokenInterface + { + $userToken = new UserToken($user); + $_SESSION[UserTokenInterface::DEFAULT_PREFIX_KEY] = $userToken->serialize(); + + return $userToken; + } + + public function logout(): void + { + if ($this->hasUserToken()) { + unset($_SESSION[UserTokenInterface::DEFAULT_PREFIX_KEY]); + } + } +} + |
