web/common.php
changeset 1001 df016fc8bbdb
parent 994 053de9a4e738
child 1003 366c873e2e29
--- a/web/common.php	Mon Nov 25 22:28:08 2013 +0100
+++ b/web/common.php	Tue Nov 26 01:18:39 2013 +0100
@@ -407,16 +407,28 @@
 
 $realm = 'Polemictweet restricted area';
 
+/*function authenticate($users, $translate) {
+	if (!isset($_SESSION['user_id']))
+	{
+		// Fetch current URL
+		$this_url = $_SERVER['REQUEST_URI'];
+	
+		// Redirect to login page passing current URL
+		header('Location: login.php?return_url=' . urlencode($this_url));
+		exit;
+	}
+}*/
+
 function authenticate($users, $translate) {
 
 	global $realm;
 	
-	if (empty($_SERVER['PHP_AUTH_DIGEST'])) {
+	
+	if (empty($_SERVER['PHP_AUTH_DIGEST']) || !isset($_SESSION['http_digest_nonce'])) {
 		$_SESSION['http_digest_nonce'] = uniqid();
 		header('HTTP/1.1 401 Unauthorized');
 		header('WWW-Authenticate: Digest realm="'.$realm.
 		'",qop="auth",nonce="'.$_SESSION['http_digest_nonce'].'",opaque="'.md5($realm).'"');
-
 		return array('error' => $translate->_('This area is restricted, please authenticate'));
 	}
 
@@ -425,6 +437,8 @@
 	if (!($data = http_digest_parse($_SERVER['PHP_AUTH_DIGEST'])) ||
 		!isset($users[$data['username']])) {
 		$_SERVER['PHP_AUTH_DIGEST'] = '';
+		unset($_SESSION['auth']);
+		unset($_SESSION['http_digest_nonce']);
 		return array('error' => $translate->_('Wrong Credentials!'));
 	}
 
@@ -436,20 +450,21 @@
 
 	if ($data['response'] != $valid_response) {
 		$_SERVER['PHP_AUTH_DIGEST'] = '';
+		unset($_SESSION['http_digest_nonce']);
+		unset($_SESSION['auth']);
 		return array('error' => $translate->_('Wrong Credentials!'));
 	}
 
 	// ok, valid username & password
-	$_SESSION['auth'] = $data;
+	$_SESSION['auth'] = $data['username'];
 	return $data;
 }
 
 function logout() {
 	global $realm;
 	
-	$_SESSION['auth'] = null;
-	header('HTTP/1.1 401 Unauthorized');
-	header('WWW-Authenticate: Digest realm="'.$realm.'",qop="auth",nonce="'.$_SESSION['http_digest_nonce'].'",opaque="'.md5($realm).'"');
+	unset($_SESSION['auth']);
+	unset($_SESSION['http_digest_nonce']);
 }