Merge remote-tracking branch 'origin/master'
[phorkie.git] / www / login.php
index fbd337dbd7edba95a63a3f8167c0a00771b57965..e141b65b4e8eeeff0bd667cd48d7a5a505cfb86b 100644 (file)
@@ -6,12 +6,18 @@ require_once 'www-header.php';
 if (isset($_REQUEST['logout'])) {
     unset($_SESSION);
     session_destroy();
-    header('Location: ' . Tools::fullUrl('/'));
+    header('Location: ' . Tools::fullUrl());
     exit();
 }
 
 if (!count($_GET) && !count($_POST)) {
-    render('login');
+    render(
+        'login',
+        array(
+            'openid' => isset($_COOKIE['lastopenid'])
+                ? $_COOKIE['lastopenid'] : 'http://'
+        )
+    );
     exit();
 }
 
@@ -28,8 +34,8 @@ if (isset($_POST['openid_url'])) {
     $openid_url = null;
 }
 
-$realm    = Tools::fullUrl('/');
-$returnTo = Tools::fullUrl('/login');
+$realm    = Tools::fullUrl();
+$returnTo = Tools::fullUrl('login');
 
 try {
     $o = new \OpenID_RelyingParty($returnTo, $realm, $openid_url);
@@ -150,11 +156,13 @@ $name = isset($openid['openid.ax.value.fullname'])
 $_SESSION['name'] = isset($name) ? $name : $_SERVER['REMOTE_ADDR'];
 $_SESSION['identity'] = $openid['openid.identity'];
 
+setcookie('lastopenid', $_SESSION['identity'], time() + 84600 * 60, '/login');
+
+$url = '';
 if (isset($_SESSION['REQUEST_URI'])) {
-    $redirect = Tools::fullUrl($_SESSION['REQUEST_URI']);
-} else {
-    $redirect = Tools::fullUrl('/');
+    $url = substr($_SESSION['REQUEST_URI'], 1);
 }
+$redirect = Tools::fullUrl($url);
 header('Location: ' . filter_var($redirect, FILTER_SANITIZE_URL));
 exit;
 ?>