fork(1) download
  1. <?php
  2. //-----------------------------------------------------------------------------------------------------------
  3. // E-Lyco CAS Connector
  4. //-----------------------------------------------------------------------------------------------------------
  5. // Copyright (c) 2011 SIREC Pays de la Loire
  6. //-----------------------------------------------------------------------------------------------------------
  7. // This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License.
  8. // 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
  9. // Creative Commons, 171 Second Street, Suite 300, San Francisco, California, 94105, USA.
  10. //-----------------------------------------------------------------------------------------------------------
  11. // Authors: Alexandre GAUVRIT - gauvrit.alexandre@gmail.com
  12. //-----------------------------------------------------------------------------------------------------------
  13. // Description : index.php - login page/redirection to CAS service
  14. // Version : 0.2
  15.  
  16. require('../..//main/inc/global.inc.php');
  17. require_once (api_get_path(LIBRARY_PATH).'events.lib.inc.php');
  18. require_once('../..//main/auth/cas/authcas.php');
  19. global $cas_auth_ver, $cas_auth_server, $cas_auth_port, $cas_auth_uri;
  20.  
  21. $debug = false;
  22.  
  23. phpCAS::client($cas_auth_ver,$cas_auth_server,$cas_auth_port,$cas_auth_uri);
  24. phpCAS::setNoCasServerValidation();
  25.  
  26. if (!empty($_SESSION['_user']['user_id']))
  27. { // Connecte sur Dokeos
  28. $id_user_dokeos = trim($_SESSION['_user']['user_id']);
  29. // L'utilisateur existe-t-il dans la table de correspondance ?
  30. mysql_connect($_configuration['db_host'],$_configuration['db_user'],$_configuration['db_password']) or die(mysql_error());
  31. mysql_select_db("dokeos_main") or die(mysql_error());
  32. $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
  33. $row = mysql_fetch_array( $result );
  34.  
  35. if(!empty($row['id_user_cas']))
  36. { // La requete a retourné un resultat > l'utilisateur existe dans la table.
  37. $id_user_cas = $row['id_user_cas'];
  38. }
  39. else
  40. { // L'utilisateur n'existe pas >> est-il connecté a CAS ?
  41. if(phpCAS::checkAuthentication()){
  42. $id_user_cas = trim(phpCAS::getUser()); // Connecté a Dokeos + CAS -> Insertion possible
  43. }else
  44. {
  45. phpCAS::forceAuthentication(); // Redirection sur le CAS pour connexion
  46. }
  47. }
  48.  
  49. if(!empty($id_user_cas))
  50. {
  51. // Test si l'insertion est possible/nécéssaire -> Insertion d'une correspondance
  52. if(!insert_corresp($id_user_dokeos,$id_user_cas))
  53. { // Insertion réussie / déjà connecté
  54. Display::display_header('', 'dokeos');
  55. echo "<div id=\"wrapper\">Vous etes maintenant connecte : <a href=\"../../index.php\">Retour acceuil</a></div>";
  56. echo '<div><p>Deconnexion : <a href="https://'.$cas_auth_server.'/logout">Deconnexion CAS</a>'; // Deconnexion possible (CAS+Dokeos) << fonction a pondre
  57. }
  58. else
  59. {
  60. Display::display_header('', 'dokeos');
  61. echo "<div id=\"wrapper\">Vous etes maintenant connecte : <a href=\"../../index.php\">Retour acceuil</a></div>";
  62. echo '<div><p>Deconnexion : <a href="https://'.$cas_auth_server.'/logout">Deconnexion CAS</a>';
  63. }
  64. }
  65. }
  66. else
  67. { // N'est pas connecté sur Dokeos
  68. if(phpCAS::checkAuthentication()) // Test - est-il connecté a CAS ?
  69. { // Pas connecté a Dokeos + Connecté a CAS
  70. $id_user_cas = trim(phpCAS::getUser()); // Récupération de l'id sso sur le serveur CAS
  71.  
  72. $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
  73. $row = mysql_fetch_array( $result );
  74. $id_user_dokeos = $row['id_user_dokeos'];
  75.  
  76. if(!empty($id_user_dokeos))
  77. {
  78. echo "cette blague..."; // On a trouvé une correspondance dans la table
  79. $user_table = Database::get_main_table(TABLE_MAIN_USER);
  80. $sql = "SELECT user_id, username, password, auth_source, active, expiration_date FROM $user_table WHERE user_id = '".$id_user_dokeos."'";
  81. $result = Database::query($sql,__FILE__,__LINE__);
  82.  
  83. if (Database::num_rows($result) > 0) // Recherche de l'utilisateur dans la table user de Dokeos
  84. {
  85. $uData = Database::fetch_array($result);
  86.  
  87. $_user['user_id'] = $uData['user_id']; // Ultime bidouille
  88. api_session_register('_user'); // On se connecte avec son profil Dokeos
  89. event_login();
  90. }
  91. }
  92. else // N'est pas connecté a Dokeos + Connecté a CAS + Pas d'enregistrement dans la base (mauvais cheminement)
  93. {
  94. Display::display_header('', 'dokeos');
  95. echo "<h1>Connecter a CAS - Veuillez vous connecter a Dokeos..</h1>";
  96. display_form_login();
  97. display_warning_reclick();
  98. }
  99. }
  100. else
  101. { // N'est connecté ni a Dokeos, ni a CAS
  102. Display::display_header('', 'dokeos');
  103. echo "<h1>Vous n'etes pas connecte. Veuillez vous enregistrer..</h1>";
  104. display_form_login();
  105. display_warning_reclick();
  106. }
  107. }
  108.  
  109.  
  110. if($debug){echo "<h1><b>DEBUG</b></h1>";echo "<p> Identifiant CAS : ".$id_user_cas."</p>";echo "<p> Identifiant Dokeos : ".$id_user_dokeos."</p>";}
  111.  
  112.  
  113. function insert_corresp($dokeos,$cas)
  114. {
  115. $result = mysql_query("SELECT id_user_dokeos,id_user_cas FROM user_ent_corresp where id_user_dokeos ='$dokeos'") or die(mysql_error());
  116. $cell = mysql_fetch_array( $result );
  117. $_indb_cas = $cell['id_user_cas'];
  118. $_indb_dokeos = $cell['id_user_dokeos'];
  119.  
  120. if( $_indb_dokeos != $dokeos )
  121. {
  122. $result = mysql_query("INSERT INTO user_ent_corresp (id_user_dokeos,id_user_cas) VALUES('$dokeos','$cas')") or die(mysql_error());
  123. return true;
  124. }
  125. else
  126. {
  127. return false;
  128. }
  129. }
  130.  
  131. function display_form_login()
  132. {
  133. echo '<div id="wrapper">';
  134. echo '<form action="../../index.php" method="post" name="formLogin" id="formLogin"> ';
  135. echo '<div><label>Login</label></div><div><input name="login" type="text" /></div>';
  136. echo '<div><label>Passe</label></div><div><input name="password" type="password" /></div><div><label></label></div>';
  137. echo '<div><button class="login" name="submitAuth" type="submit" >Entrer</button></form>';
  138. echo '<ul class="menulist nobullets">';
  139. echo '<li><a href="../../main/auth/inscription.php">Inscription</a></li>';
  140. echo '<li><a href="../../main/auth/lostPassword.php">Perdu mot de passe</a></li>';
  141. echo '</ul><input name="_qf__formLogin" type="hidden" value="" />';
  142. echo '</div>';
  143. }
  144.  
  145. function display_warning_reclick()
  146. {
  147. 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>";
  148. }
  149. ?>
  150.  
Not running #stdin #stdout 0s 0KB
stdin
Standard input is empty
stdout
Standard output is empty