SPRoleDefinitionCollection class
Representa uma coleção de objetos SPRoleDefinition definindo as definições de função que estão disponíveis para uso dentro do site.
Inheritance hierarchy
System.Object
Microsoft.SharePoint.Administration.SPAutoSerializingObject
Microsoft.SharePoint.SPBaseCollection
Microsoft.SharePoint.SPRoleDefinitionCollection
Namespace: Microsoft.SharePoint
Assembly: Microsoft.SharePoint (in Microsoft.SharePoint.dll)
Syntax
'Declaração
Public NotInheritable Class SPRoleDefinitionCollection _
Inherits SPBaseCollection
'Uso
Dim instance As SPRoleDefinitionCollection
public sealed class SPRoleDefinitionCollection : SPBaseCollection
Comentários
Definições de função podem ser herdadas do objeto pai SPWeb ou definidas localmente. Para obter definições de função exclusiva, você deve ter permissões exclusivas (atribuições de função), mas permissões exclusivas podem ter uma das definições de função exclusiva ou herdado.
Use a propriedade RoleDefinitions da classe SPWeb para obter a coleção de definições de função para um site da Web. Para criar uma definição de função, use um construtor da classe SPRoleDefinition para instanciar o objeto, definir propriedades no objeto e, em seguida, chamar o método Add() para adicionar a nova definição de função para a coleção.
Use um indexador para retornar um único item da coleção. Por exemplo, se a coleção for atribuída a uma variável chamada collRoleDefinitions, use collRoleDefinitions[index] em C# ou deindexde collRoleDefinitions() no Visual Basic, onde index é o número de índice do item na coleção ou uma seqüência de caracteres que contém o nome da definição de função.
Não há um método para recuperar as atribuições de função de usuário em um objeto de lista de SharePoint Foundation . No entanto, o código a seguir permite que você recupere a lista.
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
Examples
Depois de quebrar a herança de definição da função, o exemplo de código a seguir cria uma definição de função que inclui todos os direitos, exceto ManagePermissions; Ele também define valores de propriedade e adiciona a nova definição de função para a coleção de definições de função para um 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
Dica
Determinados objetos implementam a interface IDisposable , e você deve evitar reter esses objetos na memória depois que eles não são mais necessários. Para obter informações sobre boas práticas de codificação, consulte Disposing Objects.
Thread safety
Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.
Ver também
Referência
SPRoleDefinitionCollection members