2015-10-16 10 views
7

SharePointユーザーグループにADグループを追加しました。ユーザーでログインすると、ログインしたADユーザーのアクセス許可を確認する必要があります。ユーザーはSharePointグループにネストされたADグループの一部です。広告ユーザーをSharePointグループと関連付ける方法

  1. 私はSharePointに広告グループ(例)マネージャーを追加しました。
  2. ここでは、グループ(マネージャー)のみへのURLリンクをいくつか表示します。
  3. ユーザーがログインしたときに、ユーザーがマネージャーかどうかを確認するにはどうすればよいですか?
+0

さらに指定できますか?たとえば、「サイト訪問者」のSharePoint権限レベルグループにアクティブなディレクトリグループを追加しました。今、あなたは何のために、いつ、どこで、いつアクセス許可をチェックしたいですか?そしてどうやって?プログラム的にまたはSharePoint管理者セットアップまたは何ですか? – Eric

+0

1)SharePointに広告グループ(例)マネージャーを追加しました。 2)今私はグループ(マネージャー)へのURLリンクをいくつか表示したいと思います。 3)ユーザーがログインしたときに、ユーザーがマネージャーかどうかを確認するにはどうすればいいですか(CSOMまたはJSOMの使用) –

+0

このシナリオでは、グループメンバーシップを自分で確認する必要はありません。オーディエンスターゲティングと呼ばれる組み込みのSharePoint機能を使用して、ページ上の個々のWebパーツを表示できるユーザーを制限することができます。 – Thriggle

答えて

7

を( CSOMまたはJSOMを使用することは)残念ながら、あなたはサーバー側のコードでは、このために使用するSPGroup.ContainsCurrentUserプロパティは、(少なくともないSP2010および2013年)のJavaScriptクライアントオブジェクトモデルを介してアクセスできません。

オプション1:OnlyAllowMembersViewMemberhipCanCurrentUserViewMembership:使用のグループメンバーシップの可視性の周りの回避策

一つの潜在的な作業では、JavaScriptクライアントオブジェクトモデルを介したグループにあなたアクセス二つの特性の組み合わせを利用することであるとして、 。

グループメンバーがグループメンバーを許可できるように設定されているグループのグループメンバーシップを現在のユーザーが表示できる場合は、ユーザーがグループメンバーであると見なすことができます。

var clientContext = new SP.ClientContext(); 
var groupId = 5; // the group membership ID for the group you want to check 
var group = clientContext.get_web().get_siteGroups().getById(groupId); 
clientContext.load(group,"CanCurrentUserViewMembership"); 
clientContext.load(group,"OnlyAllowMembersViewMembership"); 
clientContext.executeQueryAsync(
    function(sender,args){ 
     var isMemberOfGroup = group.get_canCurrentUserViewMembership() && group.get_onlyAllowMembersViewMembership(); 
     if(isMemberOfGroup){ 
      doSomething(); 
     } 
    }, 
    function(sender,args){"Whoops! "+alert(args.get_message());} 
); 

あなたはメンバーのみに表示されるようにグループを設定している場合は、このアプローチにのみ動作します、そしてそれは常に、このようなサイトコレクションしているかのように、偽陽性のあなたが上昇している場合にアクセスを返します管理者またはグループの所有者。

編集:あなたの代わりにそのIDによってグループを指定する(サイト上のすべてのグループで、現在のユーザーのメンバーシップを確認するために、上記と同じロジックを適用したい場合はすべてのサイトグループ

を反復処理する方法)、以下の変更されたJavaScriptコードを使用することができます。

var clientContext = new SP.ClientContext(); 
var groups = clientContext.get_web().get_siteGroups() 
clientContext.load(groups,"Include(CanCurrentUserViewMembership,OnlyAllowMembersViewMembership,Title)"); 
clientContext.executeQueryAsync(
function(sender,args){ 
    var groupIterator = groups.getEnumerator(); 
    var myGroups = []; 
    while(groupIterator.moveNext()){ 
     var current = groupIterator.get_current(); 
     var isMemberOfGroup = current.get_canCurrentUserViewMembership() && current.get_onlyAllowMembersViewMembership(); 
     if(isMemberOfGroup){ 
      myGroups.push(current.get_title()); // this example adds group titles to an array 
     } 
    } 
    alert(myGroups); // show the array 
},function(sender,args){"Whoops! "+alert(args.get_message());}); 

オプション2:私はコメントで述べたように、あなたもグループメンバーシップへのプログラムによるアクセスを必要としないかもしれないあなたの要件については、使用対象読者は、回避策もちろん

としてターゲット。特定のグループにしか表示されないようにするWebパーツにオーディエンスターゲティングを設定することができます。オーディエンスターゲティングはADグループのメンバーシップを尊重す

+2

ありがとうThriggle、私はREST APIの問題を解決しました。 –

+0

クール!答えとしてあなたのソリューションを投稿できるでしょうか?それは他人を助けるかもしれない。 – Thriggle

+0

解決に感謝します。 1つではなくすべてのグループを読み込む方法はありますか?すべてのサイトグループを繰り返し処理し、「CanCurrentUserViewMembership」プロパティを取得するクエリを実行するが、パフォーマンスに影響する現在のソリューション。 – Trike

関連する問題