From 33f24a42b88ede5135ab2118077a25a6c479201b Mon Sep 17 00:00:00 2001
From: Marvin Thomas Rabe <m.rabe@echtzeitraum.de>
Date: Tue, 4 Oct 2011 19:27:57 +0200
Subject: [PATCH] redirect url fixed

---
 core/templates/login.php | 1 +
 index.php                | 2 +-
 lib/helper.php           | 2 +-
 lib/util.php             | 6 +++++-
 4 files changed, 8 insertions(+), 3 deletions(-)

diff --git a/core/templates/login.php b/core/templates/login.php
index aff0afac203..6c0a7a12227 100644
--- a/core/templates/login.php
+++ b/core/templates/login.php
@@ -1,5 +1,6 @@
 <form action="index.php" method="post">
 	<fieldset>
+		<?php if(!empty($_['redirect'])) { echo '<input type="hidden" name="redirect_url" value="'.$_['redirect'].'" />'; } ?>
 		<?php if($_['error']): ?>
 			<a href="./core/lostpassword/"><?php echo $l->t('Lost your password?'); ?></a>
 		<?php endif; ?>
diff --git a/index.php b/index.php
index fb8d1922dd4..d2d0700c577 100644
--- a/index.php
+++ b/index.php
@@ -90,5 +90,5 @@ else {
 		}
 	}
 
-	OC_Template::printGuestPage('', 'login', array('error' => $error ));
+	OC_Template::printGuestPage('', 'login', array('error' => $error, 'redirect' => isset($_REQUEST['redirect_url'])?$_REQUEST['redirect_url']:'' ));
 }
diff --git a/lib/helper.php b/lib/helper.php
index b6332b54aea..9c2b5fc33ce 100644
--- a/lib/helper.php
+++ b/lib/helper.php
@@ -61,7 +61,7 @@ class OC_Helper {
 		}
 
 		if($redirect_url)
-			return $urlLinkTo.'?redirect_url='.$redirect_url;
+			return $urlLinkTo.'?redirect_url='.urlencode($_SERVER["REQUEST_URI"]);
 		else
 			return $urlLinkTo;
 
diff --git a/lib/util.php b/lib/util.php
index 5d03c56f18e..f8748e868c1 100644
--- a/lib/util.php
+++ b/lib/util.php
@@ -321,7 +321,11 @@ class OC_Util {
 	* Redirect to the user default page
 	*/
 	public static function redirectToDefaultPage(){
-		header( 'Location: '.OC::$WEBROOT.'/'.OC_Appconfig::getValue('core', 'defaultpage', 'files/index.php'));
+		if(isset($_REQUEST['redirect_url'])) {
+			header( 'Location: '.$_REQUEST['redirect_url']);
+		} else {
+			header( 'Location: '.OC::$WEBROOT.'/'.OC_Appconfig::getValue('core', 'defaultpage', 'files/index.php'));
+		}
 		exit();
 	}
 }
-- 
GitLab