Member 14557688 Ответов: 0

Как назначить несколько конкретных ролей в одном пользователе с помощью массовой загрузки пользователей?


В kentico 10 мы используем массовую загрузку пользователей из excel, имя поля-Username, Email, fname, lname, Role1, Role2 и Role3.
Пользователь будет вставлять работу нормально.
Но роли не вставляются. Если я отлажу код, курсор не будет находиться внутри условия if.

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

private UserInfo CreateUser(UserDto userDto, SiteInfo site)
       {
           var newUser = new UserInfo
           {
               UserName = userDto.UserName,
               UserEnabled = true,
               FirstName = userDto.FirstName,
               LastName = userDto.LastName,
               FullName = userDto.FirstName + " " + userDto.LastName,
               Email = userDto.Email,
               SiteIndependentPrivilegeLevel = CMS.Base.UserPrivilegeLevelEnum.None
           };

           var newUserSettings = newUser.UserSettings ?? new UserSettingsInfo();
           UserInfoProvider.SetPassword(newUser, userDto.UserPassword);
           newUserSettings.UserPhone = userDto.PhoneNumber;

               //  var role = new RoleProvider().GetAllRoles(site.SiteID);
               // .FirstOrDefault(r => r.Description == userDto.Role1);
           UserInfoProvider.SetUserInfo(newUser);
           UserInfoProvider.AddUserToSite(newUser.UserName, site.SiteName);

          // var rolelist = userDto.Role1 ?? $"{userDto.Role2} {userDto.Role3}";

           var rolelist =  new[] { $"{userDto.Role1}", userDto.Role2, userDto.Role3}
                   .Where(af => !string.IsNullOrWhiteSpace(af));

           foreach (var u in rolelist)
           {
               List<string> userRoles = new List<string> { userDto.Role1, userDto.Role2, userDto.Role3 };
               foreach (string r in userRoles)
               {
                   var roles = RoleInfoProvider.GetRoles().WhereEquals("LOWER(RoleDescription)", r.ToLower()).FirstOrDefault();
                   if (userRoles != null)
                   {
                       UserInfoProvider.AddUserToRole(newUser.UserID, roles.RoleID);
                   }

           }
          }
           return newUser;


       }

Richard MacCutchan

Вам нужно использовать отладчик, чтобы узнать, что происходит. Без ваших входных данных невозможно понять, почему это не удается.

Member 14557688

В переменной if (roles != null) roles появляется нулевое значение

Richard MacCutchan

Ну, это довольно очевидно, но это не помогает выяснить, почему. Как я уже предположил, вам нужно использовать отладчик, чтобы выяснить, почему. Пройдитесь по коду и проверьте переменные, которые используются для заполнения списка, чтобы понять, почему ни одна из них не выбрана.

Richard Deeming

У тебя же нет ... if (roles != null) строка в вашем коде.

У тебя есть if (userRoles != null) - это опечатка в вашем вопросе или опечатка в вашем коде?

0 Ответов