1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82
|
Public Shared Sub SetCookie(ByVal user As CustomPrincipal, ByVal strDebugUserName As String, ByVal dblCookieExpires As Double)
Dim userInformation As String = String.Empty
' Si on veut utiliser un trigramme de DEBUG afin de se substituer
' à l'utilisateur d'origine, on va redéfinir "user"
If Not strDebugUserName = NOT_DEBUG_USER_NAME Then
'Remplacement du Directory Helper
Dim u As ADUser = New ADUser
u.UserAccountName = strDebugUserName
u.Domaine = user.Domaine
If (u.FindUser) Then
user.UserName = u.UserAccountName
user.FirstName = u.FirstName
user.LastName = u.LastName
user.Service = u.Service
user.Departement = u.Departement
user.Entity = u.Entite
user.Mail = u.Mail
user.GetADGroups = u.Groups
user.Groups.Load(u.UserAccountName, _appID)
user.Roles = Role.GetRoles(user, _appID)
If user.Roles.Count > 0 Then
user.Grant = True
Else
user.Grant = False
System.Web.HttpContext.Current.User = user
End If
user.Grant = True
System.Web.HttpContext.Current.User = user
End If
If user.FirstName = String.Empty Then
user.FirstName = "Inconnu"
End If
End If
userInformation = "ID=" & user.UserID & ";" & _
"FN=" & user.FirstName & ";" & _
"LN=" & user.LastName & ";" & _
"UN=" & user.UserName & ";" & _
"GP=" & user.GetGroupesByID() & "," & user.GetGroupesByLabel() & "," & user.GetGroupeRoleByID & ";" & _
"RO=" & user.GetRolesByID() & "," & user.GetRolesByLabel() & ";" & _
"RI=" & user.GetCollectionRoles.Rights & ";" & _
"AL=" & user.GetCollectionRoles.AccessLevel & ";" & _
"SI=" & user.Service & ";" & _
"DP=" & user.Departement & ";" & _
"EN=" & user.Entity & ";" & _
"MA=" & user.Mail
HttpContext.Current.Response.Write("UserInformation 1: " + userInformation & "<br>")
' Create a cookie authentication ticket.
Dim ticket As FormsAuthenticationTicket = New FormsAuthenticationTicket( _
1, _
user.UserName, _
DateTime.Now, _
DateTime.Now.AddMinutes(dblCookieExpires), _
True, _
userInformation)
' Cryptage du ticket
Dim cookieStr As String = FormsAuthentication.Encrypt(ticket)
' Envoie le cookie au client
Dim clientCookie As System.Web.HttpCookie = New System.Web.HttpCookie(_cookieName, cookieStr)
With clientCookie
.Path = "/"
.Expires = DateTime.Now.AddMinutes(dblCookieExpires)
End With
HttpContext.Current.Response.Cookies.Add(clientCookie)
' Ajoute un objet CustomPrincipal a la requete contenant l'identité de l'utilisateur, son id
' ses roles et ses groupes
HttpContext.Current.User = user
End Sub |
Partager