OVH Cloud OVH Cloud

[WSS 2003] Passe-droit avec PermissionMask

2 réponses
Avatar
sda
Bonjour,

J'ai un portail WSS qui comprend un site principal et plusieurs sites
d'équipes.

J'ai l'utilisateur courant A de ma webpart qui est "lecteur" pour le
site principal mais qui n'a pas de droits sous les sous-sites. Donc,
l'instruction ci-dessous dans ma webPart entraine, pour mon utilisateur A,
une fenêtre d'authentification:

SPSite siteCollection = SPControl.GetContextSite(Context);
SPWebCollection sites = siteCollection.AllWebs;

Ma question, comment faire dans ma webpart, et dans son contexte
seulement, pour faire passer mon utilisateur A comme un utilisateur avec les
privilèges nécessaires ?

Je sais que je dois utiliser quelque chose qui ressemble à çà pour
changer les droits:

foreach(SPWeb spWeb in siteCollection.AllWebs)
spWeb.Permissions[spMember].PermissionMask = SPRights.FullMask;

Mais, pour effectuer cette opération, je ne sais pas faire croire à WSS
que je suis un utilisateur avec privilège :-)

Une suggestion ?

Merci

Et bon WE

SDA

2 réponses

Avatar
Renaud COMTE [MVP]
Vous vous posez une mauvaise question

Vous chechez a impersonner plutot qu'a utiliser un code applicatif plus ouvert

AllWebs est une collection réservé aux role admin
Par contren SPWEB : GetSubwebsForCurrentUser() lui marche TRES bien, il
suffit d'iterer ensuite les sous sites

Voila

Renaud COMTE []

"sda" a écrit :

Bonjour,

J'ai un portail WSS qui comprend un site principal et plusieurs sites
d'équipes.

J'ai l'utilisateur courant A de ma webpart qui est "lecteur" pour le
site principal mais qui n'a pas de droits sous les sous-sites. Donc,
l'instruction ci-dessous dans ma webPart entraine, pour mon utilisateur A,
une fenêtre d'authentification:

SPSite siteCollection = SPControl.GetContextSite(Context);
SPWebCollection sites = siteCollection.AllWebs;

Ma question, comment faire dans ma webpart, et dans son contexte
seulement, pour faire passer mon utilisateur A comme un utilisateur avec les
privilèges nécessaires ?

Je sais que je dois utiliser quelque chose qui ressemble à çà pour
changer les droits:

foreach(SPWeb spWeb in siteCollection.AllWebs)
spWeb.Permissions[spMember].PermissionMask = SPRights.FullMask;

Mais, pour effectuer cette opération, je ne sais pas faire croire à WSS
que je suis un utilisateur avec privilège :-)

Une suggestion ?

Merci

Et bon WE

SDA






Avatar
sda
Excepté que la collection retournée ne concerne que les sous-sites pour
lesquels l'utilisateur courant est un membre.
D'ou la nécéssité d'impersonnifier avec un compte avec privilège pour avoir
accès à la la liste de tous les sous-sites. Et pour cela vous m'avez donné
la réponse dans le message "[WSS 2003] Méthode pour aggréger du contenu via
une WebPart"

Merci

Cdt,

SDA

"Renaud COMTE [MVP]" a écrit dans le
message de news:
Vous vous posez une mauvaise question

Vous chechez a impersonner plutot qu'a utiliser un code applicatif plus
ouvert

AllWebs est une collection réservé aux role admin
Par contren SPWEB : GetSubwebsForCurrentUser() lui marche TRES bien, il
suffit d'iterer ensuite les sous sites

Voila

Renaud COMTE []

"sda" a écrit :

Bonjour,

J'ai un portail WSS qui comprend un site principal et plusieurs sites
d'équipes.

J'ai l'utilisateur courant A de ma webpart qui est "lecteur" pour le
site principal mais qui n'a pas de droits sous les sous-sites. Donc,
l'instruction ci-dessous dans ma webPart entraine, pour mon utilisateur
A,
une fenêtre d'authentification:

SPSite siteCollection = SPControl.GetContextSite(Context);
SPWebCollection sites = siteCollection.AllWebs;

Ma question, comment faire dans ma webpart, et dans son contexte
seulement, pour faire passer mon utilisateur A comme un utilisateur avec
les
privilèges nécessaires ?

Je sais que je dois utiliser quelque chose qui ressemble à çà pour
changer les droits:

foreach(SPWeb spWeb in siteCollection.AllWebs)
spWeb.Permissions[spMember].PermissionMask = SPRights.FullMask;

Mais, pour effectuer cette opération, je ne sais pas faire croire à
WSS
que je suis un utilisateur avec privilège :-)

Une suggestion ?

Merci

Et bon WE

SDA