private bool ValidateUserAdmin(string login, string password) { ClubContactContext db = new ClubContactContext(); try { //on va chercher le membre si celui-ci n'est pas supprimé CompteAdmin admin = db.CompteAdmins.Where(m => m.nomCompte.ToLower() == login.ToLower()).FirstOrDefault(); if (admin != null) { //on vérifie si le mdp qu'il a entré est égal au mdp de la BD if (Membre.hashedPwd(password).Equals(admin.motDePasseHashe)) { return(true); } } } catch (Exception e) { //Renvoyer un message d'erreur dans Elmah, mais on fait comme si la connexion n'as simplement pas fonctionner au niveau de l'utilisateur. Elmah.ErrorSignal.FromCurrentContext().Raise( new Exception("Action: ValidateUser, Contrôleur: Authentification ; Erreur potentielle: Requête LINQ n'a pas fonctionnée. ; login : "******".", e) ); ModelState.AddModelError(string.Empty, "Une erreur s'est produite lors de la connexion, veuillez réessayer."); } return(false); }
public ActionResult Edit(CompteAdmin compteAdmin) { if (ModelState.IsValid) { if (compteAdmin.noCompteAdmin == 0) { db.Entry(compteAdmin).State = EntityState.Added; } else { if (compteAdmin.motDePasseHashe == "" || compteAdmin.motDePasseHashe == null) { compteAdmin.motDePasseHashe = db.CompteAdmins.Where(m => m.noCompteAdmin == compteAdmin.noCompteAdmin).Select(m => m.motDePasseHashe).FirstOrDefault(); } db.Entry(compteAdmin).State = EntityState.Modified; } db.SaveChanges(); } else { return(View("Edit", compteAdmin)); } return(RedirectToAction("Index", "CompteAdmin")); }
public ActionResult Create() { CompteAdmin nouveauCompteAdmin = new CompteAdmin(); nouveauCompteAdmin.permission = db.NiveauDePermissionAdmins.Where(m => m.nomNiveauDePermissionAdmin == "Limité").FirstOrDefault(); ViewBagNecessaireAdmin(nouveauCompteAdmin); return(View("Edit", nouveauCompteAdmin)); }
public void ViewBagNecessaireAdmin(CompteAdmin compteAdmin) { if (compteAdmin.noCompteAdmin == 0) { ViewBag.Create = true; } else { ViewBag.Create = false; } ViewBag.niveauxPermission = new SelectList(db.NiveauDePermissionAdmins, "noNiveauDePermissionAdmin", "nomNiveauDePermissionAdmin", compteAdmin.noPermission); }
public ActionResult DeleteConfirmed(CompteAdmin compteASupprimer) { CompteAdmin leCompteAdmin = db.CompteAdmins.Where(m => m.noCompteAdmin == compteASupprimer.noCompteAdmin).FirstOrDefault(); if (leCompteAdmin == null) { return(new HttpStatusCodeResult(HttpStatusCode.NotFound)); } db.CompteAdmins.Remove(leCompteAdmin); db.SaveChanges(); return(RedirectToAction("Index")); }
public ActionResult Edit(int?id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.NotFound)); } CompteAdmin leCompteAdmin = db.CompteAdmins.Where(m => m.noCompteAdmin == id).FirstOrDefault(); if (leCompteAdmin == null) { return(new HttpStatusCodeResult(HttpStatusCode.NotFound)); } ViewBagNecessaireAdmin(leCompteAdmin); return(View("Edit", leCompteAdmin)); }
public ActionResult ModifierMotDePasse(string id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.NotFound)); } CompteAdmin compteAdminCo = db.CompteAdmins.Where(m => m.nomCompte == id).FirstOrDefault(); if (compteAdminCo == null) { return(new HttpStatusCodeResult(HttpStatusCode.NotFound)); } if (compteAdminCo.nomCompte != User.Identity.Name) { return(new HttpStatusCodeResult(HttpStatusCode.Unauthorized)); } return(View("ModifierMotDePasse", compteAdminCo)); }
public ActionResult ModifierMotDePasse(CompteAdmin compteAdmin) { if (ModelState.IsValid) { if (compteAdmin.motDePasseHashe == "" || compteAdmin.motDePasseHashe == null) { compteAdmin.motDePasseHashe = db.CompteAdmins.Where(m => m.noCompteAdmin == compteAdmin.noCompteAdmin).Select(m => m.motDePasseHashe).FirstOrDefault(); } db.Entry(compteAdmin).State = EntityState.Modified; db.SaveChanges(); } else { return(View("Edit", compteAdmin)); } TempData["motDePasseAdminSauvegarder"] = "Votre mot de passe a bien été sauvegardé."; TempData.Keep(); return(RedirectToAction("ModifierMotDePasse", "CompteAdmin")); }
public ActionResult DesactiverCompte(int noMembreDesactiver, int noSignalement) { Membre mem = db.Membres.Where(m => m.noMembre == noMembreDesactiver).Include(p => p.listePhotosMembres).Include(a => a.listeActivitesOrganises) .Include(a => a.listeHobbies).Include(a => a.listeRaisonsSurSite).Include(a => a.listeDeVisitesDeMonProfil) .FirstOrDefault(); List <Activite> activites = db.Activites.Where(a => a.noMembreOrganisateur == mem.noMembre).ToList(); List <Photo> photos = db.Photos.Where(p => p.noMembre == mem.noMembre).ToList(); List <Visite> visites = db.Visites.Where(p => p.noMembreVisite == mem.noMembre || p.noMembreVisiteur == mem.noMembre).ToList(); if (mem == null) { return(HttpNotFound()); } else { mem.dateSuppressionDuCompte = DateTime.Now; mem.compteSupprimeParAdmin = true; //On annule chacune de ses activites FUTURES. foreach (Activite a in mem.listeActivitesOrganises) { if (a.date > DateTime.Now) { Activite acti; Utilitaires.AnnulerActivite(a.noActivite, null, out acti); } } //On retire sa participation à tous les activités FUTURES. foreach (Activite a in mem.listeActivites) { if (a.date > DateTime.Now) { Utilitaires.ParticiperActivite(a.noActivite, noMembreDesactiver); } } db.SaveChanges(); } CompteAdmin compteAdminTraiteur = db.CompteAdmins.Where(m => m.nomCompte == User.Identity.Name).FirstOrDefault(); ActionTraitement actionCompteBloque = db.ActionTraitements.Where(m => m.nomActionTraitement == "Compte bloqué").FirstOrDefault(); Signalement leSignalement = db.Signalements.Where(m => m.noSignalement == noSignalement).FirstOrDefault(); leSignalement.dateSuiviNecessaire = null; leSignalement.etatSignalementActuel = db.EtatSignalements.Where(m => m.nomEtatSignalement == "Traité").FirstOrDefault(); leSignalement.adminQuiTraite = compteAdminTraiteur; //Envoie d'un message automatisé de traitement Message messageAccuseApresTraitement = new Message(); messageAccuseApresTraitement.dateEnvoi = DateTime.Now; messageAccuseApresTraitement.sujetMessage = "Votre signalement contre " + leSignalement.membreContreQuiEstPlainte.surnom + " a été traité."; messageAccuseApresTraitement.contenuMessage = "Votre signalement contre " + leSignalement.membreContreQuiEstPlainte.surnom + " a bien été traité, et une action a eu lieu afin que le comportement" + " fautif ne se reproduise plus. Merci d'aider à rendre Club Contact un environnement sécuritaire!" + Environment.NewLine + Environment.NewLine + "- Le service d'administration de Club Contact"; messageAccuseApresTraitement.lu = false; messageAccuseApresTraitement.membreReceveur = leSignalement.membreFaisantPlainte; messageAccuseApresTraitement.noMembreReceveur = leSignalement.membreFaisantPlainte.noMembre; db.Messages.Add(messageAccuseApresTraitement); db.SaveChanges(); //Fin envoie d'un message automatisé de traitement TraitementSignalement leTraitementEffectuer = new TraitementSignalement(); leTraitementEffectuer.compteAdminTraiteur = compteAdminTraiteur; leTraitementEffectuer.noCompteAdminTraiteur = compteAdminTraiteur.noCompteAdmin; leTraitementEffectuer.actionTraitement = actionCompteBloque; leTraitementEffectuer.noActionTraitement = actionCompteBloque.noActionTraitement; leTraitementEffectuer.dateTraitementSignalement = DateTime.Now; leTraitementEffectuer.noSignalementLie = leSignalement.noSignalement; leTraitementEffectuer.signalementLie = leSignalement; db.TraitementSignalements.Add(leTraitementEffectuer); List <Signalement> lesSignalementDuMembreQuiSeraDesactiver = db.Signalements.Where(m => m.noMembreContreQuiEstPlainte == noMembreDesactiver && m.noSignalement != leSignalement.noSignalement).ToList(); foreach (Signalement s in lesSignalementDuMembreQuiSeraDesactiver) { s.dateSuiviNecessaire = null; s.etatSignalementActuel = db.EtatSignalements.Where(m => m.nomEtatSignalement == "Traité").FirstOrDefault(); if (s.adminQuiTraite == null && s.noCompteAdmin == null) { s.adminQuiTraite = compteAdminTraiteur; s.noCompteAdmin = compteAdminTraiteur.noCompteAdmin; } TraitementSignalement traitementEffectureSurAutre = new TraitementSignalement(); traitementEffectureSurAutre.compteAdminTraiteur = compteAdminTraiteur; traitementEffectureSurAutre.noCompteAdminTraiteur = compteAdminTraiteur.noCompteAdmin; traitementEffectureSurAutre.actionTraitement = actionCompteBloque; traitementEffectureSurAutre.noActionTraitement = actionCompteBloque.noActionTraitement; traitementEffectureSurAutre.dateTraitementSignalement = DateTime.Now; traitementEffectureSurAutre.noSignalementLie = s.noSignalement; traitementEffectureSurAutre.signalementLie = s; db.TraitementSignalements.Add(traitementEffectureSurAutre); } db.SaveChanges(); return(RedirectToAction("Gestion", "Admin", new { tab = 2 })); }
public ActionResult Gestion(int?page, GestionViewModel gestionViewModel, int?tab, int?vientDePagination, int?noMembreDesactiver, int?noSignalementLie, string btnSubmit) { if (noMembreDesactiver != null) { return(RedirectToAction("DesactiverCompte", new { noMembreDesactiver = noMembreDesactiver, noSignalement = noSignalementLie })); } else if (btnSubmit != null) { if (btnSubmit.Contains("ChangerEtatPlainte")) { int noSignalement = int.Parse(btnSubmit.Remove(0, 18)); int indexSignalement = gestionViewModel.lesSignalement.FindIndex(a => a.noSignalement == noSignalement); CompteAdmin adminQuiTraite = db.CompteAdmins.Where(a => a.nomCompte == User.Identity.Name.ToString()).FirstOrDefault(); int noSignalementActuel = gestionViewModel.lesSignalement[indexSignalement].noEtatSignalementActuel; if (db.EtatSignalements.Where(m => m.noEtatSignalement == noSignalementActuel).FirstOrDefault().nomEtatSignalement == "Assigné") { gestionViewModel.lesSignalement[indexSignalement].adminQuiTraite = adminQuiTraite; gestionViewModel.lesSignalement[indexSignalement].noCompteAdmin = adminQuiTraite.noCompteAdmin; } else if (db.EtatSignalements.Where(m => m.noEtatSignalement == noSignalementActuel).FirstOrDefault().nomEtatSignalement == "Traité") { int noMembreContreQuiEstPlainte = gestionViewModel.lesSignalement[indexSignalement].noMembreContreQuiEstPlainte; int noMembreQuiSePlaint = gestionViewModel.lesSignalement[indexSignalement].noMembreFaisantPlainte; Membre leMembreContreQuiEstPlainte = db.Membres.Where(m => m.noMembre == noMembreContreQuiEstPlainte).FirstOrDefault(); Membre leMembreQuiSePlaint = db.Membres.Where(m => m.noMembre == noMembreQuiSePlaint).FirstOrDefault(); //Envoie d'un message automatisé de traitement Message messageAccuseApresTraitement = new Message(); messageAccuseApresTraitement.dateEnvoi = DateTime.Now; messageAccuseApresTraitement.sujetMessage = "Votre signalement contre " + leMembreContreQuiEstPlainte.surnom + " a été traité."; messageAccuseApresTraitement.contenuMessage = "Votre signalement contre " + leMembreContreQuiEstPlainte.surnom + " a bien été traité, et une action a eu lieu afin que le comportement" + " fautif ne se reproduise plus. Merci d'aider à rendre Club Contact un environnement sécuritaire!" + Environment.NewLine + Environment.NewLine + "- Le service d'administration de Club Contact"; messageAccuseApresTraitement.lu = false; messageAccuseApresTraitement.membreReceveur = leMembreQuiSePlaint; messageAccuseApresTraitement.noMembreReceveur = leMembreQuiSePlaint.noMembre; db.Messages.Add(messageAccuseApresTraitement); db.SaveChanges(); } int noEtatSignalementActuel = gestionViewModel.lesSignalement[indexSignalement].noEtatSignalementActuel; string nomEtatSignalementActuel = db.EtatSignalements.Where(m => m.noEtatSignalement == noEtatSignalementActuel).Select(m => m.nomEtatSignalement).FirstOrDefault(); ActionTraitement actionTraitementEtatModifier = db.ActionTraitements.Where(m => m.nomActionTraitement == "État de la plainte modifié à: " + nomEtatSignalementActuel).FirstOrDefault(); TraitementSignalement leTraitementEffectuer = new TraitementSignalement(); leTraitementEffectuer.compteAdminTraiteur = adminQuiTraite; leTraitementEffectuer.noCompteAdminTraiteur = adminQuiTraite.noCompteAdmin; leTraitementEffectuer.actionTraitement = actionTraitementEtatModifier; leTraitementEffectuer.noActionTraitement = actionTraitementEtatModifier.noActionTraitement; leTraitementEffectuer.dateTraitementSignalement = DateTime.Now; leTraitementEffectuer.noSignalementLie = gestionViewModel.lesSignalement[indexSignalement].noSignalement; leTraitementEffectuer.signalementLie = gestionViewModel.lesSignalement[indexSignalement]; db.TraitementSignalements.Add(leTraitementEffectuer); //Retrait du nouveau signalement CommentaireSignalement leNouveauCommentaire = gestionViewModel.lesSignalement[indexSignalement].lesCommentairesSurCeSignalement.Last(); gestionViewModel.lesSignalement[indexSignalement].lesCommentairesSurCeSignalement.Remove(leNouveauCommentaire); db.Entry(leNouveauCommentaire).State = EntityState.Detached; foreach (CommentaireSignalement c in gestionViewModel.lesSignalement[indexSignalement].lesCommentairesSurCeSignalement) { db.Entry(c).State = EntityState.Unchanged; } db.Entry(gestionViewModel.lesSignalement[indexSignalement]).State = EntityState.Modified; try { db.SaveChanges(); } catch (Exception e) { Elmah.ErrorSignal.FromCurrentContext().Raise(Utilitaires.templateException("Gestion", "Admin", "Mise à jour de la base de données à la suite de la modification de l'état d'un signalement à échoué.", e, null, "post")); TempData["gestionViewModelPOST"] = gestionViewModel; TempData["Erreur"] = "Une erreur est survenu lors du changement de l'état de la plainte, veuillez réessayer."; TempData.Keep(); return(RedirectToAction("Gestion", new { page = page, tab = tab, vientDePagination = vientDePagination })); } } else if (btnSubmit.Contains("commentaireSignalement")) { int index; if (int.TryParse(btnSubmit.Substring(22), out index)) { CommentaireSignalement leNouveauCommentaire = gestionViewModel.lesSignalement[index].lesCommentairesSurCeSignalement.Last(); if (leNouveauCommentaire.noCommentaireSignalement == 0 && leNouveauCommentaire.commentaireSignalement != "" && leNouveauCommentaire.commentaireSignalement != null) { leNouveauCommentaire.dateCommentaire = DateTime.Now; db.CommentaireSignalements.Add(leNouveauCommentaire); //db.Entry(leNouveauCommentaire).State = EntityState.Added; db.SaveChanges(); } } } } TempData["gestionViewModelPOST"] = gestionViewModel; return(RedirectToAction("Gestion", new { page = page, tab = tab, vientDePagination = vientDePagination })); }
public ActionResult LoginAdmin(LoginViewModel model, string returnUrl) { ClubContactContext db = new ClubContactContext(); ViewBag.ReturnUrl = returnUrl; ViewBag.Title = "Se connecter administrateur"; if (!ModelState.IsValid) { return(View(model)); } if (!ValidateUserAdmin(model.Login, model.Password)) { ModelState.AddModelError(string.Empty, "Le nom d'utilisateur ou le mot de passe est incorrect."); return(View(model)); } // L'authentification est réussie, // injecter les informations utilisateur dans le cookie d'authentification : var userClaims = new List <Claim>(); try { //on trouve le membre CompteAdmin leCompte = db.CompteAdmins .Where(m => m.nomCompte.ToLower() == model.Login.ToLower()) .FirstOrDefault(); if (leCompte != null) { // Identifiant utilisateur : userClaims.Add(new Claim(ClaimTypes.Name, leCompte.nomCompte)); userClaims.Add(new Claim(ClaimTypes.NameIdentifier, leCompte.nomCompte)); } else { throw new Exception("Erreur: Le membre recherché est égale à null à la suite de la requête LINQ."); } //-------------------------création du cookie------------------------------------------- HttpCookie myCookie = new HttpCookie("Admin"); myCookie["niveauDePermission"] = leCompte.permission.nomNiveauDePermissionAdmin.ToString(); if (model.seSouvenirDeMoi) { myCookie.Expires = new System.DateTime(2020, 1, 1); } Response.Cookies.Add(myCookie); } catch (Exception e) { Exception exc = new Exception("Action: Login (POST), Contrôleur: Authentification ; Erreur potentielle: Requête LINQ n'a pas fonctionnée. ; login Membre : " + model.Login + ".", e); Elmah.ErrorSignal.FromCurrentContext().Raise(exc); ModelState.AddModelError(string.Empty, "Une erreur s'est produite lors de la connexion, veuillez réessayer."); return(View(model)); } // Rôles utilisateur : userClaims.AddRange(LoadRoles(model.Login, true)); var claimsIdentity = new ClaimsIdentity(userClaims, DefaultAuthenticationTypes.ApplicationCookie); var ctx = Request.GetOwinContext(); var authenticationManager = ctx.Authentication; var properties = new AuthenticationProperties { IsPersistent = model.seSouvenirDeMoi }; authenticationManager.SignIn(properties, claimsIdentity); //?? à revoir une fois que ça fonctionne, avec la prof // Rediriger vers l'url d'origine : if (Url.IsLocalUrl(ViewBag.ReturnUrl)) { return(Redirect(ViewBag.ReturnUrl)); } // Par défaut, rediriger vers la page d'accueil : return(RedirectToAction("Gestion", "Admin")); }
public ActionResult Send(Message message, int?noSignalementLie) { message.dateEnvoi = DateTime.Now; message.lu = false; message.dansCorbeilleCoteEnvoyeur = false; message.dansCorbeilleCoteReceveur = false; message.supprimerCoteEnvoyeur = false; message.supprimerCoteReceveur = false; bool messageVientDeAdmin = true; //Si c'est pas l'admin qui l'envoie, on s'en fout du principe de liste noire if (message.noMembreEnvoyeur != null) { messageVientDeAdmin = false; message.membreEnvoyeur = db.Membres.Where(m => m.noMembre == message.noMembreEnvoyeur).FirstOrDefault(); message.membreReceveur = db.Membres.Where(m => m.noMembre == message.noMembreReceveur).FirstOrDefault(); //Si le membre qui va recevoir le message a le membres qui l'a envoyé dans sa liste noire, alors le message sera automatiquement supprimé de son côté //Du côté envoyeur, il va voir comme s'il l'a envoyé if (message.membreReceveur.listeNoire.Contains(message.membreEnvoyeur)) { message.dansCorbeilleCoteReceveur = true; message.supprimerCoteReceveur = true; } } if (ModelState.IsValid) { try { db.Messages.Add(message); db.SaveChanges(); if (!messageVientDeAdmin) { return(RedirectToAction("Inbox", "Messagerie")); } else { if (noSignalementLie != null) { CompteAdmin adminConnectee = db.CompteAdmins.Where(m => m.nomCompte == User.Identity.Name).FirstOrDefault(); ActionTraitement actionTraitement = db.ActionTraitements.Where(m => m.nomActionTraitement == "Avertissement envoyé").FirstOrDefault(); Signalement leSignalement = db.Signalements.Where(m => m.noSignalement == noSignalementLie).FirstOrDefault(); leSignalement.dateSuiviNecessaire = DateTime.Now.AddDays(7); leSignalement.etatSignalementActuel = db.EtatSignalements.Where(m => m.nomEtatSignalement == "En suivi").FirstOrDefault(); leSignalement.adminQuiTraite = adminConnectee; TraitementSignalement nouveauTraitementFait = new TraitementSignalement(); nouveauTraitementFait.dateTraitementSignalement = DateTime.Now; nouveauTraitementFait.noSignalementLie = leSignalement.noSignalement; nouveauTraitementFait.signalementLie = leSignalement; nouveauTraitementFait.compteAdminTraiteur = adminConnectee; nouveauTraitementFait.noCompteAdminTraiteur = adminConnectee.noCompteAdmin; nouveauTraitementFait.messageLie = message; //nouveauTraitementFait.noMessageLie = message.noMessage; nouveauTraitementFait.actionTraitement = actionTraitement; nouveauTraitementFait.noActionTraitement = actionTraitement.noActionTraitement; db.TraitementSignalements.Add(nouveauTraitementFait); db.SaveChanges(); } return(RedirectToAction("Gestion", "Admin", new { tab = 2 })); } } catch (Exception e) { Dictionary <string, string> parametres = new Dictionary <string, string>() { { "messageContenu", message.contenuMessage.ToString() }, { "sujetMessage", message.sujetMessage.ToString() } }; throw LesUtilitaires.Utilitaires.templateException("Send", "Messagerie", "Ajout d'un message à la BD n'a pas fonctionné.", e, parametres, "post"); } } if (!messageVientDeAdmin) { int noMembreCo; verifierSiCookieNoMembreExiste(out noMembreCo); SetterViewDataListeContact(noMembreCo); } return(View("Send", message)); }