aboutsummaryrefslogtreecommitdiffstats
path: root/library/oauth2/src/OAuth2/GrantType/UserCredentials.php
diff options
context:
space:
mode:
authorMario Vavti <mario@mariovavti.com>2016-12-23 10:09:46 +0100
committerMario Vavti <mario@mariovavti.com>2016-12-23 10:09:46 +0100
commit3b9b03cf86979b28e7fa249133176bed84b0105c (patch)
tree336dc8b8b9627e7f4a93e5c35fe3e98555274616 /library/oauth2/src/OAuth2/GrantType/UserCredentials.php
parent2e5a993f880d619aedf3693927e7b3e164fbfcc0 (diff)
parentef39c1e94b5149a3019d417d08dc7c16c8aef9c1 (diff)
downloadvolse-hubzilla-3b9b03cf86979b28e7fa249133176bed84b0105c.tar.gz
volse-hubzilla-3b9b03cf86979b28e7fa249133176bed84b0105c.tar.bz2
volse-hubzilla-3b9b03cf86979b28e7fa249133176bed84b0105c.zip
Merge branch '2.0RC'
Diffstat (limited to 'library/oauth2/src/OAuth2/GrantType/UserCredentials.php')
-rw-r--r--library/oauth2/src/OAuth2/GrantType/UserCredentials.php83
1 files changed, 83 insertions, 0 deletions
diff --git a/library/oauth2/src/OAuth2/GrantType/UserCredentials.php b/library/oauth2/src/OAuth2/GrantType/UserCredentials.php
new file mode 100644
index 000000000..f165538ba
--- /dev/null
+++ b/library/oauth2/src/OAuth2/GrantType/UserCredentials.php
@@ -0,0 +1,83 @@
+<?php
+
+namespace OAuth2\GrantType;
+
+use OAuth2\Storage\UserCredentialsInterface;
+use OAuth2\ResponseType\AccessTokenInterface;
+use OAuth2\RequestInterface;
+use OAuth2\ResponseInterface;
+
+/**
+ *
+ * @author Brent Shaffer <bshafs at gmail dot com>
+ */
+class UserCredentials implements GrantTypeInterface
+{
+ private $userInfo;
+
+ protected $storage;
+
+ /**
+ * @param OAuth2\Storage\UserCredentialsInterface $storage REQUIRED Storage class for retrieving user credentials information
+ */
+ public function __construct(UserCredentialsInterface $storage)
+ {
+ $this->storage = $storage;
+ }
+
+ public function getQuerystringIdentifier()
+ {
+ return 'password';
+ }
+
+ public function validateRequest(RequestInterface $request, ResponseInterface $response)
+ {
+ if (!$request->request("password") || !$request->request("username")) {
+ $response->setError(400, 'invalid_request', 'Missing parameters: "username" and "password" required');
+
+ return null;
+ }
+
+ if (!$this->storage->checkUserCredentials($request->request("username"), $request->request("password"))) {
+ $response->setError(401, 'invalid_grant', 'Invalid username and password combination');
+
+ return null;
+ }
+
+ $userInfo = $this->storage->getUserDetails($request->request("username"));
+
+ if (empty($userInfo)) {
+ $response->setError(400, 'invalid_grant', 'Unable to retrieve user information');
+
+ return null;
+ }
+
+ if (!isset($userInfo['user_id'])) {
+ throw new \LogicException("you must set the user_id on the array returned by getUserDetails");
+ }
+
+ $this->userInfo = $userInfo;
+
+ return true;
+ }
+
+ public function getClientId()
+ {
+ return null;
+ }
+
+ public function getUserId()
+ {
+ return $this->userInfo['user_id'];
+ }
+
+ public function getScope()
+ {
+ return isset($this->userInfo['scope']) ? $this->userInfo['scope'] : null;
+ }
+
+ public function createAccessToken(AccessTokenInterface $accessToken, $client_id, $user_id, $scope)
+ {
+ return $accessToken->createAccessToken($client_id, $user_id, $scope);
+ }
+}