Acces.cs 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. using System.Collections.Generic;
  2. using System.Linq;
  3. using System.Web.Mvc;
  4. using System;
  5. using System.IO;
  6. using CD67.FicheCollege.Entity;
  7. using CD67.FicheCollege.MVC.Models;
  8. using System.Web;
  9. using CD67.FicheCollege.MVC.Internal;
  10. namespace CD67.PIMP.MVC.Internal
  11. {
  12. public class Acces : ActionFilterAttribute
  13. {
  14. private Entities db = new Entities();
  15. public string groupes { get; set; }
  16. public override void OnActionExecuting(ActionExecutingContext filterContext)
  17. {
  18. UtilisateurConnecte uc = UtilisateurConnecteFactory.getUtilisateurConnecte();
  19. if (string.IsNullOrEmpty(groupes)|groupes == "*")
  20. {
  21. base.OnActionExecuting(filterContext);
  22. return;
  23. }
  24. List<string> groupe_names = groupes.Split(',').ToList();
  25. if(!groupe_names.Contains("Admin"))
  26. {
  27. groupe_names.Insert(0, "Admin");
  28. }
  29. foreach (string groupe_name in groupe_names)
  30. {
  31. try
  32. {
  33. int groupe_id = db.Groupes.Where(g => g.Nom == groupe_name).First().Id;
  34. if (db.Utilisateurs.Any(u => u.Sid == uc.sid && u.GroupeId == groupe_id))
  35. {
  36. base.OnActionExecuting(filterContext);
  37. return;
  38. }
  39. }
  40. catch (System.InvalidOperationException)
  41. {
  42. continue;
  43. }
  44. }
  45. filterContext.Result = new RedirectToRouteResult(new System.Web.Routing.RouteValueDictionary(new { controller = "Home", action = "Unauthorized" }));
  46. }
  47. }
  48. }