<?php
//-----------------------------------------------------------------------------------------------------------
// E-Lyco CAS Connector
//-----------------------------------------------------------------------------------------------------------
// Copyright (c) 2011 SIREC Pays de la Loire
//-----------------------------------------------------------------------------------------------------------
// This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License. 
// To view a copy of this license, visit http://c...content-available-to-author-only...s.org/licenses/by-nc-sa/3.0/ or send a letter to 
// Creative Commons, 171 Second Street, Suite 300, San Francisco, California, 94105, USA.
//-----------------------------------------------------------------------------------------------------------
// Authors: Alexandre GAUVRIT - gauvrit.alexandre@gmail.com
//-----------------------------------------------------------------------------------------------------------
//	Description : 	index.php - login page/redirection to CAS service
// 	Version 		:	0.2

require('../..//main/inc/global.inc.php');
require_once (api_get_path(LIBRARY_PATH).'events.lib.inc.php');
require_once('../..//main/auth/cas/authcas.php');
global $cas_auth_ver, $cas_auth_server, $cas_auth_port, $cas_auth_uri;

$debug = false;

phpCAS::client($cas_auth_ver,$cas_auth_server,$cas_auth_port,$cas_auth_uri);
phpCAS::setNoCasServerValidation();
																																														
if (!empty($_SESSION['_user']['user_id']))
{																																														// Connecte sur Dokeos
	$id_user_dokeos = trim($_SESSION['_user']['user_id']);
																																														// L'utilisateur existe-t-il dans la table de correspondance ?
	mysql_connect($_configuration['db_host'],$_configuration['db_user'],$_configuration['db_password']) or die(mysql_error());
	mysql_select_db("dokeos_main") or die(mysql_error());
	$result = mysql_query("SELECT id_user_cas FROM user_ent_corresp where id_user_dokeos ='$id_user_dokeos'") or die(mysql_error());  // Extraction de l'id CAS de la base 
	$row = mysql_fetch_array( $result );
	
	if(!empty($row['id_user_cas']))
	{																																													// La requete a retourné un resultat > l'utilisateur existe dans la table.																																													
		$id_user_cas = $row['id_user_cas'];
	}
	else
	{																																													// L'utilisateur n'existe pas >> est-il connecté a CAS ?
		if(phpCAS::checkAuthentication()){
			$id_user_cas = trim(phpCAS::getUser());																														// Connecté a Dokeos + CAS -> Insertion possible
		}else
		{
			phpCAS::forceAuthentication();																																	// Redirection sur le CAS pour connexion
		}
	}

	if(!empty($id_user_cas))
	{
																																														// Test si l'insertion est possible/nécéssaire -> Insertion d'une correspondance
		if(!insert_corresp($id_user_dokeos,$id_user_cas))
		{																																												// Insertion réussie / déjà connecté
			Display::display_header('', 'dokeos');
			echo "<div id=\"wrapper\">Vous etes maintenant connecte : <a href=\"../../index.php\">Retour acceuil</a></div>";
			echo '<div><p>Deconnexion : <a href="https://'.$cas_auth_server.'/logout">Deconnexion CAS</a>';																				// Deconnexion possible (CAS+Dokeos) << fonction a pondre
		}
		else
		{
			Display::display_header('', 'dokeos');
			echo "<div id=\"wrapper\">Vous etes maintenant connecte : <a href=\"../../index.php\">Retour acceuil</a></div>";
			echo '<div><p>Deconnexion : <a href="https://'.$cas_auth_server.'/logout">Deconnexion CAS</a>';	
		}
	}
}
else
{																																														// N'est pas connecté sur Dokeos
	if(phpCAS::checkAuthentication())																																		// Test - est-il connecté a CAS ?
	{																																													// Pas connecté a Dokeos + Connecté a CAS
		$id_user_cas = trim(phpCAS::getUser());																															// Récupération de l'id sso sur le serveur CAS
		
		$result = mysql_query("SELECT id_user_dokeos FROM user_ent_corresp where id_user_cas ='$id_user_cas'") or die(mysql_error()); // On cherche un enregistrement concernant cet id CAS dans la table de correspondance
		$row = mysql_fetch_array( $result );
		$id_user_dokeos = $row['id_user_dokeos'];
				
		if(!empty($id_user_dokeos))																																			
		{		
				echo "cette blague...";																																			// On a trouvé une correspondance dans la table
				$user_table = Database::get_main_table(TABLE_MAIN_USER);
				$sql = "SELECT user_id, username, password, auth_source, active, expiration_date FROM $user_table WHERE user_id = '".$id_user_dokeos."'";
				$result = Database::query($sql,__FILE__,__LINE__);
				
				if (Database::num_rows($result) > 0) 																														// Recherche de l'utilisateur dans la table user de Dokeos
				{
					$uData = Database::fetch_array($result);	
					
					$_user['user_id'] = $uData['user_id'];																													// Ultime bidouille
					api_session_register('_user');																																// On se connecte avec son profil Dokeos 
					event_login();
				}
		}
		else																																											// N'est pas connecté a Dokeos + Connecté a CAS + Pas d'enregistrement dans la base (mauvais cheminement)
		{
				Display::display_header('', 'dokeos');
				echo "<h1>Connecter a CAS - Veuillez vous connecter a Dokeos..</h1>";
				display_form_login();
				display_warning_reclick();
		}			
	}
	else
	{																																													// N'est connecté ni a Dokeos, ni a CAS
		Display::display_header('', 'dokeos');
		echo "<h1>Vous n'etes pas connecte. Veuillez vous enregistrer..</h1>";	
		display_form_login();
		display_warning_reclick();
	}
}


if($debug){echo "<h1><b>DEBUG</b></h1>";echo "<p> Identifiant CAS : ".$id_user_cas."</p>";echo "<p> Identifiant Dokeos : ".$id_user_dokeos."</p>";}


function insert_corresp($dokeos,$cas)
{
	$result = mysql_query("SELECT id_user_dokeos,id_user_cas FROM user_ent_corresp where id_user_dokeos ='$dokeos'") or die(mysql_error());
    $cell = mysql_fetch_array( $result );
    $_indb_cas = $cell['id_user_cas'];
	$_indb_dokeos = $cell['id_user_dokeos'];
	
	if( $_indb_dokeos != $dokeos )
	{
        $result = mysql_query("INSERT INTO user_ent_corresp (id_user_dokeos,id_user_cas) VALUES('$dokeos','$cas')") or die(mysql_error());
		return true;
	}
	else
	{
		return false;
	}
}

function display_form_login()
{
	echo	'<div id="wrapper">';
	echo	'<form  action="../../index.php" method="post" name="formLogin" id="formLogin"> ';
	echo	'<div><label>Login</label></div><div><input name="login" type="text" /></div>';
	echo	'<div><label>Passe</label></div><div><input name="password" type="password" /></div><div><label></label></div>';
	echo	'<div><button class="login" name="submitAuth" type="submit" >Entrer</button></form>';
	echo	'<ul class="menulist nobullets">';
	echo	'<li><a href="../../main/auth/inscription.php">Inscription</a></li>';
	echo	'<li><a href="../../main/auth/lostPassword.php">Perdu mot de passe</a></li>';
	echo	'</ul><input name="_qf__formLogin" type="hidden" value="" />';
	echo	'</div>';
}

function display_warning_reclick()
{
	echo "<div><h1>Veuillez recliquer sur le lien Connexion E-Lyco apres validation de ce formulaire,<br/>sans quoi l'association entre vos 2 comptes ne peut se faire..</h1></div>";
}
?>
