public function loginAction(Request $request) { // Récupération du login et mot de passe $login = $request->request->get("username"); $pass = $request->request->get("password"); if (!empty($login) && $login !== "" && !empty($pass) && $pass !== "") { // $isConnected = AuthentificationLDAP::open($login, $pass); if (AuthentificationLDAP::open($login, $pass)) { AuthentificationLDAP::close(); $session = new Session(); // Rentre le nom d'utilisateur en session $session->set('username', $login); $session->set('password', $pass); // On recupère la promotion de l'étudiant qu'on met en session également $promotion = AuthentificationLDAP::getPromotion($login, $pass); $session->set('promotion', $promotion); // Ainsi qu'un boolean pour savoir si l'utilisateur est admin $isAdmin = AuthentificationLDAP::isAdmin($login, $pass); var_dump($isAdmin); if ($isAdmin) { $session->set("admin", true); } else { $session->set("admin", false); } $url = $this->generateUrl("glpmr_peripherique_gestion"); } else { CustomError::showMessage("Identifiants incorrects"); $url = $this->generateUrl("glpmr_authentification_homepage"); } } else { CustomError::showMessage("Il faut renseigner tous les champs"); $url = $this->generateUrl("glpmr_authentification_homepage"); } return $this->redirect($url); }
/** * Fonction qui renvoie la promotion de l'elève * @seealso SAD : schéma de l'AD pour les OU promotions */ public static function getPromotion($login, $password) { $promotion = null; $isConnected = AuthentificationLDAP::open($login, $password); if ($isConnected) { $filter = "(sAMAccountName=" . $login . ")"; $resultat = ldap_search(self::$connexion, self::$dn, $filter); if (FALSE !== $resultat) { $user = ldap_get_entries(self::$connexion, $resultat); $user = $user[0]; $split = explode(",", $user["distinguishedname"][0]); // Ici pour choppé le mail //$user['mail'][0] //TODO : chopper l'OU des profs, et repasser en REGEX foreach ($split as $boutDeChaine) { if (strpos($boutDeChaine, "SIOTP ")) { $promotion = $boutDeChaine; } else { if (strpos($boutDeChaine, "SIOALT ")) { $promotion = $boutDeChaine; } else { if (strpos($boutDeChaine, "ASI ")) { $promotion = $boutDeChaine; } } } } // Affiche le promotion du style : ASI 2016 $promo = str_replace("OU=", "", $promotion); if (!$promo == '') { // On transforme ça en ASI 1 ou 2 suivant l'année. $promo = explode(" ", $promo); $annee = self::calculPromotion($promo[1]); $promo_etudiant = $promo[0] . " " . $annee; } else { $promo_etudiant = "professeur"; } } } else { // LEVER ERREUR ICI } return $promo_etudiant; }