4

DNNモジュールにチェックを追加して、特定のユーザーがログイン時にいくつかの質問に答える必要がないようにします。個々の役割をハードコーディングする代わりに、特定の役割グループ内のユーザーを除外したいと思います。そうすれば、将来さらに多くの役割がある場合、それらを除外したい場合は、それらを役割グループに追加することができます。

ただし、ユーザーがロールグループに属しているかどうかを確認する方法がわかりません。私は役割を確認する方法を知っていますが、グループが1つになっている場合はそうではありません。

解決策:これが、得られた回答に基づいてまとめたコードです。動作するはずです。

RoleGroupInfo RoleGrp = RoleController.GetRoleGroupByName(this.PortalId, "Role Group");
bool bShouldSkipQuestions = false;
if (RoleGrp != null)
{
    Dictionary<string, RoleInfo> GroupChk = RoleGrp.Roles;
    if (GroupChk.Count > 0)
    {
        foreach (var item in GroupChk.Values)
        {
            if (_user.IsInRole(item.RoleName))
            {
                bShouldSkipQuestions = true;
                break;
            }
        }
    }
}
4

1 に答える 1

7

ロールグループは、実際にはそのように使用することを目的としていません(エンドユーザーの組織のみを対象としています)。したがって、それを直接確認する方法はありません。グループ()内のすべてのロールを取得してからRoleController.GetRolesByRoleGroupチェックPortalSecurity.IsInRolesし、ロール名のコンマ区切りの文字列を渡します。

このコードを試してください:

var roleGroup = RoleController.GetRoleGroupByName(this.PortalId, "Role Group");
var shouldSkipQuestions = roleGroup != null 
                          && roleGroup.Roles.Keys.Any(role => _user.IsInRole(role));
于 2012-07-30T14:19:09.137 に答える