Question

Gs.NangChun on Thu, 18 Apr 2013 04:43:26


visualstudio2012

sharepoint2013を使用しております。

spwebを使ってボタンを押すと新しいサイトを作るwebパーツを作りましたが、

これを作ると同時にユーザーAはアクセスできてユーザーBはアクセスできないようにしたいです。

SPweb, SPuser, SPmember, SPPermission, SProle, SPRightなどのLibraryは一つ一つ全部呼んでみましたが

それでもわからなくて質問します。

SPweb, SPuserは権限を指定するサイトと、ユーザーを指定するために必要だと思いますが、あれに権限を指定する昨日はないと思います。

権限を指定してくれるのがSPpermissionかSPRoleかほかに私がわからないものかわかりませんが

permissionを使ってみようとしてここの例をコピーしてみたら

SPSite oSiteCollection = SPContext.Current.Site;
using(SPWeb oWebsite = oSiteCollection.AllWebs["Site_Name"])
{
    SPList oList = oWebsite.Lists["List_Name"];
    SPPermissionCollection collPermissions = oList.Permissions;
    SPUserCollection collUsers = oWebsite.Users;

    SPMember oMember = collUsers["User_Name"];

    oList.Permissions[oMember].PermissionMask =
        SPRights.AddListItems | SPRights.EditListItems;
}

エラーは出ませんがSPRight、SPpermissionが古い形式という警告が4つ出てきました。

そしてList_NameのListが何を表しているのか何度説明を読んでみても分かることができませんでした。

1人のユーザーのアクセス許可を変更しますという説明があったので最初はこれでいけるかと思いましたがだめでした。

それで説明をまた読んでみてpermissionが古いやつで2013ではSPRoleってやつを使わなければいけないのかなと思って

ここを参考してみました

using(SPWeb oParentWebsite = SPContext.Current.Site.AllWebs["Site_Name"])
{
    SPWebCollection collWebsites = oParentWebsite.Webs;
    SPUser oUser = oParentWebsite.Users["User_Name"];

    foreach (SPWeb oWebsite in collWebsites)
    {
        SPRole oRole = oWebsite.Roles["Role_Name"];
        oRole.RemoveUser(oUser);

        oWebsite.Dispose();
    }
}

ここも同じくした線のところに古い形式ですという警告が出ています。

そしてRole_Nameに何を入れるべきか確かに分かりませんが権限の名前を入れればいいのかと予想してSharepoint側のサイトの権限でユーザーに与えられる権限のひとつである"閲覧のみ"を書いてみました。

警告も出ているしRole_Nameのところに正しいものを入れたかも分かりませんがとにかく実行してみました。

Site_Nameに QAmail/sercurity1を書いて

user_Nameに bstest01も書いてみてwin\bstest01もかいて見ました。

結果はユーザーを見つけませんでしたというエラーメッセージが出てきました。

bstest01はQAmail/sercurity1サイトに接続できるユーザーであらかじめ編集までできる権限も与えておきました、使えないユーザーではないと思います。

何を使えばいいかもまだ分からないし、使ってみようとしても使えない状態ぜんぜん進まない状態です。

知っている方いらっしゃればくれぐれも教えてください。


Sponsored



Replies

星 睦美 on Fri, 19 Apr 2013 08:52:46


Gs.NangChun さん、こんにちは
フォーラム オペレーターの星 睦美です。

MSDN ライブラリのSharePoint 2013 開発の概要のページがSharePoint 2013 での開発に役にたつのではないかと思います。
その中で、今回の質問には以下のページが参考になるかもしれません。

(参考情報)
SharePoint 2013 の認証、ユーザー、グループ、およびオブジェクト モデル:

こちらの情報がなにかてがかりになれば幸いです。

Gs.NangChun on Tue, 23 Apr 2013 00:22:21


星 睦美さま。

いつもありがとうございます。

SPRoleAssignment とSPRoleDefinitionを利用して100%理解してはいないですがある程度具現することができました。

ありがとうございます。

同じことで悩んできる方がいるか知らないですが、バージョンがあがりSPpermissionは使えなく権限の設定のためには上の二つを使えばいけそうですのでご参考してください。