2009-03-20 6 views
1

カスタムメンバーシップとロールプロバイダーを構築しました。ユーザーは会社に所属する一部のクライアントであり、私は役割として会社を使用しています。SharePointユーザーグループとFbaロール

私はSharePointグループを作成し、それに多くの企業を追加したいと考えています(たとえば業界のタイプ)。そして、SPGroupによるリダイレクトとセキュリティを行いたいと思います。

現在ログインしているユーザーのSPGroupを取得するにはどうすればよいですか?
カスタムログインページでこのようにしたいのですが、別の問題は、ログイン名を知っているSPUserまたはSPGroupを取得する方法です。

これは私が今持っているものです。


private List GetGroupsForUser(List roleAccounts) 
{ 
    List groups = new List(); 
    SPSecurity.RunWithElevatedPrivileges(
    delegate() 
    { 
     using (SPSite site = new SPSite(SPContext.Current.Web.Site.ID)) 
     { 
      SPUserCollection users = site.RootWeb.SiteUsers; 
      foreach (string account in roleAccounts) 
      { 
       SPGroupCollection accGroups = users[account].Groups; 
       foreach (SPGroup spg in groups) 
       { 
        groups.Add(spg); 
       } 
      } 
     } 
    } 
    ); 

    return groups; 

} 

private string GetRoleManagerName() 
{ 
    foreach (KeyValuePair setting in SPContext.Current.Site.WebApplication.IisSettings) 
    { 
     if (string.IsNullOrEmpty(setting.Value.RoleManager) == false) 
      return setting.Value.RoleManager.ToLower(); 
    } 
    return null; 
} 

private List GetSpAccounts() 
{ 
    List roleAccounts = new List(); 
    string roleProviderName = GetRoleManagerName(); 
    foreach (string role in Roles.GetRolesForUser(login.UserName)) 
    { 
     roleAccounts.Add(roleProviderName + ":" + role.ToLower()); 
    } 

    return roleAccounts; 
} 


// and now I can use it 
List roleAccounts = GetSpAccounts(); 
List groups = GetGroupsForUser(roleAccounts); 

しかし、私はこのように手動でこれを実行する必要はありません伐採を持っています。グループにロールのみが追加されている場合、ターゲットオーディエンスはどのように機能しますか?

答えて

2

ユーザーが所有するグループのコレクションを返すには、SPUserクラスのOwnedGroupsプロパティを使用します。

  1. が現在ログインしているユーザーなさい:SPContext.Current.Web.CurrentUser
  2. グループにその使用を追加します。SPGroup.Users.Add([ユーザー名]の更新が質問を誤解

    、[電子メール]、[名前]、[メモ]);

更新、3回目の魅力。だからあなたは彼らが持っている役割に基づいてユーザーがどのグループにいるのかを知りたいのですか? それに答えるに上記2回の試行の組み合わせのビットです:

var matched = from r in SPContext.Current.Web.CurrentUser.Roles 
       where r.Name = [Role] 
       select r.Groups; 

役割プロパティは、SharePointの次期バージョンでは動作しないことが重要な注意! 個人的には、SPContext.Current.Web.CurrentUser.Groupsは、ユーザーがどのグループに属しているかを簡単に判断できる方法だと思いますが、役割の要件は無視されます。

+0

回答ありがとうございますが、SPContext.Current.Web.CurrentUser.Rolesは除外されています。もう1つは、OnLoggedInイベントのログインページでこれをすべてやっているということです。 –

関連する問題