пятница, 5 октября 2007 г.

Права в WSS3

В блоге Joel Oleson появилось четкое объяснение, какие классы нужно использовать при раздаче прав:
SharePoint Roles Assignments.

Вкратце - права раздаются с помошью Role Assignments: SPRoleDefinition задаёт RoleDefinition с правами на SPWeb, SPList или SPListItem.

SPWeb site = SPContext.Current.Site.AllWebs["Site_Name/Subsite_Name"]; //определяем роль с правами участника на нужном узле

SPRoleDefinitionCollection roles = site.RoleDefinitions;

SPRoleDefinition roleDefinition = roles["Definition_Name"];

roleDefinition.BasePermissions = SPBasePermissions.AddListItems |

    SPBasePermissions.BrowseDirectories |

    SPBasePermissions.EditListItems |

    SPBasePermissions.DeleteListItems |

    SPBasePermissions.AddDelPrivateWebParts;

roleDefinition.Update();



SPRoleAssignment используется для добавления пользователя к роли.

SPWeb site = SPContext.Current.Site.AllWebs["Site_Name/Subsite_Name"]; //добавляем пользователя к роли

SPRoleDefinitionCollection roleDefinitions = site.RoleDefinitions;

SPRoleAssignmentCollection roleAssignments = site.RoleAssignments;

SPRoleAssignment roleAssignment = new SPRoleAssignment("DOMAIN\\User_Alias", "User_Alias@Somewhere.com", "Display_Name", "Notes");

SPRoleDefinitionBindingCollection roleDefBindings = roleAssignment.RoleDefinitionBindings;

roleDefBindings.Add(roleDefinitions["Role_Definition_Name"]);

roleAssignments.Add(roleAssignment);



Проверять, есть ли у пользователя нужные права на узел, список, или элемент списка, нужно методом DoesUserHavePermissions(SPBasePermissions permissionMask) соответсвующего класса - SPWeb, SPList или SPListItem.

Комментариев нет: