public static void Initialize(IServiceProvider serviceProvider) { var _dbContext = serviceProvider.GetRequiredService <AppDbContext>(); var userManager = serviceProvider.GetRequiredService <UserManager <ApplicationUser> >(); var roleManager = serviceProvider.GetRequiredService <RoleManager <IdentityRole> >(); // _dbContext.Database.EnsureDeleted(); // _dbContext.Database.EnsureCreated(); #region Roles var roleList = new List <string>() // Список ролей { "devAdmin", "admin", "helper", "guest" }; // Достать все роли из базы var roles = roleManager.Roles.Select(x => x.Name).ToList(); // Сравнить роли из списка и базы var roleDiff = roleList.Except(roles).ToList(); // Если есть разница, то добавить не существующие роли из списка в базу if (roleDiff.Count() > 0) { foreach (var item in roleDiff) { var role = new IdentityRole { Name = item }; var t = roleManager.CreateAsync(role); t.Wait(); } } #endregion #region WeekDays // var dayRusList = new List<string>() // { // "Понедельник", "Вторник", "Среда", "Четверг", "Пятница", "Суббота" // }; // var dayEngList = new List<string>() // { // "Понедельник", "Вторник", "Среда", "Четверг", "Пятница", "Суббота" // }; // var dayKzList = new List<string>() // { // "Понедельник", "Вторник", "Среда", "Четверг", "Пятница", "Суббота" // }; // var daysFullName = _dbContext.WeekDays.Select(x => x.DayFullName).ToList(); // var daysDiff = roleList.Except(roles).ToList(); // if (roleDiff.Count() > 0) // { // foreach (var item in roleDiff) // { // var role = new IdentityRole { Name = item }; // var t = roleManager.CreateAsync(role); // t.Wait(); // } // } #endregion #region devUsers // Поиск пользователя в базе var chiefAdmin = userManager.Users.FirstOrDefault(x => x.UserName == "*****@*****.**"); // Если таковой пользователь не имеется, то добавить его в общую таблицу всех пользователей AspNetUsers if (chiefAdmin == null) { chiefAdmin = new ApplicationUser { Email = "*****@*****.**", UserName = "******", Surname = "devAdmin", Name = "devAdmin", EmailConfirmed = true }; // Добавление пользователя var chiefAdminCreated = userManager.CreateAsync(chiefAdmin, "@G0Sik"); chiefAdminCreated.Wait(); // Добавление роли пользователя var chiefAdminRole = userManager.AddToRoleAsync(chiefAdmin, "devAdmin"); chiefAdminRole.Wait(); } // Если таковой пользователь не имеетя, то добавиль его в таблицу devUsers - администрация системы var opExisting = _dbContext.Users.Find(chiefAdmin.Id); if (opExisting != null) { var opNew = new devUser(chiefAdmin); _dbContext.devUsers.Add(opNew); var opSave = _dbContext.SaveChangesAsync(); opSave.Wait(); } #endregion }
public async Task <IActionResult> RegisterUserOrg([FromBody] RegisterViewModel model) { if (ModelState.IsValid) { if (AccountHelper.IsValidPassword(model.Password)) { var checkEmail = await _dbContext.Users.FirstOrDefaultAsync(x => x.Email == model.Email); if (checkEmail == null) { ApplicationUser user = new ApplicationUser { Email = model.Email, UserName = model.Email, Name = model.Name, Surname = model.Surname, Middlename = model.Middlename, }; try{ var result = await _userManager.CreateAsync(user, model.Password); var role = await _roleManager.FindByNameAsync(model.RoleName); if (role == null) { return(BadRequest()); } await _userManager.AddToRoleAsync(user, model.RoleName); var studyOrganization = await _dbContext.StudyOrganizations.FirstOrDefaultAsync( x => x.StudyOrganizationId == model.studyOrganizationId); if (studyOrganization != null) { var OrganizationUser = new UserOrganization(user, studyOrganization); _dbContext.UserOrganizations.Add(OrganizationUser); } else { var devUser = new devUser(user); _dbContext.devUsers.Add(devUser); } await _dbContext.SaveChangesAsync(); return(Ok(user)); } catch (Exception ex) { Console.WriteLine(ex); return(BadRequest(model)); } } else { return(BadRequest("Пользователь с такой почтой уже есть.")); } } else { return(BadRequest()); } } else { return(BadRequest(model)); } }