classe_login.js 6.08 KB
/*
Title: Controle de usuário

i3GEO.login

Controla o sistema de login e área restrita dos usuários

Em i3GEO.login.dialogo estao as funcoes de abertura dos dialogos

Arquivo: i3geo/classesjs/classe_login.js

Licença:

GPL2

i3Geo Interface Integrada de Ferramentas de Geoprocessamento para Internet

Direitos Autorais Reservados (c) 2006 Ministério do Meio Ambiente Brasil
Desenvolvedor: Edmar Moretti edmar.moretti@gmail.com

Este programa é software livre; você pode redistribuí-lo
e/ou modificá-lo sob os termos da Licença Pública Geral
GNU conforme publicada pela Free Software Foundation;

Este programa é distribuído na expectativa de que seja útil,
porém, SEM NENHUMA GARANTIA; nem mesmo a garantia implícita
de COMERCIABILIDADE OU ADEQUAÇÃO A UMA FINALIDADE ESPECÍFICA.
Consulte a Licença Pública Geral do GNU para mais detalhes.
Você deve ter recebido uma cópia da Licença Pública Geral do
GNU junto com este programa; se não, escreva para a
Free Software Foundation, Inc., no endereço
59 Temple Street, Suite 330, Boston, MA 02111-1307 USA.
*/
if(typeof(i3GEO) === 'undefined'){
	var i3GEO = {};
}
if(typeof(i3GEOF) === 'undefined'){
	var i3GEOF = {};
}
i3GEO.login = {
	/*
		Variavel: divnomelogin

		Id do elemento div que recebera o nome do usuario apos o login para ser mostrado no mapa.
	 */
	divnomelogin: "i3GEONomeLogin",
	/*
	Variavel: recarrega

	Recarrega ou nao a pagina atual apos o login

	Tipo:
	{boolean}

	Default:
	{false}
	*/
	recarrega: false,
	/*
	Variavel: funcaoLoginOk

	Funcao que sera executada quando o login ocorrer de forma correta

	Tipo:
	{function}

	Default:
	{null}
	*/
	funcaoLoginOk: null,
	/*
	Variavel: funcaoLoginErro

	Funcao que sera executada quando o login ocorrer de forma errada

	Tipo:
	{function}

	Default:
	{null}
	*/
	funcaoLoginErro: null,
	/*
	Classe: i3GEO.login.dialogo

	Abre as telas de

	Exemplo:

	Para abrir a mensagem de dialogo de login, utilize

	i3GEO.login.dialogo.abreLogin();

	Para abrir a mensagem de dialogo de logout, utilize

	i3GEO.login.dialogo.abreLogout()
	*/

	dialogo: {
		abreLogin: function(locaplic){
			var js;
			if(!locaplic){
				locaplic = i3GEO.configura.locaplic;
			}
			//if(typeof(console) !== 'undefined'){console.info("i3GEO.login.dialogo.abrelogin()");}
			if(typeof(i3GEOF.loginusuario) === 'undefined'){
				js = locaplic+"/ferramentas/loginusuario/index.js";
				i3GEO.util.scriptTag(js,"i3GEOF.loginusuario.criaJanelaFlutuante()","i3GEOF.loginusuario_script()");
			}
			else
			{i3GEOF.loginusuario.criaJanelaFlutuante();}
		},
		abreLogout: function(){
			var r = confirm($trad("x26"));
			if (r == true){
				i3GEO.login.anulaCookie();
				i3GEO.janela.destroi("i3GEOF.loginusuario");
				if($i(i3GEO.login.divnomelogin)){
					$i(i3GEO.login.divnomelogin).innerHTML = "";
				}
				if(i3GEO.login.recarrega === true){
					document.location.reload();
				}
				if(i3GEO.parametros){
					i3GEO.parametros.editor = "nao";
					i3GEO.arvoreDeTemas.atualiza();
				}
			}
		}
	},
	anulaCookie: function(){
		i3GEO.util.insereCookie("i3geocodigologin","",0);
		i3GEO.util.insereCookie("i3geousuariologin","",0);
		i3GEO.util.insereCookie("i3geousuarionome","",0);
		i3GEO.util.insereCookie("i3GeoLogin","",0);
	},
	verificaCookieLogin: function(){
		var a = i3GEO.util.pegaCookie("i3geocodigologin"),
			b = i3GEO.util.pegaCookie("i3geousuarionome");
		if(a && b && a != "" && b != ""){
			return true;
		}
		else{
			return false;
		}
	},
	verificaOperacao: function(operacao,locaplic,funcaoOk,tipo,funcaoErro){
		var p = "",cp,temp,resultado = true;
		if(!i3GEO.login.verificaCookieLogin()){
			if(!funcaoErro)
			{alert("Login...!");}
			else{
				funcaoErro.call();
			}
			return false;
		}
		if(!locaplic){
			locaplic = i3GEO.configura.locaplic;
		}
		temp = function(retorno){
			if(retorno.data == "sim"){
				resultado = true;
			}
			else{
				resultado = false;
			}
			if(resultado === true){
				if(funcaoOk && funcaoOk != ""){
					funcaoOk.call();
				}
			}
			else{
				if($i(i3GEO.login.divnomelogin)){
					$i(i3GEO.login.divnomelogin).innerHTML = "";
					i3GEO.login.anulaCookie();
				}
				if(funcaoErro && funcaoErro != "" && resultado === false){
					funcaoErro.call();
				}
			}
			return resultado;
		};
		//verificacao rapida, busca apenas na sessao do usuario ja aberta
		if(tipo === "sessao"){
			p = locaplic+"/admin/php/login.php?funcao=validaoperacaosessao";
		}
		//verifica no banoc de dados, o que considera qualquer mudanca no banco feita apos o usuario ter aberto a sessao
		/**
		 * TODO implementar funcao validaoperacaobanco
		 */
		if(tipo === "banco"){
			p = locaplic+"/admin/php/login.php?funcao=validaoperacaobanco";
		}
		cp = new cpaint();
		cp.set_response_type("JSON");
		cp.set_transfer_mode("POST");
		cp.call(p,"login",temp,"&operacao="+operacao);
	},
	/**
	 * Adiciona os itens no objeto menu suspenso no processo de nicializacao do i3geo
	 *
	 * @param objeto com os parametros ja existentes no menu
	 * @return objeto com os parametros complementados
	 */
	adicionaMenuSuspenso: function(obj){
		obj.menu.push({nome:"Admin/Login",id:"i3GeoAdmin"});
		obj.submenus.i3GeoAdmin = [];
		obj.submenus.i3GeoAdmin.push(
			{id:"omenudataAdminu1",text: "Login", url: "javascript:i3GEO.login.dialogo.abreLogin()" },
			{id:"omenudataAdminu2",text: "Logout", url: "javascript:i3GEO.login.dialogo.abreLogout()" },
			{id:"omenudataAdmin1",text: $trad("x1"), url: "javascript:var w = window.open(i3GEO.configura.locaplic+'/admin/index.html')" },
			{id:"omenudataAdmin2",text: $trad("g1a"), url: "javascript:var w = window.open(i3GEO.configura.locaplic+'/admin/html/arvore.html')" },
			{id:"omenudataAdmin3",text: $trad("x10"), url: "javascript:i3GEO.arvoreDeTemas.abrejanelaIframe('900','700','"+i3GEO.configura.locaplic+"/admin/html/menus.html\')"},
			{id:"omenudataAdmin4",text: $trad("t44"), url: "javascript:i3GEO.janela.tempoMsg($trad('x63'))"},
			{id:"omenudataAdmin5",text: $trad("x88"), url: "javascript:i3GEO.mapa.dialogo.preferencias()"}

		);
		return obj;
	}
};