[Mapbender-commits] r5937 - in branches/3_dev: conf core/lib http/frames http/plugins

svn_mapbender at osgeo.org svn_mapbender at osgeo.org
Sun Apr 11 10:30:22 EDT 2010


Author: mh
Date: 2010-04-11 10:30:21 -0400 (Sun, 11 Apr 2010)
New Revision: 5937

Added:
   branches/3_dev/http/plugins/mb_loginForm.js
   branches/3_dev/http/plugins/mb_logout.js
Modified:
   branches/3_dev/conf/mapbender.conf-dist
   branches/3_dev/core/lib/class_Mapbender.php
   branches/3_dev/core/lib/class_Session.php
   branches/3_dev/http/frames/index.php
   branches/3_dev/http/plugins/mb_login.js
   branches/3_dev/http/plugins/mb_login_server.php
Log:
login via index.php

Modified: branches/3_dev/conf/mapbender.conf-dist
===================================================================
--- branches/3_dev/conf/mapbender.conf-dist	2010-04-11 14:29:09 UTC (rev 5936)
+++ branches/3_dev/conf/mapbender.conf-dist	2010-04-11 14:30:21 UTC (rev 5937)
@@ -49,7 +49,7 @@
 # URL to login
 # --------------------------------------------
 
-define("LOGIN", "http://localhost/mapbender/frames/login.php");
+define("LOGIN", "http://localhost/mapbender/frames/index.php");
 define("MAXLOGIN", 3);
 $login = LOGIN;
 

Modified: branches/3_dev/core/lib/class_Mapbender.php
===================================================================
--- branches/3_dev/core/lib/class_Mapbender.php	2010-04-11 14:29:09 UTC (rev 5936)
+++ branches/3_dev/core/lib/class_Mapbender.php	2010-04-11 14:30:21 UTC (rev 5937)
@@ -51,6 +51,8 @@
 			),
 			"locale" => Mapbender::session()->get("mb_locale"),
 			"languageId" => Mapbender::session()->get("mb_lang"),
+			"publicUser" => PUBLIC_USER,
+			"login" => LOGIN,
 			"log" => array(
 				"js" => LOG_JS,
 				"level" => LOG_LEVEL,

Modified: branches/3_dev/core/lib/class_Session.php
===================================================================
--- branches/3_dev/core/lib/class_Session.php	2010-04-11 14:29:09 UTC (rev 5936)
+++ branches/3_dev/core/lib/class_Session.php	2010-04-11 14:30:21 UTC (rev 5937)
@@ -126,6 +126,7 @@
 		}
 		if (session_id() !== "") {
 			session_destroy();
+			$_SESSION = array();
 		}
 	 } 	
  }

Modified: branches/3_dev/http/frames/index.php
===================================================================
--- branches/3_dev/http/frames/index.php	2010-04-11 14:29:09 UTC (rev 5936)
+++ branches/3_dev/http/frames/index.php	2010-04-11 14:30:21 UTC (rev 5937)
@@ -18,52 +18,62 @@
 		if (Mapbender::session()->get("mb_user_gui")) {
 			// open current application
 			$gui_id = Mapbender::session()->get("mb_user_gui");
+			$firephp->log("No credentials, user and application already set.");
 		}
+		$user = new User(Mapbender::session()->get("mb_user_id"));
 	}
 	else {
+		$firephp->log("No credentials, user not set.");
 		// open default login application as public user
 		Mapbender::session()->kill();
-		session_start();
 	}
 }
 else {
+	$firephp->log("Credentials set.");
 	Mapbender::session()->kill();
-	session_start();
   	$user = User::byName($name);
   	if (!is_null($user) && !$user->loginCountExceeded()) {
-		$user = User::getByNameAndPassword($name, $password);
-		if (!is_null($user)) {
-  			$userLoginFailed = User::byName($name);
+		$firephp->log("User found.");
+  		$user = User::getByNameAndPassword($name, $password);
+		if (is_null($user)) {
+			$firephp->log("Could not log in.");
+			$userLoginFailed = User::byName($name);
   			if (!is_null($userLoginFailed)) {
+				$firephp->log("Increment login count.");
   				$userLoginFailed->incrementLoginCount();
   			}
 		}
 		else {
-  			// session conf
-  			include(dirname(__FILE__)."/../../conf/session.conf");
-  			
-  			if (Mapbender::session()->get("mb_user_id")) {
-				if ($user->loginCount <= MAXLOGIN) {
-					$user->resetLoginCount();
-				}
-  		  		if ($_GET["mb_user_myGui"] && in_array($_GET["mb_user_myGui"], $user->getApplicationsByPermission())) {
-	  				// open application as user
-					$gui_id = $_GET["mb_user_myGui"];			
-  		  		}
-  			}
-  			else {
-  				$user->incrementLoginCount();
-  			}
+			$firephp->log("Logged in.");
+			Mapbender::session()->set("mb_user_id", $user->id);
+			if ($user->loginCount <= MAXLOGIN) {
+				$firephp->log("Reset login count.");
+				$user->resetLoginCount();
+			}
+	  		if ($_GET["mb_user_myGui"] && in_array($_GET["mb_user_myGui"], $user->getApplicationsByPermission())) {
+				$firephp->log("Application " . $_GET["mb_user_myGui"] . " requested.");
+	  			// open application as user
+				$gui_id = $_GET["mb_user_myGui"];			
+	  		}
   		}
   	}
 }
+
+session_start();
 if (!isset($user) || is_null($user)) {
+	
 	$user = User::byName(PUBLIC_USER);
 	Mapbender::session()->set("mb_user_id", $user->id);
+	$firephp->log("Using public user: " . $user->id);
+	$password = "";
 }
+$name = $user->name;
 if (!isset($gui_id) || $gui_id === "") {
 	$gui_id = DEFAULT_APPLICATION;
+	$firephp->log("Using default application: " . $gui_id);
 }
+$firephp->log($user);
+include dirname(__FILE__)."/../../conf/session.conf";
 
 Mapbender::session()->set("mb_user_gui", $gui_id);
 Mapbender::session()->set("mb_user_guis", $user->getApplicationsByPermission());

Modified: branches/3_dev/http/plugins/mb_login.js
===================================================================
--- branches/3_dev/http/plugins/mb_login.js	2010-04-11 14:29:09 UTC (rev 5936)
+++ branches/3_dev/http/plugins/mb_login.js	2010-04-11 14:30:21 UTC (rev 5937)
@@ -1,44 +1,36 @@
-(function ($) {
-	$.fn.login = function () {
-		return this.each(function () {
-			//alert(this.id);
-			if ($(this).is('div')) {
-				$(this).load("./plugins/mb_login_html.php");
-			}
-			else {
-				var $loginDiv = $("<div title='Login'/>").hide().load("./plugins/mb_login_html.php");
-				$(this).append($loginDiv).bind("click", function () {
-					$loginDiv.dialog({
-						buttons: {
-							"Login": function () {
-								var name = $("form", $loginDiv).get(0).name.value;
-								var password = $("form", $loginDiv).get(0).password.value;
-								var req = new Mapbender.Ajax.Request({
-									url: "./plugins/mb_login_server.php",
-									method: "login",
-									parameters: {
-										name: name,
-										password: password
-									},
-									callback: function (obj, result, message) {
-										if (!result) {
-											alert(message);		
-											return;
-										}
-										alert(message);
-									}
-								});
-								req.send();
-								return false;
-							}
-						},
-						modal: true,
-						resizable: false,
-						draggable: false,
-						width: 400
-					});
-				});
-			}
-		});
+var $login = $(this);
+
+var req = new Mapbender.Ajax.Request({
+	url: "../plugins/mb_login_server.php",
+	method: "userInformation",
+	parameters: {
+	},
+	callback: function (obj, result, message) {
+		var html = "";
+		if (!result || obj.name === Mapbender.publicUser) {
+			$login.mapbender(function () {
+				this.loggedOut();
+			});
+		}
+		else {
+			$login.mapbender(function () {
+				this.loggedIn(obj.name);
+			});
+		}
+	}
+});
+req.send();
+
+var LoginApi = function () {
+	this.loggedIn = function (name) {
+		html = "Logged in as " + name + ". <a href='#'>logout</a>";
+		$login.html(html);
+		var $a = $("a", $login).logout();
 	};
-})(jQuery);
\ No newline at end of file
+	this.loggedOut = function () {
+		html = "<a href='#'>login</a>";
+		$login.html(html);
+		$("a", $login).login();
+	};
+};
+$login.mapbender(new LoginApi());

Added: branches/3_dev/http/plugins/mb_loginForm.js
===================================================================
--- branches/3_dev/http/plugins/mb_loginForm.js	                        (rev 0)
+++ branches/3_dev/http/plugins/mb_loginForm.js	2010-04-11 14:30:21 UTC (rev 5937)
@@ -0,0 +1,46 @@
+(function ($) {
+	$.fn.login = function () {
+		return this.each(function () {
+			//alert(this.id);
+			if ($(this).is('div')) {
+				$(this).load("../plugins/mb_login_html.php");
+			}
+			else {
+				var $loginDiv = $("<div title='Login'/>").hide().load("../plugins/mb_login_html.php");
+				$(this).append($loginDiv).bind("click", function () {
+					$loginDiv.dialog({
+						buttons: {
+							"Login": function () {
+								var name = $("form", $loginDiv).get(0).name.value;
+								var password = $("form", $loginDiv).get(0).password.value;
+								var req = new Mapbender.Ajax.Request({
+									url: "../plugins/mb_login_server.php",
+									method: "login",
+									parameters: {
+										name: name,
+										password: password
+									},
+									callback: function (obj, result, message) {
+										if (!result) {
+											$("#mb_login").loggedOut();
+											return;
+										}
+										$loginDiv.dialog("destroy");
+										window.location.href = Mapbender.login + "?name=" + name + "&password=" + password;
+
+									}
+								});
+								req.send();
+								return false;
+							}
+						},
+						modal: true,
+						resizable: false,
+						draggable: false,
+						width: 400
+					});
+				});
+			}
+		});
+	};
+})(jQuery);
\ No newline at end of file

Modified: branches/3_dev/http/plugins/mb_login_server.php
===================================================================
--- branches/3_dev/http/plugins/mb_login_server.php	2010-04-11 14:29:09 UTC (rev 5936)
+++ branches/3_dev/http/plugins/mb_login_server.php	2010-04-11 14:30:21 UTC (rev 5937)
@@ -35,15 +35,6 @@
 	return null;
 }
 
-function setSession() {
-	session_start();
-	session_write_close();
-}
-
-function killSession() {
-	Mapbender::session()->kill();
-}
-
 $ajaxResponse = new AjaxResponse($_POST, false);
 
 switch ($ajaxResponse->getMethod()) {
@@ -65,24 +56,10 @@
   		$ajaxResponse->setMessage(_mb("Permission denied. Login failed %d times. Your account has been deactivated. Please contact your administrator!", MAXLOGIN)); 
   		break; 		
   	}
-  	
-	$row = auth_user($name, $password);
-	
-	// if given user data is found in database, set session data (db_fetch_array returns false if no row is found)
-	if($row){
-		setSession();
-		include dirname(__FILE__)."/../../conf/session.conf";
-	}	
-
-	if (Mapbender::session()->get("mb_user_id")) {
-		if ($row["mb_user_login_count"] <= MAXLOGIN) {
-			$user->resetLoginCount();
-			$applicationArray = $user->getApplicationsByPermission();
-
-			Mapbender::session()->set("mb_user_guis", $applicationArray);
-//			Mapbender::session()->set("mb_login", $login);
-		}
-  		$ajaxResponse->setSuccess(true);
+  	$user = User::getByNameAndPassword($name, $password);
+	if (!is_null($user)){
+		Mapbender::session()->kill();
+		$ajaxResponse->setSuccess(true);
   		$ajaxResponse->setMessage(_mb("Login success."));
   		break;
 	}
@@ -90,10 +67,27 @@
   	$ajaxResponse->setSuccess(false);
   	$ajaxResponse->setMessage(_mb("Login failed."));
 	break;
+	case "userInformation" :
+		if (Mapbender::session()->get("mb_user_id")) {
+			$resultObj = array(
+				"name" => Mapbender::session()->get("mb_user_name")
+			);
+			$ajaxResponse->setSuccess(true);
+			$ajaxResponse->setResult($resultObj);
+			break;			
+		}
+		$ajaxResponse->setSuccess(false);
+		break;
+	case "logout" :
+		Mapbender::session()->kill();
+		$ajaxResponse->setSuccess(true);
+		break;		
   default: 
     $ajaxResponse->setSuccess(false);
     $ajaxResponse->setMessage(_mb("An unknown error occured."));
     break;
 }
+$firephp->log($_SESSION);
+$firephp->log(session_id());
 $ajaxResponse->send();
 ?>
\ No newline at end of file

Added: branches/3_dev/http/plugins/mb_logout.js
===================================================================
--- branches/3_dev/http/plugins/mb_logout.js	                        (rev 0)
+++ branches/3_dev/http/plugins/mb_logout.js	2010-04-11 14:30:21 UTC (rev 5937)
@@ -0,0 +1,22 @@
+(function ($) {
+	$.fn.logout = function () {
+		return this.each(function () {
+			$(this).bind("click", function () {
+				var req = new Mapbender.Ajax.Request({
+					url: "../plugins/mb_login_server.php",
+					method: "logout",
+					parameters: {
+					},
+					callback: function (obj, result, message) {
+						if (!result) {
+							return;
+						}
+						window.location.href = Mapbender.login;
+					}
+				});
+				req.send();
+				return false;
+			});
+		});
+	};
+})(jQuery);
\ No newline at end of file



More information about the Mapbender_commits mailing list