DNN - получение пользовательских ролей в javascript - PullRequest
0 голосов
/ 20 декабря 2018

У меня есть приложение в DotNetNuke.Я хотел бы получить список ролей пользователей в javascript заголовка и проверить, есть ли у него роль «Администраторы».Каков наилучший способ сделать это?

1 Ответ

0 голосов
/ 21 декабря 2018

Вы можете сделать что-то вроде этого

using DotNetNuke.Common;
using System.Collections;
using DotNetNuke.Security.Roles;
using System.Web.Script.Serialization;

var RoleController = new RoleController();
var UserRoles = new List<RoleInfo>();

//for dnn 7.3 and lower
if (Globals.DataBaseVersion.Major < 7 || (Globals.DataBaseVersion.Major == 7 && Globals.DataBaseVersion.Minor < 3))
{
    UserRoles = RoleController.GetPortalRoles(PortalId).Cast<RoleInfo>().ToList();
}
else
{
    //for dnn 7.3 and higher
    UserRoles = RoleController.GetRoles(PortalId).ToList();
}

//convert the list to a json array
var jsonSerialiser = new JavaScriptSerializer();
var json = jsonSerialiser.Serialize(UserRoles.Select(x => x.RoleName));

//send the json to a client side function
ScriptManager.RegisterStartupScript(Page, Page.GetType(), "allUserRoles", "setUserRoles('" + json + "')", true);

И функцию на стороне клиента.Переменная json теперь является массивом со всеми ролями.

<script type="text/javascript">
    function setUserRoles(roles) {
        var json = JSON.parse(roles);
        for (var i = 0; i < json.length; i++) {
            console.log(json[i]);
        }
    }
</script>
...