none
modification droit sur item RRS feed

  • Question

  • bonsoir

    voila mon probleme, dans une bibliotheque tous les utilisateurs ont le droit d'ajouter, de modifier... des items
    un utilisateur X apres avoir créer un item X sera le seul a pouvoir le modifier, les autres utilisateurs auront un droit de lecture dessus.

    jusque  la cava je m'en sort en programmation mais je but ici :

    mon souci et lorsque un nouvel utilisateur arrive dans la bibliothèque, cette utilisateur va avoir
    des droits de creer et de modifier des items et par consequent il pourra modifier l'item X

    et la je vois pas comment faire pour eviter cela ?

    il y a t il moyen avant l'ouverture d'un item de verifier si l'utilisateur est le createur ,
    si oui 'jouvre le document lecture ecriture
    si non  : jouvrirai  l item en lecture seul (il y a t il une commande pour cela  ?)?

    votre avis !, cela vous semble ideal ?


    Marc
    mardi 2 mars 2010 17:40

Réponses

  • Bonjour,
    Le code est-il bien injecté au niveau de l'évènement ItemAdded ?

    Si oui quels sont les droits présents l'élément après sa création, et après l'ajout d'un nouvel utilisateur?
    Les droits de l'élément n'héritent plus des droits de la bibliothèque, il n'y a aucune raison que les droits d'éléments déjà créés changement après l'ajout d'un utilisateur sur la bibliothèque.

    Les droits sont-ils bien (dans les deux cas):
    - Créateur: full control
    - NT Authority\authentificated users: read
    et l'héritage de droits est-il bien cassé?
    • Marqué comme réponse Zombie13100_ lundi 8 mars 2010 14:47
    lundi 8 mars 2010 09:23

Toutes les réponses

  • Bonsoir Marc,
    un item dans une bibliothèque de document hérite par défaut les permissions de son parent ( bibliothèque ) Donc ce qu'il faut faire c'est annuler l'héritage des permissions :
    if (!item.HasUniqueRoleAssignments)
    {
        item.BreakRoleInheritance(false);
    }
    ensuite
    SPRoleDefinition role = item.Web.RoleDefinitions["Full Control"];
    SPRoleAssignment roleAssignment;
    SPUser oneUser = item.Web.SiteUsers[userlogin];
    roleAssignment = new SPRoleAssignment(oneUser);
    roleAssignment.RoleDefinitionBindings.Add(role);
    item.RoleAssignments.Add(roleAssignment);
    et finalement t'accordes un read only au authenticated users.Tu reprends le même code que tout à l'heure
    SPUser spUser = item.Web.AllUsers[@"NT AUTHORITY\authenticated users"];
    et le nouveau role est

    item.Web.RoleDefintitions.GetByType[SPRoleType.Reader]
    

    ensuite tu fais item.SystemUpdate(false)
    Sans oublier d'encapsuler ton code dans un blox RunWithElevatedPrivileges
    et le tour est joué.

    Tu peux même injecter ce code dans les SPEventReceivers de ta bibliothèque lors de l'ajout d'un nouvel élément.
    Hope this helps

    • Proposé comme réponse Marc TRAN mercredi 3 mars 2010 12:47
    mercredi 3 mars 2010 09:22
  • bonsoir

    merci pour toutes ces informations bien detaillées,

    mais cette procedure veut dire que je vais a chaque fois qu'un utilisateur
    est ajouté dans cette bibliotheque donc avec les droits d'ecriture

    lire tous les items et executer ce script ?


    Marc
    mercredi 3 mars 2010 17:21
  • Ce code peut être injecté dans l'évènement ItemAdded de ta bibliothèque.

    Pour le faire tu peux suivre ce tutoriel (classe qui hérite de SPItemEventReceiver, surcharge de ItemAdded), il y a aussi un exemple de feature permettant d'attacher cette classe à ta bibliothèque)
    http://dnt91.developpez.com/tutoriel/sharepoint/eventsreceivers/
    jeudi 4 mars 2010 08:38
  • bonsoir

    oui mais le probleme est comment eviter d'executer
    ce code sur tous les items de la liste a chaque ajout d'un nouvel
    utilisateur ?


    Marc
    vendredi 5 mars 2010 17:06
  • Bonjour,
    Le code est-il bien injecté au niveau de l'évènement ItemAdded ?

    Si oui quels sont les droits présents l'élément après sa création, et après l'ajout d'un nouvel utilisateur?
    Les droits de l'élément n'héritent plus des droits de la bibliothèque, il n'y a aucune raison que les droits d'éléments déjà créés changement après l'ajout d'un utilisateur sur la bibliothèque.

    Les droits sont-ils bien (dans les deux cas):
    - Créateur: full control
    - NT Authority\authentificated users: read
    et l'héritage de droits est-il bien cassé?
    • Marqué comme réponse Zombie13100_ lundi 8 mars 2010 14:47
    lundi 8 mars 2010 09:23
  • bonjour

    autant pour moi j'ai mal interpreté  l'utilité de cassé l'heritage des
    droits , et je changé les droits apres chaque ajout dans la bibliotheque
    maintenant cest ok

    merci pour votre info,
    Marc
    lundi 8 mars 2010 14:47