From b8f7532e5c7e8b8be3ab199fca3dadd0d22be4cd Mon Sep 17 00:00:00 2001 From: Frederic Guillot Date: Sat, 3 Dec 2016 15:43:36 -0500 Subject: Add personal API access token --- app/Auth/ApiAccessTokenAuth.php | 119 ++++++++++++++++++++++++++++++++++++++++ app/Auth/DatabaseAuth.php | 2 +- app/Auth/LdapAuth.php | 2 +- app/Auth/RememberMeAuth.php | 4 +- app/Auth/ReverseProxyAuth.php | 2 +- app/Auth/TotpAuth.php | 2 +- 6 files changed, 125 insertions(+), 6 deletions(-) create mode 100644 app/Auth/ApiAccessTokenAuth.php (limited to 'app/Auth') diff --git a/app/Auth/ApiAccessTokenAuth.php b/app/Auth/ApiAccessTokenAuth.php new file mode 100644 index 00000000..12ab21a7 --- /dev/null +++ b/app/Auth/ApiAccessTokenAuth.php @@ -0,0 +1,119 @@ +sessionStorage->scope) || $this->sessionStorage->scope !== 'API') { + $this->logger->debug(__METHOD__.': Authentication provider skipped because invalid scope'); + return false; + } + + $user = $this->db + ->table(UserModel::TABLE) + ->columns('id', 'password') + ->eq('username', $this->username) + ->eq('api_access_token', $this->password) + ->notNull('api_access_token') + ->eq('is_active', 1) + ->findOne(); + + if (! empty($user)) { + $this->userInfo = $user; + return true; + } + + return false; + } + + /** + * Get user object + * + * @access public + * @return \Kanboard\User\DatabaseUserProvider + */ + public function getUser() + { + if (empty($this->userInfo)) { + return null; + } + + return new DatabaseUserProvider($this->userInfo); + } + + /** + * Set username + * + * @access public + * @param string $username + */ + public function setUsername($username) + { + $this->username = $username; + } + + /** + * Set password + * + * @access public + * @param string $password + */ + public function setPassword($password) + { + $this->password = $password; + } +} diff --git a/app/Auth/DatabaseAuth.php b/app/Auth/DatabaseAuth.php index ecb42c17..84a1e019 100644 --- a/app/Auth/DatabaseAuth.php +++ b/app/Auth/DatabaseAuth.php @@ -11,7 +11,7 @@ use Kanboard\User\DatabaseUserProvider; /** * Database Authentication Provider * - * @package auth + * @package Kanboard\Auth * @author Frederic Guillot */ class DatabaseAuth extends Base implements PasswordAuthenticationProviderInterface, SessionCheckProviderInterface diff --git a/app/Auth/LdapAuth.php b/app/Auth/LdapAuth.php index a8dcfcb6..05ffbebf 100644 --- a/app/Auth/LdapAuth.php +++ b/app/Auth/LdapAuth.php @@ -12,7 +12,7 @@ use Kanboard\Core\Security\PasswordAuthenticationProviderInterface; /** * LDAP Authentication Provider * - * @package auth + * @package Kanboard\Auth * @author Frederic Guillot */ class LdapAuth extends Base implements PasswordAuthenticationProviderInterface diff --git a/app/Auth/RememberMeAuth.php b/app/Auth/RememberMeAuth.php index 5d0a8b2e..e0f4ceb6 100644 --- a/app/Auth/RememberMeAuth.php +++ b/app/Auth/RememberMeAuth.php @@ -7,9 +7,9 @@ use Kanboard\Core\Security\PreAuthenticationProviderInterface; use Kanboard\User\DatabaseUserProvider; /** - * Rember Me Cookie Authentication Provider + * RememberMe Cookie Authentication Provider * - * @package auth + * @package Kanboard\Auth * @author Frederic Guillot */ class RememberMeAuth extends Base implements PreAuthenticationProviderInterface diff --git a/app/Auth/ReverseProxyAuth.php b/app/Auth/ReverseProxyAuth.php index fdf936b1..02afc302 100644 --- a/app/Auth/ReverseProxyAuth.php +++ b/app/Auth/ReverseProxyAuth.php @@ -10,7 +10,7 @@ use Kanboard\User\ReverseProxyUserProvider; /** * Reverse-Proxy Authentication Provider * - * @package auth + * @package Kanboard\Auth * @author Frederic Guillot */ class ReverseProxyAuth extends Base implements PreAuthenticationProviderInterface, SessionCheckProviderInterface diff --git a/app/Auth/TotpAuth.php b/app/Auth/TotpAuth.php index 8e1ebe35..abfb2168 100644 --- a/app/Auth/TotpAuth.php +++ b/app/Auth/TotpAuth.php @@ -11,7 +11,7 @@ use Kanboard\Core\Security\PostAuthenticationProviderInterface; /** * TOTP Authentication Provider * - * @package auth + * @package Kanboard\Auth * @author Frederic Guillot */ class TotpAuth extends Base implements PostAuthenticationProviderInterface -- cgit v1.2.3