Как получить текущие группы пользователей в мох?

Я надеюсь, что вы можете решить мою проблему.

Я пытаюсь установить pemrissions уровня элемента для списка sharepoint и библиотек документов, используя обработчик событий, но я не смог этого сделать. Пожалуйста, помогите мне, это - мой код. Мне нужно назначить разрешения для элемента на основе имени пользователя входа. Для какой группы он принадлежит. Я не могу получить группы текущих пользователей. это мой код

public override void ItemAdded(SPItemEventProperties properties)
{
  using (SPSite _site = new SPSite(properties.WebUrl))
  {
    using (SPWeb spWeb = _site.OpenWeb(properties.RelativeWebUrl))
    {
      SPUser currentUser = spWeb.CurrentUser;
      SPListItem listItem = properties.ListItem;

      listItem.BreakRoleInheritance(true);
      SPGroupCollection spgroup = currentUser.Groups;

      foreach (SPGroup group in spgroup)
      {
        SPRoleAssignment roleAssignment = new SPRoleAssignment((SPPrincipal)group);
        SPRoleDefinition roleDefinition = spWeb.RoleDefinitions.GetByType(SPRoleType.Contributor);

        roleAssignment.RoleDefinitionBindings.Add(roleDefinition);

        listItem.RoleAssignments.Add(roleAssignment);

        spWeb.AllowUnsafeUpdates = true;

        listItem.Update();

        spWeb.AllowUnsafeUpdates = false;
      }
    }
  }
}

1 ответ

Попробуй это:

public override void ItemAdded(SPItemEventProperties properties)
{
  // run the code impersonating the web application account, this works better than the regular RunWithElevatedPrivileges
  using (var site = new SPSite(properties.SiteId, properties.ListItem.ParentList.ParentWeb.Site.SystemAccount.UserToken))
  {
    using (var web = site.OpenWeb(properties.RelativeWebUrl))
    {
      web.AllowUnsafeUpdates = true;
      var item = web.Lists[properties.ListId].GetItemById(properties.ListItemId);

      item.BreakRoleInheritance(false);

      foreach (SPGroup group in web.CurrentUser.Groups)
      {
        var assignment = item.Web.RoleAssignments.GetAssignmentByPrincipal(group);
        var roleDefinition = web.RoleDefinitions.GetByType(SPRoleType.Contributor);

        assignment.RoleDefinitionBindings.Add(roleDefinition);
        item.RoleAssignments.Add(assignment);
      }

      DisableEventFiring();
      item.SystemUpdate(false);
      EnableEventFiring();
      web.AllowUnsafeUpdates = false;
    }
  }
}
Другие вопросы по тегам