]> git.mxchange.org Git - quix0rs-gnu-social.git/commitdiff
Use OTP to set cookies from registration action
authorEvan Prodromou <evan@status.net>
Sun, 10 Jan 2010 00:23:41 +0000 (16:23 -0800)
committerEvan Prodromou <evan@status.net>
Sun, 10 Jan 2010 00:23:41 +0000 (16:23 -0800)
actions/register.php

index 57f8e7bdf0394f450ad1cabd79e7fc166cd67429..108d05f5a7e7137a8dcee3b60998ef31d4b46c37 100644 (file)
@@ -259,6 +259,16 @@ class RegisterAction extends Action
 
                 // Re-init language env in case it changed (not yet, but soon)
                 common_init_language();
+
+                if (common_config('ssl', 'sometimes') && // mixed environment
+                    common_config('site', 'server') != common_config('site', 'sslserver')) {
+                    $url = common_local_url('all',
+                                            array('nickname' =>
+                                                  $user->nickname));
+                    $this->redirectFromSSL($user, $url, $this->boolean('rememberme'));
+                    return;
+                }
+
                 $this->showSuccess();
             } else {
                 $this->showForm(_('Invalid username or password.'));
@@ -578,5 +588,32 @@ class RegisterAction extends Action
         $nav = new LoginGroupNav($this);
         $nav->show();
     }
+
+    function redirectFromSSL($user, $returnto, $rememberme)
+    {
+        try {
+            $login_token = Login_token::makeNew($user);
+        } catch (Exception $e) {
+            $this->serverError($e->getMessage());
+            return;
+        }
+
+        $params = array();
+
+        if (!empty($returnto)) {
+            $params['returnto'] = $returnto;
+        }
+
+        if (!empty($rememberme)) {
+            $params['rememberme'] = $rememberme;
+        }
+
+        $target = common_local_url('otp',
+                                   array('user_id' => $login_token->user_id,
+                                         'token' => $login_token->token),
+                                   $params);
+
+        common_redirect($target, 303);
+    }
 }