FicheCollege.aspx.cs 3.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. using System;
  2. using System.Data;
  3. using System.Data.OleDb;
  4. using System.Configuration;
  5. using System.Collections;
  6. using System.IO;
  7. using System.Web;
  8. using System.Web.Security;
  9. using System.Web.UI;
  10. using System.Web.UI.WebControls;
  11. using System.Web.UI.WebControls.WebParts;
  12. using System.Web.UI.HtmlControls;
  13. using System.Xml;
  14. using CG67.FicheCollege.Service;
  15. using CG67.FicheCollege.Domaine;
  16. using System.Collections.Generic;
  17. using System.DirectoryServices;
  18. using System.Linq;
  19. using System.Text.RegularExpressions;
  20. //using System.DirectoryServices.AccountManagement;
  21. namespace CG67.FicheCollege
  22. {
  23. public partial class FicheCollege : System.Web.UI.Page
  24. {
  25. public string user;
  26. protected void Page_Load(object sender, EventArgs e)
  27. {
  28. //Intialisation des paramètres
  29. //l'année en cours est déclarée dans le fichier de configuration
  30. int annee = int.Parse(ConfigurationManager.AppSettings["AnneeEnCours"]);
  31. HttpContext.Current.Session["Annee"] = annee;
  32. HttpContext.Current.Session["AnneeMoins1"] = annee - 1;
  33. HttpContext.Current.Session["RNE"] = Request["RNE"];
  34. string domain = "DC=cg67,DC=fr";
  35. using (var rootEntry = new DirectoryEntry("LDAP://CG67/" + domain, null, null, AuthenticationTypes.Secure))
  36. {
  37. using (var directorySearcher = new DirectorySearcher(rootEntry, String.Format("(sAMAccountName={0})", HttpContext.Current.User.Identity.Name.Replace("CG67\\",""))))
  38. {
  39. var searchResult = directorySearcher.FindOne();
  40. if (searchResult != null)
  41. {
  42. using (var userEntry = searchResult.GetDirectoryEntry())
  43. {
  44. string cnUser = userEntry.Properties["distinguishedName"].Value.ToString();
  45. List<string> Groups = new List<string>();
  46. Groups = cnUser.Split(new[] {"," } , StringSplitOptions.None).ToList();
  47. var rx = new Regex("OU=[AEFGHIJKLMP]{1}\\-[A-Z]{3,5}", RegexOptions.IgnoreCase);
  48. user = "AUTRE";
  49. var mission = Groups.Where(x => rx.IsMatch(x)).FirstOrDefault();
  50. if (!string.IsNullOrEmpty(mission)) user = mission.Replace("OU=","");
  51. if (user == "P-CAB")
  52. {
  53. var elu = Groups.Where(x => x.Contains("OU=P2-ELUS")).FirstOrDefault();
  54. if (!string.IsNullOrEmpty(elu)) user = elu.Replace("OU=", "");
  55. }
  56. }
  57. }
  58. }
  59. }
  60. //Traitement
  61. XmlDocument entete = new XmlDocument();
  62. entete.Load(Server.MapPath(@"~/xml/entete.xml"));
  63. try
  64. {
  65. //modif car si code rne null provoque une erreur
  66. XmlNode xmlFicheCollege = ServiceFiche.GetFicheCollege(Session["RNE"].ToString(), int.Parse(Session["annee"].ToString()));
  67. this.Title = xmlFicheCollege.SelectSingleNode("college/Etablissement/NomCollegePourPresentation").InnerText;
  68. xmlFicheCollege.SelectSingleNode("college").InnerXml += entete.DocumentElement.OuterXml;
  69. this.Xml1.DocumentContent = xmlFicheCollege.OuterXml;
  70. this.DataBind();
  71. }
  72. catch (NullReferenceException nre)
  73. {
  74. Console.WriteLine("Erreur de pointeur : null", nre.Message);
  75. }
  76. }
  77. }
  78. }