2

クライアント オブジェクト モデルを使用して SharePoint 2013 グループにプログラムで追加されたユーザーのユーザー権限に問題があります。Web アプリケーションは匿名を許可しますが、特定のグループ (「教師」としましょう) にのみ投稿権限を持つドキュメント ライブラリ「Teacher Documents」もあり、サイトの既定のメンバーにもユーザーを追加しました (「学校」としましょう)。メンバー」)。コードは正常に機能し、ユーザーは両方のグループに正常に追加されました。

問題ないように見え、ユーザー名がグループのメンバーとしてリストされていましたが、まだ投稿できません。私が確認したところ、ドキュメント ライブラリへの匿名アクセス権はありますが、投稿権限はありません。これが私のコードです:

public static string AddUserToGroup(string siteURL, string groupName, string userName, string name, string email, NetworkCredential impersonateCredential)
{
    try
    {
        ClientContext context = new ClientContext(siteURL);
        context.Credentials = impersonateCredential;

        Group oGroup = null;

        oGroup = context.Web.SiteGroups.GetByName(groupName);

        context.Load(oGroup);
        bool groupExists = false;

        try
        {
            context.ExecuteQuery();
            groupExists = true;
        }
        catch { }

        if (groupExists)
        {
            UserCreationInformation userCreationInfo = new UserCreationInformation();
            userCreationInfo.Email = email;
            userCreationInfo.LoginName = userName;
            userCreationInfo.Title = name;

            bool userExists = false;

            try
            {
                User checkUser = oGroup.Users.GetByLoginName(userName);
                context.Load(checkUser);
                context.ExecuteQuery();
                userExists = true;
            }
            catch { }

            if (!userExists)
            {
                User oUser = oGroup.Users.Add(userCreationInfo);
                context.ExecuteQuery();
            }
        }
        else
        {
            return "No associated group assigned";
        }

        return "Member " + userName + " has been added to group.";
    }
    catch (Exception ex)
    {
        return ex.Message.ToString();
    }
}

そして、これが私がそれを呼び出す方法です:

string siteURL = "http://spfe01.gilang.com/";
string username = "spfe01\\budi.utomo";
string name = "Budi Utomo";
string email = "budi.utomo@spfe01.gilang.com";

NetworkCredential impersonateCredential = new NetworkCredential("username", "password", "spfe01");

AddUserToGroup(siteURL, "Teachers", username, name, email, impersonateCredential));

(コンソールアプリケーションでテストできます)

ユーザーは「Teachers」に追加されましたが、「Teacher Documents」ドキュメント ライブラリに対する権限はありませんでした。サイトを完全に制御できる管理グループ「School Owners」にユーザーを追加しても機能しませんでした。

編集: 私の場合、グループをドキュメント ライブラリに手動で追加しました。グループに手動で追加されたユーザーには、アクセス許可が付与され、投稿が許可されます。手動とは、Web ブラウザーで SharePoint の標準の「アクセス許可」機能を使用することを意味します。

4

1 に答える 1

0

実は、継​​承を壊したのですか?

ほとんどの場合、フォルダーとファイルはメイン フォルダーの権限を継承します。

これが私のコードです:

caml = new Microsoft.SharePoint.Client.CamlQuery();

caml.ViewXml = @"Caml to get the file";

items = objList.GetItems(caml);

clientContext.Load(items);

clientContext.Credentials = new NetworkCredential("LoginID", "LoginPW", "LoginDomain");

clientContext.ExecuteQuery();

item = items[0];

item.BreakRoleInheritance(true, true);

clientContext.ExecuteQuery();
于 2014-06-27T05:57:59.067 に答える