Member 14557688 Ответов: 1

Как назначить несколько ролей в одном пользователе?


мы используем массовую загрузку пользователей с помощью excel, имя поля-Username, Email, fname, lname, Role1, Role2 и Role3.

Имя пользователя, электронная почта,fname, lname сохранение данных в БД работает нормально.

Как назначить 3 роли в одном пользователе.

Я использую приведенный ниже код

Что я уже пробовал:

var newUser = new UserInfo{ 
UserName = userDto.UserName,
FirstName = userDto.FirstName, 
LastName = userDto.LastName, 
Email = userDto.Email, 
SiteIndependentPrivilegeLevel = CMS.Base.UserPrivilegeLevelEnum.None }; 
var newUserSettings = newUser.UserSettings ?? new UserSettingsInfo(); 
UserInfoProvider.SetUserInfo(newUser);
 UserInfoProvider.AddUserToSite(newUser.UserName, site.SiteName); 

var role = new RoleProvider().GetAllRoles(site.SiteID) 
.FirstOrDefault(r => r.Description == userDto.Role1); 
// .(r => r.Description == userDto.Role1, userDto.Role2, userDto.Role3); 

UserInfoProvider.AddUserToRole(newUser.UserID, role.ID);
 return newUser;

Richard Deeming

У вас уже есть код для добавления пользователя в роль - вы сделали это для Role1. В чем проблема?

Member 14557688

Мне нужно добавить более конкретную роль

1 Ответов

Рейтинг:
2

Vincent Maverick Durano

Вам просто нужно зациклиться на результатах GetAllRoles() метод result, а затем назначьте доступные роли пользователю. Например:

var roles = new RoleProvider().GetAllRoles(site.SiteID);

foreach (var role in roles){
   UserInfoProvider.AddUserToRole(newUser.UserID, role.ID);
}


Обратите внимание, что приведенный выше код назначит все роли пользователю. Если вы хотите добавить определенные роли для пользователя, то сначала вам нужно сделать некоторую проверку.


Member 14557688

Мне нужно добавить какую-то конкретную роль для пользователя

Vincent Maverick Durano

Затем вам нужно сначала проверить эту конкретную роль, прежде чем добавлять ее пользователю.

Member 14557688

Я использую приведенный ниже код, не назначая ролей.

var rolelist = new[] { $"{userDto.Role1}", userDto.Role2, userDto.Role3}
.Где(АФ =&ГТ; !строку.IsNullOrWhiteSpace(af));

foreach (var u в списке ролей)
{
Список<строка> У userRoles = новый список<строка> У { userDto.Роль role1, userDto.Роль role2, userDto.Role3 };
foreach (строка r в роли пользователя)
{
var roles = RoleInfoProvider.GetRoles().Wherequals("LOWER(RoleDescription)", r.ToLower()).FirstOrDefault();
if (roles != null)
{
UserInfoProvider.AddUserToRole(newUser.UserID, роли.RoleID);
}

}
}
возврат нового пользователя;