]> git.mxchange.org Git - friendica.git/commitdiff
oauth: authorize view, wrong verifier.
authorFabio Comuni <fabrix.xm@gmail.com>
Wed, 2 Nov 2011 08:54:07 +0000 (09:54 +0100)
committerFabio Comuni <fabrix.xm@gmail.com>
Wed, 2 Nov 2011 08:54:07 +0000 (09:54 +0100)
include/oauth.php
mod/api.php
mod/settings.php
view/oauth_authorize.tpl [new file with mode: 0644]
view/oauth_authorize_done.tpl [new file with mode: 0644]
view/settings_oauth.tpl [new file with mode: 0644]

index 5061724915bea86e3b1f781ce83c0bd232522895..b8430920764ac801958032cc0479c2743fef3d1e 100644 (file)
@@ -5,7 +5,8 @@
  * 
  */
 
-define('TOKEN_DURATION', 300);
+define('REQUEST_TOKEN_DURATION', 300);
+define('ACCESS_TOKEN_DURATION', 31536000);
 
 require_once("library/OAuth1.php");
 require_once("library/oauth2-php/lib/OAuth2.inc");
@@ -62,7 +63,7 @@ class FKOAuthDataStore extends OAuthDataStore {
                                dbesc($sec),
                                dbesc($consumer->key),
                                'request',
-                               intval(TOKEN_DURATION));
+                               intval(REQUEST_TOKEN_DURATION));
                if (!$r) return null;
                return new OAuthToken($key,$sec);
   }
@@ -75,7 +76,11 @@ class FKOAuthDataStore extends OAuthDataStore {
     
     $ret=Null;
     
-    if (!is_null($token) && $token->expires > time()){
+    // get verifier for this user
+    $uverifier = get_pconfig(local_user(), "oauth", "verifier");
+    
+    
+    if (is_null($verifier) || ($verifier==$uverifier)){
                
                $key = $this->gen_token();
                $sec = $this->gen_token();
@@ -84,13 +89,22 @@ class FKOAuthDataStore extends OAuthDataStore {
                                dbesc($sec),
                                dbesc($consumer->$key),
                                'access',
-                               intval(TOKEN_DURATION));
+                               intval(ACCESS_TOKEN_DURATION));
                if ($r)
                        $ret = new OAuthToken($key,$sec);               
        }
                
                
-       q("DELETE FROM tokens WHERE id='%s'", $token->key);
+       //q("DELETE FROM tokens WHERE id='%s'", $token->key);
+       
+       
+       if (!is_null($ret)){
+               //del_pconfig(local_user(), "oauth", "verifier");
+               $apps = get_pconfig(local_user(), "oauth", "apps");
+               if ($apps===false) $apps=array();
+               $apps[] = $consumer->key;
+               //set_pconfig(local_user(), "oauth", "apps", $apps);
+       }
                
     return $ret;
     
index bc5de03401bfba391848b9447acaafae872270b7..5903caee60c7dfeac28ee5e20ab08437faf494cd 100644 (file)
@@ -52,18 +52,15 @@ function api_content(&$a) {
                        $app = oauth_get_client();
                        if (is_null($app)) return "Invalid request. Unknown token.";
                        $consumer = new OAuthConsumer($app['key'], $app['secret']);
-                       
-                       // Rev A change
-                       $request = OAuthRequest::from_request();
-                       $callback = $request->get_parameter('oauth_callback');
-                       $datastore = new FKOAuthDataStore();
-                       $new_token = $datastore->new_request_token($consumer, $callback);
+
+                       $verifier = md5($app['secret'].local_user());
+                       set_pconfig(local_user(), "oauth", "verifier", $verifier);
                        
                        $tpl = get_markup_template("oauth_authorize_done.tpl");
                        $o = replace_macros($tpl, array(
                                '$title' => t('Authorize application connection'),
                                '$info' => t('Return to your app and insert this Securty Code:'),
-                               '$code' => $new_token->key,
+                               '$code' => $verifier,
                        ));
                
                        return $o;
index da2b57cd57958e056946c7f373ee5b7bdc4e5a44..ca9b4bd5421be098ac0d7239b5bebd1a03cf09bb 100644 (file)
@@ -362,7 +362,6 @@ function settings_content(&$a) {
                $o .= replace_macros($tpl, array(
                        '$title'        => t('Connected Apps'),
                        '$tabs'         => $tabs,
-                       '$settings_addons' => $settings_addons
                ));
                return $o;
                
diff --git a/view/oauth_authorize.tpl b/view/oauth_authorize.tpl
new file mode 100644 (file)
index 0000000..6bcf980
--- /dev/null
@@ -0,0 +1,11 @@
+<h1>$title</h1>
+
+<div class='oauthapp'>
+       <img src='$app.icon'>
+       <h4>$app.name</h4>
+       <p>$app.client_id</p>
+</div>
+<h3>$authorize</h3>
+<form method="POST">
+<div class="submit"><input type="submit" name="oauth_yes" value="$yes" /></div>
+</form>
diff --git a/view/oauth_authorize_done.tpl b/view/oauth_authorize_done.tpl
new file mode 100644 (file)
index 0000000..51eaea2
--- /dev/null
@@ -0,0 +1,4 @@
+<h1>$title</h1>
+
+<p>$info</p>
+<code>$code</code>
diff --git a/view/settings_oauth.tpl b/view/settings_oauth.tpl
new file mode 100644 (file)
index 0000000..87fd6d1
--- /dev/null
@@ -0,0 +1,10 @@
+$tabs
+
+<h1>$title</h1>
+
+
+<form action="settings/addon" method="post" autocomplete="off">
+
+$settings_addons
+
+</form>