diff options
author | ramon <ramongomez@us.es> | 2012-11-06 12:56:20 +0000 |
---|---|---|
committer | ramon <ramongomez@us.es> | 2012-11-06 12:56:20 +0000 |
commit | df440ce7a78ba6bbe51008980d39c105147d2f56 (patch) | |
tree | aae2557ef7fb8366a5af94cf1959f7a87abef3bd /admin/WebConsole/validacion | |
parent | e79394ebd9a818eaee87169576c821451ff81206 (diff) |
Versión 1.0.5, #453: Integrar código del ticket:453, autenticación para acceso a clientes.
git-svn-id: https://opengnsys.es/svn/branches/version1.0@3397 a21b9725-9963-47de-94b9-378ad31fedc9
Diffstat (limited to 'admin/WebConsole/validacion')
-rw-r--r-- | admin/WebConsole/validacion/access_controller.php | 93 | ||||
-rw-r--r-- | admin/WebConsole/validacion/functions.php | 175 | ||||
-rw-r--r-- | admin/WebConsole/validacion/html/close.php | 5 | ||||
-rw-r--r-- | admin/WebConsole/validacion/html/images/opengnsys.png | bin | 0 -> 7003 bytes | |||
-rw-r--r-- | admin/WebConsole/validacion/html/login_prueba.php | 102 | ||||
-rw-r--r-- | admin/WebConsole/validacion/html/validacion_ldap.php | 75 | ||||
-rw-r--r-- | admin/WebConsole/validacion/html/validacion_prueba.php | 24 | ||||
-rw-r--r-- | admin/WebConsole/validacion/html/validacion_template.php | 20 |
8 files changed, 494 insertions, 0 deletions
diff --git a/admin/WebConsole/validacion/access_controller.php b/admin/WebConsole/validacion/access_controller.php new file mode 100644 index 00000000..05e31875 --- /dev/null +++ b/admin/WebConsole/validacion/access_controller.php @@ -0,0 +1,93 @@ +<?php +/** Universidad de Huelva + Fichero para validacion de usuarios antes del menu + Es necesario crear la variable de sesion $validated y asignar true o false dependiendo del caso + +**/ +include_once("functions.php"); + + +$action=(isset($_POST["action"]))?$_POST["action"]:$action; + + + +if($action == "checkValidation"){ + $idordenador; + $nombreordenador; + $ip = TomaIP(); + $validacion; + $paginalogin; + $paginavalidacion; + + // Carga la configuracion del ordenador + $cmd=CreaComando($cadenaconexion); // Crea objeto comando + if (!$cmd) + Header('Location: '.$pagerror.'?herror=2'); // Error de conexión con servidor B.D. + + $resul=TomaPropiedades($cmd); + if (!$resul) + Header('Location: '.$pagerror.'?herror=3'); // Error de recuperación de datos. + // Registramos las variables en sesion + $_SESSION["validacion"] = $validacion; + $_SESSION["paginalogin"] = $paginalogin; + $_SESSION["paginavalidacion"] = $paginavalidacion; +} +else{ + // Cogemos las variables de sesion + $validacion = $_SESSION["validacion"]; + $paginalogin = $_SESSION["paginalogin"]; + $paginavalidacion = $_SESSION["paginavalidacion"]; + +} + + +/**/ +// Solo se usa si se requiere validacion +if($_SESSION["validacion"] == true && isset($paginavalidacion) && $paginavalidacion != "") + include_once($paginavalidacion); + + +switch($action){ + case "checkValidation": + // Comprobamos si es necesaria la validacion + if($validacion == 1){ + $action="Login"; + // Comprobamos si es necesaria la validacion, y llamamos a synchronize + // La funcion synchronize se usa por si hace falta sincronizar alguna base de datos externa a opengnsys + // Es obligatoria en el fichero de validacion, pero puede no hacer nada + synchronize($validacion); + } + else{ + $action="default"; + } + include("access_controller.php"); + + break; + case "Login": + include($paginalogin); + break; + case "validate": + if(!isset($_SESSION)){ + session_start(); + } + // en la pagina "paginavalidacion" debe existir la funcion validate($_POST) forzosamente + $_SESSION["validated"]=validate($_POST); + if($_SESSION["validated"] == true){ + include("../varios/menucliente.php"); + } + else{ + $_error="Usuario no válido"; + include($paginalogin); + } + break; + default: + if(!isset($_SESSION)){ + session_start(); + } + $_SESSION["validated"]=true; + include("menucliente.php"); +} +/**/ + +?> + diff --git a/admin/WebConsole/validacion/functions.php b/admin/WebConsole/validacion/functions.php new file mode 100644 index 00000000..c605c9eb --- /dev/null +++ b/admin/WebConsole/validacion/functions.php @@ -0,0 +1,175 @@ +<?php +include_once("../includes/ctrlacc.php"); +include_once("../clases/AdoPhp.php"); +include_once("../includes/TomaDato.php"); +include_once("../includes/CreaComando.php"); +include_once("../idiomas/php/".$idioma."/menucliente_".$idioma.".php"); +//___________________________________________________________________________________________________ +// +// Redupera la ip del cliente web +//___________________________________________________________________________________________________ +function TomaIP(){ + // Se asegura que la pagina se solicita desde la IP que viene + global $HTTP_SERVER_VARS; + if ($HTTP_SERVER_VARS["HTTP_X_FORWARDED_FOR"] != "") + $ipcliente = $HTTP_SERVER_VARS["HTTP_X_FORWARDED_FOR"]; + else + $ipcliente = $HTTP_SERVER_VARS["REMOTE_ADDR"]; + if (empty ($ipcliente)) + $ipcliente = $_SERVER["REMOTE_ADDR"]; + return($ipcliente); +} +/**/ + +function TomaPropiedades($cmd){ + global $idordenador; + global $nombreordenador; + global $ip; + global $validacion; + global $paginalogin; + global $paginavalidacion; + + + $rs=new Recordset; + $cmd->texto="SELECT * FROM ordenadores WHERE ip='".$ip."'"; + $rs->Comando=&$cmd; + if (!$rs->Abrir()) return(false); // Error al abrir recordset + $rs->Primero(); + if (!$rs->EOF){ + $nombreordenador=$rs->campos["nombreordenador"]; + $ip=$rs->campos["ip"]; + $validacion=$rs->campos["validacion"]; + $paginalogin=$rs->campos["paginalogin"]; + $paginavalidacion=$rs->campos["paginavalidacion"]; + $rs->Cerrar(); + return(true); + } + else + return(false); + + return true; +} + +// +// Recupera Men +//___________________________________________________________________________________________________ +function RecuperaMenu($cmd,$iph){ + $rs=new Recordset; + $cmd->texto="SELECT menus.idcentro,menus.resolucion,menus.titulo,menus.idurlimg,menus.coorx,menus.coory, + menus.modalidad,menus.scoorx,menus.scoory,menus.smodalidad,menus.htmlmenupub,menus.htmlmenupri, + acciones_menus.tipoaccion,acciones_menus.idaccionmenu,acciones_menus.idtipoaccion, + acciones_menus.tipoitem,acciones_menus.descripitem,iconos.urlicono + FROM ordenadores + INNER JOIN menus ON menus.idmenu = ordenadores.idmenu + LEFT OUTER JOIN acciones_menus ON acciones_menus.idmenu = menus.idmenu + LEFT OUTER JOIN iconos ON iconos.idicono=acciones_menus.idurlimg + WHERE ordenadores.ip='".$iph."' ORDER by acciones_menus.orden"; + + $rs->Comando=&$cmd; + $resul=$rs->Abrir(); + if (!$rs->Abrir()) return(false); + if ($rs->EOF) return(false); + return($rs); +} +//___________________________________________________________________________________________________ +// +// Muestra el menu pblico +//___________________________________________________________________________________________________ +function GeneraMenu($rs,$tipo,$iph){ + global $ITEMS_PUBLICOS; + global $ITEMS_PRIVADOS; + global $UrlPaginaIconos; + + $titulo=$rs->campos["titulo"]; + $coorx=$rs->campos["coorx"]; + $coory=$rs->campos["coory"]; + $modalidad=$rs->campos["modalidad"]; + $scoorx=$rs->campos["scoorx"]; + $scoory=$rs->campos["scoory"]; + $smodalidad=$rs->campos["smodalidad"]; + $scoory=$rs->campos["scoory"]; + $resolucion=$rs->campos["resolucion"]; + $htmlmenupub=$rs->campos["htmlmenupub"]; + $htmlmenupri=$rs->campos["htmlmenupri"]; + + if($tipo==$ITEMS_PRIVADOS) + $mod=$smodalidad; + else + $mod=$modalidad; + $codeHTML=""; + + // Genera HTML de la p�ina en funci� de las propiedades del Men del clioente + //$codeHTML.='<DIV style="POSITION:absolute;TOP:'.$coory."px;LEFT:".$coorx.'px">'; + $codeHTML.='<P align=center>'; + $codeHTML.='<SPAN style="COLOR: #999999;FONT-FAMILY: Arial, Helvetica, sans-serif;FONT-SIZE: 20px;"><U>'.$titulo.'</U></SPAN>'; + $codeHTML.='</BR>'; + + $codeHTML.='<TABLE cellspacing=4 cellpadding=0 align="center" border=0 >'; + $codeHTML.='<TR>'; + $codeHTML.='<TD colspan="'.(($mod*2)+1).'" > </TD>'; + $codeHTML.='</TR>'; + $codeHTML.='<TR>'; + + $c=0; // Contador de columnas + + while (!$rs->EOF){ // Recorre acciones del menu + $tipoitem=$rs->campos["tipoitem"]; + if($tipoitem==$tipo){ + $tipoaccion=$rs->campos["tipoaccion"]; + $idtipoaccion=$rs->campos["idtipoaccion"]; + $idaccionmenu=$rs->campos["idaccionmenu"]; + $descripitem=$rs->campos["descripitem"]; + $urlicono=$rs->campos["urlicono"]; + if(empty($urlicono)) + $urlicono="defaultitem.gif"; + + $codeHTML.='<TD align=center> + <A href="ejecutaritem.php?iph='.$iph.'&idt='.$idaccionmenu.'"> + <IMG border=0 src="http://'.$UrlPaginaIconos.'/'.$urlicono.'" width=64></A></TD>'; + $codeHTML.='<TD style="font-family:Arial;color: #a71026;FONT-SIZE:14"> + <A style="text-decoration:none" href="ejecutaritem.php?iph='.$iph.'&idt='.$idaccionmenu.'"> + <span style="FONT-FAMILY: Verdana,Arial, Helvetica, sans-serif;FONT-SIZE: 12px;COLOR:#999999">'.$descripitem.'</span></A></TD>'; + if($mod>1){ + //separación de columnas + $codeHTML.='<TD width=10> </TD>'; + } + $c++; + if($c%$mod==0){ + $codeHTML.='</TR>'; + $codeHTML.='<TR>'; + } + } + $rs->Siguiente(); + } + $codeHTML.='</TR>'; + $rs->Cerrar(); + $codeHTML.='</TABLE>'; + $codeHTML.='</P>'; + $codeHTML.='<BR><BR>'; + $codeHTML.='<P align=center>'; + + switch($tipo){ + case $ITEMS_PUBLICOS: + $url.='acceso_operador.php'; + $lit="Administrar"; + break; + case $ITEMS_PRIVADOS: + $url.='menucliente.php'; + $lit="Volver"; + break; + } + $codeHTML.='<A style="text-decoration:none" href="'.$url.'?iph='.$iph.'">'; + $codeHTML.='<SPAN style=" + BORDER-BOTTOM: #999999 1px solid; + BORDER-LEFT: #999999 1px solid; + BORDER-RIGHT: #999999 1px solid; + BORDER-TOP: #999999 1px solid; + COLOR:#999999;FONT-FAMILY: Arial, Helvetica, sans-serif;FONT-SIZE:9px;"> '.$lit.' </SPAN></A>'; + + $codeHTML.='</P>'; + //$codeHTML.='</DIV>'; + return($codeHTML); +} + +?> + diff --git a/admin/WebConsole/validacion/html/close.php b/admin/WebConsole/validacion/html/close.php new file mode 100644 index 00000000..11a3c2e8 --- /dev/null +++ b/admin/WebConsole/validacion/html/close.php @@ -0,0 +1,5 @@ +<? +session_start(); +$_SESSION["validated"] = false; +?> + diff --git a/admin/WebConsole/validacion/html/images/opengnsys.png b/admin/WebConsole/validacion/html/images/opengnsys.png Binary files differnew file mode 100644 index 00000000..72e5df72 --- /dev/null +++ b/admin/WebConsole/validacion/html/images/opengnsys.png diff --git a/admin/WebConsole/validacion/html/login_prueba.php b/admin/WebConsole/validacion/html/login_prueba.php new file mode 100644 index 00000000..78b3c5ae --- /dev/null +++ b/admin/WebConsole/validacion/html/login_prueba.php @@ -0,0 +1,102 @@ +<? +$path_parts = pathinfo(__FILE__); +?> + +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> +<title>OpenGnSys :::: Inicio de equipo - Men de opciones</title> +<style> + body { + margin:0; + padding:0; + background-color:#FFFFFF; +} +#contenedor{ + position:absolute; + /*width:1270px; + height:1014px; + */ + margin:0; + padding:0; +/* + left: 50%; + top: 50%; + margin-top: -512px; + margin-left: -640px; +*/ + overflow:hidden; +} +.boton{ + margin:0 0 0 40px; +} +#form1{ + margin:120px 0 0 200px; +} +img { + vertical-align:middle; +} +a:link, a:visited { text-decoration: none; color:#ffffff; } +a:hover, a:active { color:#ffff00; } +/*#menu{ + width:800px; + height:600px; + +}*/ +h1{ + margin:120px auto 0px auto; + padding:0; + width:624px; + height:0px; + /*background:url(../menus/imagenes/titulo.png);*/ +} + +.tituloElementoLista { + padding:0 0 0 10px; +} +.descripcionElementoLista { + color:#acd6ff; + position:absolute; + left:360px; + padding-top:15px; +} +</style> + +</head> + +<body> + <div id="contenedor" style="margin: 10px 300px 15px 300px"> + <div align="center"> + <h1> + <div style="float:left"> + <img src="../validacion/html/images/opengnsys.png" /> + </div> + Validación de usuario</h1> + </div> + <div id="menu" style="margin: 0px auto 0px auto"> + <h1></h1> + <form id="form1" name="form1" method="post" action="../validacion/access_controller.php"> + <div> + usuario: + </div> + <div> + <input type="text" name="login" id="login"> + </div> + <br /> + <div> + password: + </div> + <div> + <input type="password" name="password" id="password"> + </div> + <br /> + <p><span class="boton"><input type="submit" name="access_button" id="access_button" value="Acceder" /></span></p> + <input name="action" type="hidden" value="validate" /> + </form> + <span class="descripcionElementoLista"><?php if(isset($_error)) echo $_error; ?></span> + </div> + </div> +</body> +</html> + diff --git a/admin/WebConsole/validacion/html/validacion_ldap.php b/admin/WebConsole/validacion/html/validacion_ldap.php new file mode 100644 index 00000000..992bca05 --- /dev/null +++ b/admin/WebConsole/validacion/html/validacion_ldap.php @@ -0,0 +1,75 @@ +<? + +function connect_to_ldap(){ + $server = "IP_SERVIDOR"; + $port = '389'; + $user = "USUARIO"; + $pass = "PASSWORD"; + + $result = null; + $ds=ldap_connect($server,$port); + if ($ds){ + if ($r=@ldap_bind($ds,$user,$pass)) + $result = $ds; + } + return $result; +} + +function validate_user($user,$password){ + if (($user=='') || ($password=='')){ + $result['validation'] = -1; + }else{ + if($ds = connect_to_ldap()){ + $dc = "dc=uhu, dc=es"; + $search = "uid=".$user; + $sr=@ldap_search($ds,$dc,$search); + $info = @ldap_get_entries($ds, $sr); + + if ($info["count"]==1){ + $thedata = $info[0]["dn"]; + if ($r=@ldap_bind($ds,$thedata,$password)){ + $result['validation'] = 1; + // A parte de la validacion, se podrían coger otros datos... + /* + $result['name'] = $info[0]["cn"][0]; + $result['dni'] = $info[0]["uhuuserdni"][0]; + $result['email'] = $info[0]["mail"][0]; + */ + } + else{ + $result['validation'] = -1; + } + } + else{ + $result['validation'] = -1; + } + } + ldap_close($ds); + } + return $result; +} + +/** + * Sincroniza una base de datos externa con la de opengnsys. + * No es necesaria su implementacion, puede dejarse en blanco + */ +function synchronize($validation){ + +} + + +/** + * Funcion de validacion para el cliente opengnsys. + * Recibe como parametros la variable $_POST proveniente de la pagina de login + * debe devolver true o false + */ +function validate($VARS){ + $result=false; + $validationInfo = validate_user($VARS["login"], $VARS["password"]); + if($validationInfo["validation"] == 1){ + $result = true; + } + return $result; +} + +?> diff --git a/admin/WebConsole/validacion/html/validacion_prueba.php b/admin/WebConsole/validacion/html/validacion_prueba.php new file mode 100644 index 00000000..35c6c033 --- /dev/null +++ b/admin/WebConsole/validacion/html/validacion_prueba.php @@ -0,0 +1,24 @@ +<? +/** + * Sincroniza una base de datos externa con la de opengnsys. + * No es necesaria su implementacion, puede dejarse en blanco + */ +function synchronize($validation){ + +} + + +/** + * Funcion de validacion para el cliente opengnsys. + * Recibe como parametros la variable $_POST proveniente de la pagina de login + * debe devolver true o false + */ +function validate($VARS){ + $result = false; + if($VARS["login"] == "usuprueba" && $VARS["password"] == "prueba"){ + $result = true; + } + return $result; +} + +?> diff --git a/admin/WebConsole/validacion/html/validacion_template.php b/admin/WebConsole/validacion/html/validacion_template.php new file mode 100644 index 00000000..77672a91 --- /dev/null +++ b/admin/WebConsole/validacion/html/validacion_template.php @@ -0,0 +1,20 @@ +<? +/** + * Sincroniza una base de datos externa con la de opengnsys. + * No es necesaria su implementacion, puede dejarse en blanco + */ +function synchronize($validation){ + +} + + +/** + * Funcion de validacion para el cliente opengnsys. + * Recibe como parametros la variable $_POST proveniente de la pagina de login + * debe devolver true o false + */ +function validate($VARS){ + return true; +} + +?> |