<?php
	header('Access-Control-Allow-Origin: *');
	header("Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept");
	header('Access-Control-Allow-Methods: GET, POST, PUT, DELETE');
	session_start();
	$_SESSION['auth'] = FALSE;
	//header('Content-Type: application/json');
	include  '../include/dbconn.inc';
	if(!$dbconn=conectardb()){ //he afegit això per assignar la variable als prepare
		echo 'Error conexion.';
		exit();
	}
	
	if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
		$ip = $_SERVER['HTTP_CLIENT_IP'];
	}
	elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
		$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
	}
	else {
		$ip = $_SERVER['REMOTE_ADDR'];
	}
	
	$data = json_decode(file_get_contents("php://input"));
	if($data->action=='recoverpass'){
		$dlogname=$data->secname;
		$dtokencreate=$data->tokencreate;
		$_SESSION['auth'] = TRUE;
		$result = pg_prepare($dbconn,"query","SELECT * FROM usuario WHERE logname =$1 AND (token is null or token='' or tokencreate<now() at time zone 'UTC' - interval '300 seconds');");
		//$result = pg_prepare($dbconn,"query","SELECT * FROM usuario WHERE logname =$1 AND lockeddate is NULL AND (token='' or tokencreate<now() at time zone 'UTC' - interval '300 seconds');");
		//$result = pg_prepare($dbconn,"query","SELECT * FROM usuario WHERE logname =$1;");
		$result = pg_execute($dbconn,"query",array($dlogname));		
	
		if ($result) {
			$row = pg_fetch_assoc($result);
			if ($row) {
				$cadena=$ip.microtime().$dlogname;
				$keyid=hash('sha256', $cadena);
				echo json_encode(array(
				"iduser" => 99,
				"logname" => $dlogname,
				"connections" => -1,
				"level" => -1,
				"cliente"=> -1
				));
				$result = pg_prepare($dbconn,"queryt","UPDATE usuario set token=$2, tokencreate=$3 WHERE logname =$1;");
				$result = pg_execute($dbconn,"queryt",array($dlogname,$keyid,$dtokencreate));	
				$mensaje='<h1>ATENCION:</h1> <h3>Actualice su contraseña en el siguiente enlace:</h3><br><br><a href="https://webcheck.quinteam.com/recoverlogin.php?keyid='.$keyid.'">Actualizar clave</a>.<br><br>No responda a esta dirección de correo.';
				enviaMail("Actualizar contraseña",$mensaje,'Webcheck-Alcampo@newno.marketing',$dlogname,'','');
			}
			else{
				echo json_encode(array(
				"iduser" => -2,
				"logname" => $dlogname,
				"connections" => -1,
				"level" => -1,
				"cliente"=> -1
				));
			}
		}
		else{
			echo json_encode(array(
				"iduser" => -1,
				"logname" => $dlogname,
				"connections" => -1,
				"level" => -1,
				"cliente"=> -1
				));
		}
		//header("Location: http://192.168.1.69/logout.php");
	}
	
	if($data->action=='changepass'){
		$dlogname=$data->secname;
		$dtoken=$data->sectoken;
		$_SESSION['auth'] = TRUE;
		$result = pg_prepare($dbconn,"query","SELECT * FROM usuario WHERE logname =$1 AND token=$2;");
		$result = pg_execute($dbconn,"query",array($dlogname,$dtoken));		
	
		if ($result) {
			$row = pg_fetch_assoc($result);
			if ($row) {
				$dpass=$data->secpass;
				$validPass = preg_match('((?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[^A-Za-z0-9])(?=.{8,32}))|((?=.*[a-z])(?=.*[A-Z])(?=.*[^A-Za-z0-9])(?=.{8,32}))', $dpass);
				if ($validPass) {
					echo json_encode(array(
					"iduser" => -2,
					"logname" => $dlogname,
					"connections" => -1,
					"level" => -1,
					"cliente"=> -1
					));
				}
				else{
					$result = pg_prepare($dbconn,"queryp","UPDATE usuario set password=$2,token='', tokencreate=NULL , lockeddate=NULL, limite=5 WHERE logname =$1;");
					$result = pg_execute($dbconn,"queryp",array($dlogname,hash('sha256', $dpass)));	
					if ($result) {
						echo json_encode(array(
						"iduser" => 99,
						"logname" => $dlogname,
						"connections" => -1,
						"level" => -1,
						"cliente"=> -1
						));
						$mensaje='<h1>ATENCION:</h1> <h3>La contraseña se ha actualizado correctamente.</h3><br><br>Actualice su clave si no ha ejecutado usted la Recuperación de Contraseña.<br><br>No responda a esta dirección de correo.';
						enviaMail("Contraseña actualizada",$mensaje,'Webcheck-Alcampo@newno.marketing',$dlogname,'','');
					}
					else{
						echo json_encode(array(
						"iduser" => -1,
						"logname" => $dlogname,
						"connections" => -1,
						"level" => -1,
						"cliente"=> -1
						));
						$mensaje='<h1>ATENCION:</h1> <h3>La contraseña no se ha actualizado correctamente.</h3><br><br>Actualice su clave si no ha ejecutado usted la Recuperación de Contraseña.<br><br>No responda a esta dirección de correo.';
						enviaMail("Contraseña no actualizada",$mensaje,'Webcheck-Alcampo@newno.marketing',$dlogname,'','');
					}
				}
			}
			else{
					echo json_encode(array(
					"iduser" => -1,
					"logname" => $dlogname,
					"connections" => -1,
					"level" => -1,
					"cliente"=> -1
					));
					$mensaje='<h1>ATENCION:</h1> <h3>La contraseña no se ha actualizado correctamente.</h3><br><br>Actualice su clave si no ha ejecutado usted la Recuperación de Contraseña.<br><br>No responda a esta dirección de correo.';
					enviaMail("Contraseña no actualizada",$mensaje,'Webcheck-Alcampo@newno.marketing',$dlogname,'','');
				}
		}
		else{
			echo json_encode(array(
				"iduser" => -1,
				"logname" => $dlogname,
				"connections" => -1,
				"level" => -1,
				"cliente"=> -1
				));
				$mensaje='<h1>ATENCION:</h1> <h3>La contraseña no se ha actualizado correctamente.</h3><br><br>Actualice su clave si no ha ejecutado usted la Recuperación de Contraseña.<br><br>No responda a esta dirección de correo.';
				enviaMail("Contraseña no actualizada",$mensaje,'Webcheck-Alcampo@newno.marketing',$dlogname,'','');
		}
	}
	
	
	function enviaMail ($subject,$message,$from,$to,$cc,$bcc){
		//echo($bcc); 
		//echo('<hr>keyid: '); 
		//echo($message); 
		$headers .= 'MIME-Version: 1.0' . "\r\n";
		$headers .= 'Content-type: text/html; charset=utf-8' . "\r\n";
		$headers .= "From:" . $from. "\r\n";
		$headers .= "bcc:" . $bcc. "\r\n";
		mail($to,$subject,$message, $headers);
	}
?>