Merge pull request #182 from owncloud/fix-redirect

Make the redirect_url working again
This commit is contained in:
Bart Visscher 2012-12-07 03:09:19 -08:00
commit 1e062ea895
3 changed files with 12 additions and 8 deletions

View File

@ -1,7 +1,7 @@
<!--[if IE 8]><style>input[type="checkbox"]{padding:0;}</style><![endif]--> <!--[if IE 8]><style>input[type="checkbox"]{padding:0;}</style><![endif]-->
<form method="post"> <form method="post">
<fieldset> <fieldset>
<?php if(!empty($_['redirect'])) { echo '<input type="hidden" name="redirect_url" value="'.$_['redirect'].'" />'; } ?> <?php if(!empty($_['redirect_url'])) { echo '<input type="hidden" name="redirect_url" value="'.$_['redirect_url'].'" />'; } ?>
<ul> <ul>
<?php if(isset($_['invalidcookie']) && ($_['invalidcookie'])): ?> <?php if(isset($_['invalidcookie']) && ($_['invalidcookie'])): ?>
<li class="errors"> <li class="errors">

View File

@ -506,6 +506,12 @@ class OC{
require_once 'core/setup.php'; require_once 'core/setup.php';
exit(); exit();
} }
// Handle redirect URL for logged in users
if(isset($_REQUEST['redirect_url']) && OC_User::isLoggedIn()) {
$location = OC_Helper::makeURLAbsolute(urldecode($_REQUEST['redirect_url']));
header( 'Location: '.$location );
return;
}
// Handle WebDAV // Handle WebDAV
if($_SERVER['REQUEST_METHOD']=='PROPFIND') { if($_SERVER['REQUEST_METHOD']=='PROPFIND') {
header('location: '.OC_Helper::linkToRemote('webdav')); header('location: '.OC_Helper::linkToRemote('webdav'));
@ -670,7 +676,7 @@ class OC{
else { else {
OC_User::unsetMagicInCookie(); OC_User::unsetMagicInCookie();
} }
header( 'Location: '.$_SERVER['REQUEST_URI'] ); OC_Util::redirectToDefaultPage();
exit(); exit();
} }
return true; return true;

View File

@ -340,10 +340,8 @@ class OC_Util {
} }
if (isset($_REQUEST['redirect_url'])) { if (isset($_REQUEST['redirect_url'])) {
$redirect_url = OC_Util::sanitizeHTML($_REQUEST['redirect_url']); $redirect_url = OC_Util::sanitizeHTML($_REQUEST['redirect_url']);
} else { $parameters['redirect_url'] = urlencode($redirect_url);
$redirect_url = $_SERVER['REQUEST_URI']; }
}
$parameters['redirect_url'] = $redirect_url;
OC_Template::printGuestPage("", "login", $parameters); OC_Template::printGuestPage("", "login", $parameters);
} }
@ -439,8 +437,8 @@ class OC_Util {
* Redirect to the user default page * Redirect to the user default page
*/ */
public static function redirectToDefaultPage() { public static function redirectToDefaultPage() {
if(isset($_REQUEST['redirect_url']) && (substr($_REQUEST['redirect_url'], 0, strlen(OC::$WEBROOT)) == OC::$WEBROOT || $_REQUEST['redirect_url'][0] == '/')) { if(isset($_REQUEST['redirect_url'])) {
$location = $_REQUEST['redirect_url']; $location = OC_Helper::makeURLAbsolute(urldecode($_REQUEST['redirect_url']));
} }
else if (isset(OC::$REQUESTEDAPP) && !empty(OC::$REQUESTEDAPP)) { else if (isset(OC::$REQUESTEDAPP) && !empty(OC::$REQUESTEDAPP)) {
$location = OC_Helper::linkToAbsolute( OC::$REQUESTEDAPP, 'index.php' ); $location = OC_Helper::linkToAbsolute( OC::$REQUESTEDAPP, 'index.php' );