Compartilhar via


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

Microsoft.SharePoint namespace

RoleDefinitions