private void ConnectionButton_Click(object sender, RoutedEventArgs e) { if (IsValid()) { try { DomainServerConfiguration informationsServeurDomaine = DomainServerConfiguration.Charger(); string ipDomaine = informationsServeurDomaine.IPAddress + "/"; string[] domaines = informationsServeurDomaine.DomainName.Split('.'); foreach (string domaine in domaines) { ipDomaine += "DC=" + domaine + ","; } ipDomaine = ipDomaine.TrimEnd(','); Ldap ldap = new Ldap(ipDomaine, UtilisateurWatermarkTextBox.Text, MotDePasseWatermarkTextBox.Password); if (ldap.Authentification()) { List <string> groups = ldap.GetGroup(); string group = groups[0]; teacher.FirstName = ldap.GetFirstName(); teacher.LastName = ldap.GetLastName(); teacher.Subject = Teacher.GetSubject(ldap.GetGroup()[0]); if (teacher.Subject == "Anglais") { Ldap.IsAuthificated = true; Close(); } else { InformationsTextBlock.Text = "Vous ne disposez pas des autorisations nécessaires pour continuer. Veuillez vérifier vos identifants avant de réessayer."; teacher.Save(Path.Combine(Directory.GetCurrentDirectory(), teacher.FirstName + ".credential")); } } else { InformationsTextBlock.Text = "Nom d'utilisateur ou mot de passe invalide. Veuillez vérifier vos identifants avant de réessayer."; teacher.Save(Path.Combine(Directory.GetCurrentDirectory(), teacher.FirstName + ".credential")); } } catch (Exception ex) { InformationsTextBlock.Text = "L'erreur suivante s'est produite : " + ex.Message; using (FileStream fileStream = File.Create(Path.Combine(Directory.GetCurrentDirectory(), "AuthentificationErreur" + DateTime.Now + ".txt"))) { byte[] info = new UTF8Encoding(true).GetBytes("Message : " + ex.Message + Environment.NewLine + ex.StackTrace); fileStream.Write(info, 0, info.Length); } teacher.Save(Path.Combine(Directory.GetCurrentDirectory(), teacher.FirstName + ".credential")); } } }
public SignInStatus CheckCredential(LoginViewModel model) { if (!System.IO.File.Exists(Path.Combine(Server.MapPath("~"), "users.local.credential")) && model.Username.Equals("Administrateur", StringComparison.CurrentCultureIgnoreCase) && model.Password == "admin") { FormsAuthentication.SetAuthCookie(model.Username, model.RememberMe); return(SignInStatus.ChangePasswordFirstUse); } else if (System.IO.File.Exists(Path.Combine(Server.MapPath("~"), "users.local.credential"))) { Users users = Users.Load(Path.Combine(Server.MapPath("~").ToString(), "users.local.credential")); foreach (User user in users) { if (user.Username.Equals(model.Username, StringComparison.CurrentCultureIgnoreCase) && user.Password == Hash.SHA512(model.Password)) { FormsAuthentication.SetAuthCookie(model.Username, model.RememberMe); return(SignInStatus.AdminAccount); } } } if (System.IO.File.Exists(Path.Combine(Server.MapPath("~"), "serveurDomaine.bin"))) { DomainServerConfiguration informationsServeurDomaine = DomainServerConfiguration.Charger(Path.Combine(Server.MapPath("~").ToString(), "serveurDomaine.bin")); string ipDomaine = informationsServeurDomaine.IPAddress + "/"; string[] domaines = informationsServeurDomaine.DomainName.Split('.'); foreach (string domaine in domaines) { ipDomaine += "DC=" + domaine + ","; } ipDomaine = ipDomaine.TrimEnd(','); Ldap ldap = new Ldap(ipDomaine, model.Username, model.Password); if (ldap.Authentification()) { Session["User"] = new User() { FirstName = ldap.GetFirstName(), Groups = ldap.GetGroup(), LastName = ldap.GetLastName(), Username = model.Username }; //if ((Session["User"] as User).FirstName == "") FormsAuthentication.SetAuthCookie(model.Username, model.RememberMe); /*else * FormsAuthentication.SetAuthCookie((Session["User"] as User).FirstName, false);*/ if (!Directory.Exists(Path.Combine(Server.MapPath("~"), "credential"))) { Directory.CreateDirectory(Path.Combine(Server.MapPath("~"), "credential")); } new Users { (Session["User"] as User) }.Save(Path.Combine(Server.MapPath("~"), "credential", model.Username + ".credential")); return(SignInStatus.Success); } } return(SignInStatus.Failure); }