Bonjour,
D'une part, je vais essayer d'être le plus clair possible, j'ai obtenu le job dans lequel je suis sans connaitre Sharepoint, l'ensemble de mes connaissances est du à de l'autoformation effectuée sur les derniers mois. Donc veuillez m'excuser si je ne suis pas des plus précis sur les termes.
Dans l'entreprise ou je me trouve nous avons fait une Migration de Sharepoint 2010 vers Sharepoint 2013, aucun souci sur les migration sauf sur une feature que mon prédécesseur avait développé spécifiquement pour une collection de site.
Cette feature permet à partir d'un formulaire de première liste, de supprimer l'héritage sur l’élément crée et d'ajouter dans les autorisations des (3) groupes avec des rôles.
L'un des groupes est défini dans une colonne Prestataire qui est de type recherche d'une seconde liste, cette liste d'éléments à son équivalent en groupe Sharepoint, seuls les utilisateurs présents dans les groupes correspondant ont un visuel sur l’élément.
Ainsi les utilisateurs qui remplissent le formulaire de ma première liste dans le champs Prestataire, il ne peuvent que choisir l’élément ou le groupe qu'il appartient est en lecture dessus
Le probleme maintenant sous Sharepoint 2010 cette feature fonctionnait tres bien, mais lorsque j'ai réinstallé la solution cela ne fonctionnait plus.
Maintenant lorsqu'un utilisateurs ajoute un élément à la première liste celui-ci voit bien l’élément avec l'essemble des colonnes remplit mais les autres utilisateurs d'autre groupe voit aussi l’élément sauf ce qui figure dans la colonne qui doit définir les groupes
Voici le code de l'eventReceiver actuellement
J’espère avoir été assez clair et Merci d'avance de votre aide
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60 public override void ItemAdded(SPItemEventProperties properties) { base.ItemAdded(properties); // Elevation des droits SPSecurity.RunWithElevatedPrivileges(delegate() { try { SPWeb web = new SPSite(properties.SiteId).OpenWeb(properties.RelativeWebUrl); SPListItem item = web.Lists[properties.ListId].GetItemById(properties.ListItemId); // Annuler l'héritage par défaut if (!item.HasUniqueRoleAssignments) { item.BreakRoleInheritance(true); } // Supprimer tous les droits while (item.RoleAssignments.Count > 0) { item.RoleAssignments.Remove(0); } string group = item["Prestataire"].ToString(); char[] param = new char[] { '#' }; string[] tabgroup = group.Split(param); SPGroup spgroup; //Creation du SPGroup en fonction du group du champ "Prestataire" spgroup = web.SiteGroups[tabgroup[1]]; //Création du role (contributeur) SPRoleAssignment newRoleAssignment = new SPRoleAssignment(spgroup); newRoleAssignment.RoleDefinitionBindings.Add(web.RoleDefinitions.GetByType(SPRoleType.Contributor)); // Affectation du role item.RoleAssignments.Add(newRoleAssignment); string groupcg = "Groupe Decision"; SPGroup spgroupcg = web.SiteGroups[groupcg]; SPRoleAssignment newRoleAssignmentcg = new SPRoleAssignment(spgroupcg); newRoleAssignmentcg.RoleDefinitionBindings.Add(web.RoleDefinitions.GetByType(SPRoleType.Reader)); item.RoleAssignments.Add(newRoleAssignmentcg); string groupcg2 = "Groupe Contribution"; SPGroup spgroupcg2 = web.SiteGroups[groupcg2]; SPRoleAssignment newRoleAssignmentcg2 = new SPRoleAssignment(spgroupcg2); newRoleAssignmentcg2.RoleDefinitionBindings.Add(web.RoleDefinitions.GetByType(SPRoleType.Contributor)); item.RoleAssignments.Add(newRoleAssignmentcg2); item.Update(); } catch (Exception ex) { properties.Cancel = true; properties.ErrorMessage = "Erreur dans l'Event ItemAdded : " + ex.Message; } }); }
Partager