SharePoint. How to...

by DenisM 19. ноября 2010 05:38

Как программно управлять правами (site/list/item) в SharePoint?

  • Добавление прав на документа для определенного пользователя (permissionLevel - уровень разрешений на сервере (Полный доступ, Ограниченный доступ, чтение и т.п.)):

public static void CreatePermissions(SPWeb theWeb, SPListItem ListItem, string loginName, string roleName, string permissionLevel)
{

try
{
theWeb = new SPSite(theWeb.Site.ID).OpenWeb(theWeb.ID);
theWeb.AllowUnsafeUpdates = true;

ListItem = theWeb.Lists[ListItem.ParentList.ID].GetItemById(ListItem.ID);

SPRoleAssignment roleAssignment = new SPRoleAssignment(loginName, "", roleName, "");

SPRoleDefinition RoleDefinition = theWeb.RoleDefinitions[permissionLevel];

if (!roleAssignment.RoleDefinitionBindings.Contains(RoleDefinition))
roleAssignment.RoleDefinitionBindings.Add(RoleDefinition);

//Check inheritance
if (!ListItem.HasUniqueRoleAssignments)
{
ListItem.BreakRoleInheritance(false);
}

ListItem.RoleAssignments.Add(roleAssignment);

ListItem.Update();
}
catch (Exception exc)
{
}

}

  • Добавление прав на документа для определнной группы:

public static void CreatePermissions(SPWeb theWeb, SPListItem ListItem, string groupName, string permissionLevel)
        {
            try
            {
                theWeb = new SPSite(theWeb.Site.ID).OpenWeb(theWeb.ID);
                theWeb.AllowUnsafeUpdates = true;

                SPGroup group = theWeb.Groups[groupName];
               
                SPRoleAssignment roleAssignment = new SPRoleAssignment(group);
                SPRoleDefinition RoleDefinition = theWeb.RoleDefinitions[permissionLevel];

                if (!roleAssignment.RoleDefinitionBindings.Contains(RoleDefinition))
                    roleAssignment.RoleDefinitionBindings.Add(RoleDefinition);
               
                //Check inheritance
                ListItem = theWeb.Lists[ListItem.ParentList.ID].GetItemById(ListItem.ID);
                if (!ListItem.HasUniqueRoleAssignments)
                    ListItem.BreakRoleInheritance(false);

                ListItem.RoleAssignments.Add(group);
                ListItem.Update();

            }
            catch (Exception exc)
            {
            }
        }

  • Права на группу AD для объекта списка

 public static void CreatePermissions(SPWeb theWeb, SPListItem ListItem, string groupName, string domainName, string permissionLevel)

        {

            try

            {

                theWeb = new SPSite(theWeb.Site.ID).OpenWeb(theWeb.ID);

                theWeb.AllowUnsafeUpdates = true;

                groupName = (domainName.Trim() == "" ? "" : domainName.Trim() + "\\") + groupName;

 

                SPPrincipal oSPPrincipal;

                oSPPrincipal = theWeb.EnsureUser(groupName);

 

                SPRoleAssignment roleAssignment = new SPRoleAssignment(oSPPrincipal);

                SPRoleDefinition RoleDefinition = theWeb.RoleDefinitions[permissionLevel];

 

                if (!roleAssignment.RoleDefinitionBindings.Contains(RoleDefinition))

                    roleAssignment.RoleDefinitionBindings.Add(RoleDefinition);

                

                //Check inheritance

                ListItem = theWeb.Lists[ListItem.ParentList.ID].GetItemById(ListItem.ID);

                if (!ListItem.HasUniqueRoleAssignments)

                    ListItem.BreakRoleInheritance(false);

 

                ListItem.RoleAssignments.Add(oSPPrincipal);

                ListItem.Update();

 

            }

            catch (Exception exc)

            {

            }

        } 

 

Как узнать запущен ли рабочий процес над документом?

bool WorkFlowStarted(SPListItem document, Guid WorkFlowId)
        {
            foreach (SPWorkflow workflow in document.Workflows)
            {
                if (workflow.ParentAssociation.BaseTemplate.Id == WorkFlowId&&
                    (workflow.InternalState & SPWorkflowState.Running) == SPWorkflowState.Running)
                {
                    return true;
                }
            }
            return false;
        }

 

Используемые материалы:

  1. http://kwizcom.blogspot.com/2007/07/manage-sitelistitem-permissions-in.html 
  2. http://msdn.microsoft.com/ru-ru/library/microsoft.sharepoint.spprincipal%28office.12%29.aspx
  3. http://msdn.microsoft.com/ru-ru/library/microsoft.sharepoint.sprole%28office.12%29.aspx
  4. http://msdn.microsoft.com/ru-ru/library/microsoft.sharepoint.sproleassignment%28office.12%29.aspx

Оценок нет

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags:

Комментарии закрыты

О нас

Это блог компании Инлайн. Мы занимаемся разработкой сайтов, корпоративных порталов и корпоративных информационных систем на основе новейших технологии Microsoft  - ASP.NET, SharePoint и Silverlight. А в этом блоге мы размещаем самые последние новости в области разработке для web.

Облако тегов