884 |
} |
} |
885 |
} |
} |
886 |
|
|
887 |
|
/** |
888 |
|
* SURCHARGE |
889 |
|
* |
890 |
|
* Compose la liste des liens à afficher dans la section 'actions'. |
891 |
|
* |
892 |
|
* Cette méthode retourne la liste des liens disponibles pour l'utilisateur |
893 |
|
* connecté dans le contexte actuel. |
894 |
|
* |
895 |
|
* @return array |
896 |
|
*/ |
897 |
|
function getActionsToDisplay() { |
898 |
|
$actions_to_display = array(); |
899 |
|
if ($this->authenticated == false) { |
900 |
|
return $actions_to_display; |
901 |
|
} |
902 |
|
// Récupère les actions |
903 |
|
$actions = parent::getActionsToDisplay(); |
904 |
|
$change_linked_users = array( |
905 |
|
"title" => __("Utilisateurs liés"), |
906 |
|
"description" => __("Utilisateurs liés"), |
907 |
|
"href" => "../app/change_linked_users.php", |
908 |
|
"class" => "action-change_linked_users", |
909 |
|
); |
910 |
|
array_unshift($actions, $change_linked_users); |
911 |
|
return $actions; |
912 |
|
} |
913 |
|
|
914 |
|
/** |
915 |
|
* SURCHARGE |
916 |
|
* |
917 |
|
* Traitement de l'authentification. |
918 |
|
* |
919 |
|
* L'authentification "normale" ne doit pas prendre en compte les utilisateurs |
920 |
|
* liés et afficher le même message. |
921 |
|
* |
922 |
|
* @param string $login Indentifiant de l'utilisateur |
923 |
|
* @param string $password Mot de passe de l'utilisateur |
924 |
|
* @access public |
925 |
|
* @return bool Etat de l'authentification de l'utilisateur |
926 |
|
*/ |
927 |
|
public function processAuthentication($login, $password) { |
928 |
|
// On recupere le mode d'authenfication de l'utilisateur |
929 |
|
$mode = $this->retrieveUserAuthenticationMode($login); |
930 |
|
// Si mode linked |
931 |
|
if (strtolower($mode) == "linked") { |
932 |
|
$this->authentication_message = __("Votre identifiant ou votre mot de passe est incorrect."); |
933 |
|
return false; |
934 |
|
} |
935 |
|
// Sinon traitement standard |
936 |
|
return $authenticated = parent::processAuthentication($login, $password); |
937 |
|
} |
938 |
|
|
939 |
|
/** |
940 |
|
* Cette methode permet d'effectuer toutes les verifications et les |
941 |
|
* traitements necessaires pour la gestion de l'authentification des |
942 |
|
* utilisateurs liés. |
943 |
|
* |
944 |
|
* Est un dérivé de la méthode om_application.login() |
945 |
|
* |
946 |
|
* @return void |
947 |
|
*/ |
948 |
|
function login_linked_users() { |
949 |
|
// Initialisation des paramètres |
950 |
|
$params = array( |
951 |
|
"came_from" => array( |
952 |
|
"method" => array("post", ), |
953 |
|
"default_value" => "", |
954 |
|
), |
955 |
|
); |
956 |
|
foreach ($this->get_initialized_parameters($params) as $key => $value) { |
957 |
|
${$key} = $value; |
958 |
|
} |
959 |
|
// Debug |
960 |
|
$this->addToLog(__METHOD__."(): start", EXTRA_VERBOSE_MODE); |
961 |
|
// Si l'utilisateur ne souhaite pas s'authentifier (le cas se presente |
962 |
|
// si nous sommes sur la page de login et que l'utilisateur n'a pas |
963 |
|
// valider le formulaire) alors on sort de la methode |
964 |
|
if ($this->wantToAuthenticate() != true) { |
965 |
|
// Logger |
966 |
|
$this->addToLog(__METHOD__."(): end", EXTRA_VERBOSE_MODE); |
967 |
|
// On retourne null |
968 |
|
return null; |
969 |
|
} |
970 |
|
// On recupere le login et le mot de passe de l'utilisateur qui |
971 |
|
// demande l'authentification |
972 |
|
$login = $this->getUserLogin(); |
973 |
|
$password = $this->getUserPassword(); |
974 |
|
// Logger |
975 |
|
$this->addToLog(__METHOD__."(): credentials \"".$login."\"/\"***\"", EXTRA_VERBOSE_MODE); |
976 |
|
// On procede a l'authentification |
977 |
|
$authenticated = $this->process_authentication_linked_users($login, $password); |
978 |
|
// |
979 |
|
if ($authenticated) { |
980 |
|
$user_infos = $this->retrieveUserProfile($login); |
981 |
|
} |
982 |
|
// |
983 |
|
if (isset($user_infos[$this->table_om_utilisateur_field_om_profil])) { |
984 |
|
// Identification OK |
985 |
|
$_SESSION["profil"] = $user_infos[$this->table_om_profil_field_hierarchie]; |
986 |
|
$_SESSION["login"] = $user_infos[$this->table_om_utilisateur_field_login]; |
987 |
|
$_SESSION["collectivite"] = $user_infos[$this->table_om_utilisateur_field_om_collectivite]; |
988 |
|
$_SESSION["niveau"] = $user_infos[$this->table_om_collectivite_field_niveau]; |
989 |
|
$_SESSION["justlogin"] = true; |
990 |
|
// |
991 |
|
$this->triggerAfterLogin($user_infos); |
992 |
|
// Gestion des sessions spécifiques |
993 |
|
unset($_SESSION['dossiers_consulte']); |
994 |
|
// |
995 |
|
$class = "ok"; |
996 |
|
$message = __("Votre session est maintenant ouverte."); |
997 |
|
$this->addToMessage($class, $message); |
998 |
|
// |
999 |
|
// $this->disconnectDatabase(); |
1000 |
|
// |
1001 |
|
if ($this->flag === "login_and_nohtml") { |
1002 |
|
$this->authenticated = true; |
1003 |
|
$this->setFlag("nohtml"); |
1004 |
|
return; |
1005 |
|
} |
1006 |
|
// Redirection vers le came_from si existant |
1007 |
|
if ($came_from != "") { |
1008 |
|
// |
1009 |
|
header("Location: ".urldecode($came_from)); |
1010 |
|
exit(); |
1011 |
|
} else { |
1012 |
|
// Sinon on redirige vers le tableau de bord |
1013 |
|
$this->goToDashboard (); |
1014 |
|
} |
1015 |
|
} else { |
1016 |
|
// |
1017 |
|
$class = "error"; |
1018 |
|
$this->addToMessage($class, $this->authentication_message); |
1019 |
|
$this->came_from = $came_from; |
1020 |
|
} |
1021 |
|
// Logger |
1022 |
|
$this->addToLog(__METHOD__."(): end", EXTRA_VERBOSE_MODE); |
1023 |
|
} |
1024 |
|
|
1025 |
|
/** |
1026 |
|
* Traitement de l'authentification d'un utilisateur lié. |
1027 |
|
* |
1028 |
|
* Est un dérivé de la méthode om_application.processAuthentication() |
1029 |
|
* |
1030 |
|
* @param string $login Indentifiant de l'utilisateur |
1031 |
|
* @param string $password Mot de passe de l'utilisateur |
1032 |
|
* @access public |
1033 |
|
* @return bool Etat de l'authentification de l'utilisateur |
1034 |
|
*/ |
1035 |
|
public function process_authentication_linked_users($login, $password) { |
1036 |
|
// Initialisation de la valeur de retour a false |
1037 |
|
$authenticated = false; |
1038 |
|
// On recupere le mode d'authenfication de l'utilisateur |
1039 |
|
$mode = $this->retrieveUserAuthenticationMode($login); |
1040 |
|
// Debug |
1041 |
|
$this->addToLog(__METHOD__."(): le mode d'authentification est \"".$mode."\"", EXTRA_VERBOSE_MODE); |
1042 |
|
// Si mode base de donnees ou utilisateur lié |
1043 |
|
if (strtolower($mode) == "db" || strtolower($mode) == 'linked') { |
1044 |
|
// On procede a l'authentification depuis la base de donnees |
1045 |
|
// $authenticated = $this->processDatabaseAuthentication($login, $password); |
1046 |
|
$authenticated = $this->process_database_authentication_linked_users($login, $password); |
1047 |
|
} elseif (strtolower($mode) == "ldap") { // Si mode annuaire |
1048 |
|
// |
1049 |
|
if ($password == "") { |
1050 |
|
$authenticated = false; |
1051 |
|
$this->authentication_message = __("Votre identifiant ou votre mot de passe est incorrect."); |
1052 |
|
} else { |
1053 |
|
// On procede a l'authentification depuis l'annuaire |
1054 |
|
$authenticated = $this->processDirectoryAuthentication($login, $password); |
1055 |
|
} |
1056 |
|
} |
1057 |
|
// On retourne la valeur |
1058 |
|
return $authenticated; |
1059 |
|
} |
1060 |
|
|
1061 |
|
/** |
1062 |
|
* Traitement de l'authentification pour un utilisateur lié. |
1063 |
|
* |
1064 |
|
* Est un dérivé de la méthode om_application.processDatabaseAuthentication() |
1065 |
|
* |
1066 |
|
* @param string $login Identifiant de l'utilisateur |
1067 |
|
* @param string $password Mot de passe de l'utilisateur |
1068 |
|
* @return bool Etat de l'authentification de l'utilisateur |
1069 |
|
* @access public |
1070 |
|
*/ |
1071 |
|
public function process_database_authentication_linked_users($login, $password) { |
1072 |
|
// Initialisation de la valeur de retour a false |
1073 |
|
$authenticated = false; |
1074 |
|
// Récupération des infos de tiers consultés |
1075 |
|
$qres = $this->get_all_results_from_db_query( |
1076 |
|
sprintf(' |
1077 |
|
SELECT * |
1078 |
|
FROM %s%s |
1079 |
|
WHERE %s = \'%s\' |
1080 |
|
AND %s = \'%s\' |
1081 |
|
', |
1082 |
|
DB_PREFIXE, |
1083 |
|
$this->db->escapeSimple($this->table_om_utilisateur), |
1084 |
|
$this->db->escapeSimple($this->table_om_utilisateur_field_login), |
1085 |
|
$this->db->escapeSimple($login), |
1086 |
|
$this->db->escapeSimple($this->table_om_utilisateur_field_password), |
1087 |
|
$this->db->escapeSimple($password) |
1088 |
|
), |
1089 |
|
array( |
1090 |
|
"origin" => __METHOD__, |
1091 |
|
) |
1092 |
|
); |
1093 |
|
// |
1094 |
|
if ($qres['row_count'] > 0) { |
1095 |
|
$authenticated = true; |
1096 |
|
} |
1097 |
|
// |
1098 |
|
if ($authenticated == false) { |
1099 |
|
$this->authentication_message = __("Votre identifiant ou votre mot de passe est incorrect."); |
1100 |
|
} |
1101 |
|
// On retourne la valeur |
1102 |
|
return $authenticated; |
1103 |
|
} |
1104 |
|
|
1105 |
// }}} |
// }}} |
1106 |
|
|
1107 |
|
|
3504 |
$footer[] = array( |
$footer[] = array( |
3505 |
"title" => __("Documentation"), |
"title" => __("Documentation"), |
3506 |
"description" => __("Acceder a l'espace documentation de l'application"), |
"description" => __("Acceder a l'espace documentation de l'application"), |
3507 |
"href" => "http://docs.openmairie.org/?project=openads&version=6.2&format=html&path=manuel_utilisateur", |
"href" => "http://docs.openmairie.org/?project=openads&version=6.3&format=html&path=manuel_utilisateur", |
3508 |
"target" => "_blank", |
"target" => "_blank", |
3509 |
"class" => "footer-documentation", |
"class" => "footer-documentation", |
3510 |
); |
); |
6848 |
function replace_non_breaking_space($value) { |
function replace_non_breaking_space($value) { |
6849 |
return preg_replace("/ | /", ' ', $value); |
return preg_replace("/ | /", ' ', $value); |
6850 |
} |
} |
6851 |
|
|
6852 |
|
/** |
6853 |
|
* Retourne la valeur du champ de l'element de la table passée en paramètre. |
6854 |
|
* |
6855 |
|
* @param string $table Table de l'element. |
6856 |
|
* @param mixed $id Identifiant de l'element. |
6857 |
|
* @param string $field Nom du champ dont la valeur est à récupérer. |
6858 |
|
* |
6859 |
|
* @return string Valeur du champ de l'element ou false si l'element n'existe pas. |
6860 |
|
*/ |
6861 |
|
public function get_value_of_element($table, $id, $field) { |
6862 |
|
$instance = $this->get_inst__om_dbform(array( |
6863 |
|
"obj" => $table, |
6864 |
|
"idx" => $id, |
6865 |
|
)); |
6866 |
|
// Si l'élément existe et que le champ existe |
6867 |
|
if ($instance->exists() === true |
6868 |
|
&& in_array($field, $instance->champs)) { |
6869 |
|
// |
6870 |
|
return $instance->getVal($field); |
6871 |
|
} |
6872 |
|
return false; |
6873 |
|
} |
6874 |
} |
} |