SPRoleDefinitionCollection - Classe
Représente une collection d'objets SPRoleDefinition définissant les définitions de rôles qui sont disponibles pour une utilisation dans le site Web.
Hiérarchie d’héritage
System.Object
Microsoft.SharePoint.Administration.SPAutoSerializingObject
Microsoft.SharePoint.SPBaseCollection
Microsoft.SharePoint.SPRoleDefinitionCollection
Espace de noms : Microsoft.SharePoint
Assembly : Microsoft.SharePoint (dans Microsoft.SharePoint.dll)
Syntaxe
'Déclaration
Public NotInheritable Class SPRoleDefinitionCollection _
Inherits SPBaseCollection
'Utilisation
Dim instance As SPRoleDefinitionCollection
public sealed class SPRoleDefinitionCollection : SPBaseCollection
Remarques
Définitions de rôle peuvent héritées de l'objet SPWeb parent ou définies localement. Afin de disposer des définitions de rôles uniques, vous devez disposer des autorisations uniques (affectations de rôles), mais les autorisations uniques peuvent avoir des définitions de rôle hérité ou unique.
Utilisez la propriété RoleDefinitions de la classe SPWeb pour obtenir la collection de définitions de rôles pour un site Web. Pour créer une définition de rôle, utilisez un constructeur de la classe SPRoleDefinition pour instancier l'objet et définir des propriétés sur l'objet puis appelez la méthode Add() pour ajouter la nouvelle définition de rôle à la collection.
Utiliser un indexeur pour renvoyer un seul élément de la collection. Par exemple, si la collection est assignée à une variable nommée collRoleDefinitions, utilisez collRoleDefinitions[index] dans C# ou collRoleDefinitions(index) dans Visual Basic, où index est le numéro d'index de l'élément dans la collection ou une chaîne qui contient le nom de la définition de rôle.
Il n'est pas une méthode pour récupérer des attributions de rôle d'utilisateur sur un objet de liste SharePoint Foundation . Toutefois, le code ci-dessous vous permet de récupérer cette liste.
private void AddListRoleAssignmentNodes(SPList objList)
{
try
{
if (objList.HasUniqueRoleAssignments)
{
SPRoleAssignmentCollection oRoleAssignments =
objList.RoleAssignments;
foreach (SPRoleAssignment oRoleAssignment in oRoleAssignments)
{
SPPrincipal oPrincipal = oRoleAssignment.Member;
try
{
// Retrieve users having explicit permissions on the list
SPUser oRoleUser = (SPUser)oPrincipal;
}
catch (Exception ex)
{
string msg = ex.Message;
}
try
{
// Retrieve user groups having permissions on the list
SPGroup oRoleGroup = (SPGroup)oPrincipal;
if (oRoleGroup.Users.Count > 0)
{
string strGroupName = oRoleGroup.Name;
// Add code here to retrieve Users inside this User-Group
}
}
catch (Exception ex)
{
string msg = ex.Message;
}
}
}
}
catch (Exception ex)
{
string msg = ex.Message;
}
}
Private Sub AddListRoleAssignmentNodes(ByVal objList As SPList)
Try
If objList.HasUniqueRoleAssignments Then
Dim oRoleAssignments As SPRoleAssignmentCollection = objList.RoleAssignments
For Each oRoleAssignment As SPRoleAssignment In oRoleAssignments
Dim oPrincipal As SPPrincipal = oRoleAssignment.Member
Try
' Retrieve users having explicit permissions on the list
Dim oRoleUser As SPUser = CType(oPrincipal, SPUser)
Catch ex As Exception
Dim msg As String = ex.Message
End Try
Try
' Retrieve user groups having permissions on the list
Dim oRoleGroup As SPGroup = CType(oPrincipal, SPGroup)
If oRoleGroup.Users.Count > 0 Then
Dim strGroupName As String = oRoleGroup.Name
' Add code here to retrieve Users inside this User-Group
End If
Catch ex As Exception
Dim msg As String = ex.Message
End Try
Next oRoleAssignment
End If
Catch ex As Exception
Dim msg As String = ex.Message
End Try
End Sub
Exemples
Après le blocage de l'héritage de définition de rôle, l'exemple de code suivant crée une définition de rôle qui inclut tous les droits à l'exception de ManagePermissions; aussi, il définit les valeurs de propriété et ajoute la nouvelle définition de rôle à la collection de définitions de rôles pour un site.
string strRoleName = "Custom Role Definition";
using (SPSite oSiteCollection = new SPSite("http://Server_Name/Subsite1"))
{
using (SPWeb oWebsite = oSiteCollection.OpenWeb())
{
if (!oWebsite.HasUniqueRoleDefinitions)
{
oWebsite.RoleDefinitions.BreakInheritance(true, true);
}
SPRoleDefinition oRoleDefinition = new SPRoleDefinition();
oRoleDefinition.Name = strRoleName;
oRoleDefinition.Description = "A role definition with all rights except ManagePermissions";
oRoleDefinition.BasePermissions = SPBasePermissions.FullMask ^ SPBasePermissions.ManagePermissions;
oWebsite.RoleDefinitions.Add(oRoleDefinition);
}
}
Dim strRoleName As String = "Custom Role Definition"
Using oSiteCollection As New SPSite("http://Server_Name/Subsite1")
Using oWebsite As SPWeb = oSiteCollection.OpenWeb()
If Not oWebsite.HasUniqueRoleDefinitions Then
oWebsite.RoleDefinitions.BreakInheritance(True, True)
End If
Dim oRoleDefinition As New SPRoleDefinition()
oRoleDefinition.Name = strRoleName
oRoleDefinition.Description = "A role definition with all rights except ManagePermissions"
oRoleDefinition.BasePermissions = SPBasePermissions.FullMask Xor SPBasePermissions.ManagePermissions
oWebsite.RoleDefinitions.Add(oRoleDefinition)
End Using
End Using
Notes
Certains objets implémentent l'interface IDisposable , et vous devez éviter de conserver ces objets dans la mémoire après que qu'ils ne sont plus nécessaires. Pour plus d'informations sur les bonnes pratiques de codage, consultez Disposing Objects.
Cohérence de thread
Tous les membres statique (Partagé dans Visual Basic)s publics de ce type sont thread-safe. Cela n’est pas garanti pour les membres d’instance.
Voir aussi
Référence
SPRoleDefinitionCollection - Membres