Add hrefs to API responses
[grauphel.git] / controller / oauthcontroller.php
index 1dfdec9..dfb02c5 100644 (file)
@@ -15,10 +15,10 @@ namespace OCA\Grauphel\Controller;
 
 use \OCP\AppFramework\Controller;
 use \OCP\AppFramework\Http;
-use \OCP\AppFramework\Http\JSONResponse;
 use \OCP\AppFramework\Http\RedirectResponse;
 use \OCP\AppFramework\Http\TemplateResponse;
 
+use \OCA\Grauphel\Lib\Client;
 use \OCA\Grauphel\Lib\Token;
 use \OCA\Grauphel\Lib\OAuth;
 use \OCA\Grauphel\Lib\Dependencies;
@@ -42,13 +42,13 @@ class OauthController extends Controller
 {
     protected $user;
 
-       /**
-        * constructor of the controller
+    /**
+     * constructor of the controller
      *
-        * @param string   $appName Name of the app
-        * @param IRequest $request Instance of the request
-        */
-       public function __construct($appName, \OCP\IRequest $request, $user)
+     * @param string   $appName Name of the app
+     * @param IRequest $request Instance of the request
+     */
+    public function __construct($appName, \OCP\IRequest $request, $user)
     {
         parent::__construct($appName, $request);
         $this->user = $user;
@@ -73,7 +73,7 @@ class OauthController extends Controller
         $urlGen = $this->deps->urlGen;
 
         try {
-            $provider = new \OAuthProvider();
+            $provider = OAuth::getProvider();
             $oauth->registerHandler($provider)
                 ->registerVerificationTokenHandler($provider);
             $provider->checkOAuthRequest(
@@ -88,6 +88,7 @@ class OauthController extends Controller
             $newToken->tokenKey = 'a' . bin2hex($provider->generateToken(8));
             $newToken->secret   = 's' . bin2hex($provider->generateToken(8));
             $newToken->user     = $token->user;
+            $newToken->client   = $token->client;
             $this->deps->tokens->store($newToken);
 
             return new FormResponse(
@@ -119,10 +120,20 @@ class OauthController extends Controller
             return $token;
         }
 
+        $clientTitle = 'unknown';
+        $clientAgent = '';
+        if (isset($_GET['client'])) {
+            $clientAgent = $_GET['client'];
+            $cl = new Client();
+            $clientTitle = $cl->getNiceName($clientAgent);
+        }
+
         $res = new TemplateResponse('grauphel', 'oauthAuthorize');
         $res->setParams(
             array(
                 'oauth_token' => $token->tokenKey,
+                'clientTitle' => $clientTitle,
+                'clientAgent' => $clientAgent,
                 'formaction'  => $this->deps->urlGen->linkToRoute(
                     'grauphel.oauth.confirm'
                 ),
@@ -167,14 +178,20 @@ class OauthController extends Controller
             return $res;
         }
 
+        $clientAgent = '';
+        if (isset($_POST['client'])) {
+            $clientAgent = $_POST['client'];
+        }
+
         //the user is logged in and authorized
-        $provider = new \OAuthProvider();
+        $provider = OAuth::getProvider();
 
         $newToken = new Token('verify');
         $newToken->tokenKey = $token->tokenKey;
         $newToken->secret   = $token->secret;
         $newToken->verifier = 'v' . bin2hex($provider->generateToken(8));
         $newToken->user     = $this->user->getUID();
+        $newToken->client   = $clientAgent;
 
         $this->deps->tokens->store($newToken);
 
@@ -231,7 +248,7 @@ class OauthController extends Controller
         $urlGen = $this->deps->urlGen;
 
         try {
-            $provider = new \OAuthProvider();
+            $provider = OAuth::getProvider();
             $oauth->registerHandler($provider);
             $provider->isRequestTokenEndpoint(true);
             $provider->checkOAuthRequest(
@@ -252,7 +269,7 @@ class OauthController extends Controller
                 array(
                     'oauth_token'              => $token->tokenKey,
                     'oauth_token_secret'       => $token->secret,
-                    'oauth_callback_confirmed' => 'TRUE'
+                    'oauth_callback_confirmed' => 'true'
                 )
             );
         } catch (OAuthException $e) {