Sharepoint: Проверьте, является ли пользователь членом группы

Если вы хотите просмотреть подробную информацию о теге SOMETAG (тэггер, дата и т. Д.), Хеш коммита, на который он указывает, и немного информации о коммите, но без полной разницы, попробуйте

git show --name-status SOMETAG

Пример вывода:

tag SOMETAG
Tagger: ....
Date:   Thu Jan 26 17:40:53 2017 +0100

 .... tag message .......

commit 9f00ce27c924c7e972e96be7392918b826a3fad9
Author: .............
Date:   Thu Jan 26 17:38:35 2017 +0100

 .... commit message .......

..... list of changed files with their change-status (like git log --name-status) .....
15
задан ekad 31 December 2017 в 03:47
поделиться

4 ответа

Я сделал это, написав метод расширения с использованием LINQ. SPGroup наследуется от SPPrincipal, поэтому вы должны иметь возможность передать его в параметр Principal :

public static bool Contains(this SPRoleAssignmentCollection rac, SPPrincipal principal)
{
    XElement racXml = XElement.Parse(rac.Xml);
    return racXml.Elements("permission").Any(vw => (int)vw.Attribute("memberid") == principal.ID);
}
6
ответ дан 1 December 2019 в 02:20
поделиться

Вы пробовали использовать RunWithElevatedPrivileges ?

SPSecurity.RunWithElevatedPrivileges(delegate()
        {
             //put your code here to get the group and test for the user
        });
1
ответ дан 1 December 2019 в 02:20
поделиться

Пара способов. В группе SharePoint есть параметр, который позволяет только владельцу группы просматривать сведения о членстве или разрешать всем просматривать сведения о членстве. Если все разрешено, вы не получите ограничение безопасности, иначе вам потребуется RunWithElevatedPrivileges, и обязательно получите новый экземпляр SPSite & SPWeb, который будет использоваться внутри него.

Сказано, что ниже приведены варианты:

private Boolean isUserInGroup(SPGroup oGroupToTestFor,String sUserLoginName)
    {   
        Boolean bUserIsInGroup = false;
        try
        {
            SPUser x = oGroupToTestFor.Users[sUserLoginName];
            bUserIsInGroup = true;
        }
        catch (SPException)
        {
            bUserIsInGroup = false;
        }
        return bUserIsInGroup;

    }

Другой способ -

private Boolean isUserInGroup(SPGroup oGroupToTestFor, String sUserLoginName)
    {   
        Boolean bUserIsInGroup = false;

            SPUser oUser =null;
            try{
                oUser = SPContext.Current.Web.AllUsers[sUserLoginName];
                }
            catch{}
            if(oUser!=null){
            foreach (SPUser item in oGroupToTestFor.Users)
            {
                if (item.UserToken == oUser.UserToken)
                {
                    bUserIsInGroup = true;
                    break;
                }                    
            }
            }

        return bUserIsInGroup;

    }
4
ответ дан 1 December 2019 в 02:20
поделиться

Для того, чтобы заставить SPSecurity.RunWith .. работать, вам необходимо иметь новый экземпляр объекта SPSite и / или SPWeb и не использовать контекст, иначе он не будет работать.

У вас есть объект SPUser для использования? В таком случае можно просто использовать коллекцию SPUser.Groups.

0
ответ дан 1 December 2019 в 02:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: