Назначение нескольких ролей пользователю в DNN программным способом

Я пытаюсь программно назначить пользователю несколько ролей в DNN.

Используя следующий код:

Roles_controller.AddUserRole(0, user_id, role_id, DateTime.Now, DateTime.Now.AddYears(10));
DotNetNuke.Common.Utilities.DataCache.ClearUserCache(0, user_name);
Roles_controller.ClearRoleCache(0);

Проблема в том, что независимо от того, сколько ролей я назначаю пользователю, фактически назначается только последняя роль, которую я назначил пользователю. Предыдущее назначение ролей пользователям было проигнорировано. Ошибок нет, куда выкинули ..

Как я могу этого добиться? Есть ли в DNN какие-либо ограничения для этого?


person Anuya    schedule 27.10.2015    source источник


Ответы (1)


Это метод, который я написал для добавления роли пользователю. Мне удается вызывать его несколько раз, даже в цикле.

public bool AddRoleToUser(int portalid, UserInfo user, string roleName, DateTime expiry)
{
    bool rc = false;
    if (user != null)
    {
        var roleCtl = new RoleController();
        RoleInfo newRole = roleCtl.GetRoleByName(portalid, roleName);
        if (newRole != null)
        {
            roleCtl.AddUserRole(portalid, user.UserID, newRole.RoleID, DateTime.MinValue, expiry);
            // Refresh user and check if role was added
            user = UserController.GetUserById(portalid, user.UserID);
            rc = user.IsInRole(roleName);
        }
    }
    return rc;
}

Возможно, это был призыв обновить пользователя, который обновил его из кеша.

person DotNetNuclear    schedule 28.10.2015