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 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99
|
public override void ItemAdded(SPItemEventProperties properties)
{
this.DisableEventFiring();
base.ItemAdded(properties);
SPWeb web = null;
try
{
web = new SPSite(properties.SiteId).OpenWeb(properties.RelativeWebUrl);
SPListItem item = web.Lists[properties.ListId].GetItemById(properties.ListItemId);
// première étape, casser l'héritage des droits
item.BreakRoleInheritance(false);
// seconde étape, assigner les nouveaux droits
#region Ajouter les droits Control total à l'auteur
String loginAdmin = properties.UserLoginName;
// SPFieldUserValue userAdminValue = (SPFieldUserValue)item["Créé par"];
SPUser userAdmin = web.Users[loginAdmin];
SPRoleDefinition roleDefAdmin = web.RoleDefinitions.GetByType(SPRoleType.Administrator);
SPRoleAssignment roleAssignementAdmin = new SPRoleAssignment(userAdmin);
roleAssignementAdmin.RoleDefinitionBindings.Add(roleDefAdmin);
item.RoleAssignments.Add(roleAssignementAdmin);
#endregion
#region Ajouter les droits de lecture pour les lecteurs
SPFieldUserValueCollection usersvaluesLecteurs = (SPFieldUserValueCollection)item["Lecteurs"];
for (int i = 0; i < usersvaluesLecteurs.Count; i++)
{
SPUser userLecteur = usersvaluesLecteurs[i].User;
//on ajoute le user sur le dossier
SPRoleDefinition roleDefLecteur = web.RoleDefinitions.GetByType(SPRoleType.Reader);
SPRoleAssignment roleAssignementLecteur = new SPRoleAssignment(userLecteur);
roleAssignementLecteur.RoleDefinitionBindings.Add(roleDefLecteur);
item.RoleAssignments.Add(roleAssignementLecteur);
}
#endregion
#region Ajouter les droits de modification pour les modificateurs
SPFieldUserValueCollection usersvaluesModificateurs = (SPFieldUserValueCollection)item["Modificateurs"];
for (int i = 0; i < usersvaluesModificateurs.Count; i++)
{
SPUser userModificateur = usersvaluesModificateurs[i].User;
//on ajoute le user sur le dossier
SPRoleDefinition roleDefModificateur = web.RoleDefinitions.GetByType(SPRoleType.Contributor);
SPRoleAssignment roleAssignementModificateur = new SPRoleAssignment(userModificateur);
roleAssignementModificateur.RoleDefinitionBindings.Add(roleDefModificateur);
item.RoleAssignments.Add(roleAssignementModificateur);
}
#endregion
item.Update();
this.EnableEventFiring();
}
catch (Exception ex)
{
properties.Cancel = true;
properties.ErrorMessage = "Erreur dans l'Event ItemAdded : " + ex.Message;
}
finally
{
if (web != null)
web.Dispose();
} |
Partager