IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Développement Sharepoint .NET Discussion :

[SP2010]modification droit depuis eventreceiver


Sujet :

Développement Sharepoint .NET

  1. #1
    Membre habitué
    Inscrit en
    Juin 2009
    Messages
    246
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 246
    Points : 194
    Points
    194
    Par défaut [SP2010]modification droit depuis eventreceiver
    Bonjour,

    je dois dans un processus d'approbation qui se fait sans workflow faire une modification de droit lors de l'approbation d'un item.
    j'ai voulu faire ça depuis un event receiver.

    je rencontre un probleme lors de l'update des role :

    L'exception System.UnauthorizedAccessException n'a pas été gérée par le code utilisateur
    Message=Attempted to perform an unauthorized operation.


    voici mon code (pour le moment je ne test qu'un seul cas ):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
     
     base.ItemUpdated(properties);
                using (DisabledEventsScope scope = new DisabledEventsScope())
                {
     
                    SPSecurity.RunWithElevatedPrivileges(delegate
                    {
                        using (SPSite Site = new SPSite(properties.WebUrl, SPUserToken.SystemAccount))
                        {
                            using (SPWeb thisweb = Site.OpenWeb())
                            {
                                SPRoleDefinition ecriture = thisweb.RoleDefinitions["Contribute (no delete no new)"];
                                thisweb.ValidateFormDigest();
                                thisweb.AllowUnsafeUpdates = true;
                                SPListItem Item = properties.ListItem;
                               switch ((string)Item["Workflow State"])
                                {
                                   case "Approved":
                                        (from SPRoleAssignment role in Item.RoleAssignments
                                         where role.RoleDefinitionBindings.Contains(ecriture)
                                         select role).ToList().ForEach(delegate(SPRoleAssignment role)
                                        {
                                            role.RoleDefinitionBindings.Remove(ecriture);
                                            role.Update();
                                        });
                                        Item.SystemUpdate();
                                        break;
                                    case "Rejected":
                                        break;
                                }
                                thisweb.AllowUnsafeUpdates = false;
                            }
                        }
                    });
                }
            }
    quelqu'un aurait-il une idée ?
    j'ai du code qui affecte des droit depuis un timerjob par contre qui fonctionne.

    ce code fonctionne si un admin du site fait la manip, mais pas si un contributeur le fait.

  2. #2
    Membre habitué
    Inscrit en
    Juin 2009
    Messages
    246
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 246
    Points : 194
    Points
    194
    Par défaut
    je me réponds à moi même au cas ou quelqu'un rencontrerait le même problème :

    j'ai fait l'erreur d'utiliser le properties.listItem.

    celui-ci etant instancié avant le runwithelevatedprivilege ça ne fonctionnait pas.

    en reinstanciant un nouvelle item depuis mon web je ne rencontre plus le problème.

    voilà .

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Modification droits tables
    Par cjacquel dans le forum VBA Access
    Réponses: 2
    Dernier message: 23/08/2016, 17h00
  2. Modification URL depuis un formulaire
    Par Louison dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 22/08/2008, 20h10
  3. Modif droits et owner en masse
    Par the java lover dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 18/06/2008, 14h21
  4. Programme d'installation modification droits
    Par butch dans le forum Windows
    Réponses: 1
    Dernier message: 29/02/2008, 20h49
  5. [Installation] Modification droits écriture répertoire temporaire
    Par freakstreet dans le forum CVS
    Réponses: 2
    Dernier message: 12/12/2007, 17h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo