/[openfoncier]/trunk/obj/utils.class.php
ViewVC logotype

Diff of /trunk/obj/utils.class.php

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 16748 by softime, Thu Oct 26 18:29:29 2023 UTC revision 16749 by softime, Thu Feb 1 12:13:31 2024 UTC
# Line 884  class utils extends application { Line 884  class utils extends application {
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    
# Line 3286  class utils extends application { Line 3504  class utils extends application {
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          );          );
# Line 6630  class utils extends application { Line 6848  class utils extends application {
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  }  }

Legend:
Removed from v.16748  
changed lines
  Added in v.16749

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26