Logging in remembers original URL

This commit is contained in:
Marcin Kurczewski 2013-10-30 23:24:27 +01:00
parent ad8f2a8038
commit fd99821bd7
2 changed files with 25 additions and 3 deletions

View file

@ -61,5 +61,7 @@ class Bootstrap
$this->context->viewName = 'error-exception'; $this->context->viewName = 'error-exception';
(new \Chibi\View())->renderFile($this->context->layoutName); (new \Chibi\View())->renderFile($this->context->layoutName);
} }
AuthController::observeWorkFinish();
} }
} }

View file

@ -1,6 +1,17 @@
<?php <?php
class AuthController class AuthController
{ {
private static function redirectAfterLog()
{
if (isset($_SESSION['login-redirect-url']))
{
\Chibi\UrlHelper::forward($_SESSION['login-redirect-url']);
unset($_SESSION['login-redirect-url']);
return;
}
\Chibi\UrlHelper::forward(\Chibi\UrlHelper::route('index', 'index'));
}
public static function tryLogin($name, $password) public static function tryLogin($name, $password)
{ {
$config = \Chibi\Registry::getConfig(); $config = \Chibi\Registry::getConfig();
@ -25,7 +36,6 @@ class AuthController
$context->user = $dbUser; $context->user = $dbUser;
self::doReLog(); self::doReLog();
\Chibi\UrlHelper::forward(\Chibi\UrlHelper::route('index', 'index'));
return $dbUser; return $dbUser;
} }
@ -51,7 +61,7 @@ class AuthController
//check if already logged in //check if already logged in
if ($this->context->loggedIn) if ($this->context->loggedIn)
{ {
\Chibi\UrlHelper::forward(\Chibi\UrlHelper::route('index', 'index')); self::redirectAfterLog();
return; return;
} }
@ -67,6 +77,7 @@ class AuthController
setcookie('auth', TextHelper::encrypt($token), time() + 365 * 24 * 3600, '/'); setcookie('auth', TextHelper::encrypt($token), time() + 365 * 24 * 3600, '/');
} }
$this->context->transport->success = true; $this->context->transport->success = true;
self::redirectAfterLog();
} }
} }
@ -107,7 +118,6 @@ class AuthController
} }
} }
$context->user = unserialize($_SESSION['user']); $context->user = unserialize($_SESSION['user']);
#throw new SimpleException($context->user->anonymous ? '1' : '0');
$context->loggedIn = $context->user->anonymous ? false : true; $context->loggedIn = $context->user->anonymous ? false : true;
if (!$context->loggedIn) if (!$context->loggedIn)
{ {
@ -128,4 +138,14 @@ class AuthController
$_SESSION['user'] = serialize($context->user); $_SESSION['user'] = serialize($context->user);
self::doLogIn(); self::doLogIn();
} }
public static function observeWorkFinish()
{
if (strpos(\Chibi\HeadersHelper::get('Content-Type'), 'text/html') === false)
return;
$context = \Chibi\Registry::getContext();
if ($context->route->simpleControllerName == 'auth')
return;
$_SESSION['login-redirect-url'] = $context->query;
}
} }