Пример #1
0
        /// <summary>
        /// Adds some default values to the Database
        /// </summary>
        public void SeedData()
        {
            using var scope = _scopeFactory.CreateScope();
            var dbInitializer     = scope.ServiceProvider.GetRequiredService <DbInitializerService>();
            var createAdminResult = dbInitializer.CreateAdminUserAsync().Result;

            if (createAdminResult == (null, IdentityResult.Failed()))
            {
                throw new InvalidOperationException(createAdminResult.Item2.DumpErrors());
            }

            using var db = scope.ServiceProvider.GetRequiredService <BehlogContext>();
            if (!db.Roles.Any())
            {
                db.Add(new Role(Consts.Role_Admin));
                db.SaveChanges();
            }

            var adminUser       = createAdminResult.Item1;
            var defaultLanguage = _languageSvc
                                  .CreateDefaultLanguagesAndReturnDefaultLanguageAsync()
                                  .Result;

            dbInitializer.CreateDefaultWebsite(
                db,
                adminUser,
                defaultLanguage.Adapt <Language>()
                );
        }
Пример #2
0
        public async Task <(User, IdentityResult)> CreateAdminUserAsync()
        {
            var adminUser = await _userManager.FindByNameAsync(AdminUserSeedInfo.Username);

            if (adminUser != null)
            {
                _logger.LogInformation($"{AdminUserSeedInfo.Username} already existed.");
                return(adminUser,
                       IdentityResult.Success
                       );
            }

            var adminRole = await _roleManager.FindByNameAsync(AdminUserSeedInfo.RoleName);

            if (adminRole != null)
            {
                _logger.LogInformation($"{AdminUserSeedInfo.RoleName} role already existed.");
            }
            else
            {
                adminRole = new Role(AdminUserSeedInfo.RoleName);
                var roleResult = await _roleManager.CreateAsync(adminRole);

                if (roleResult == IdentityResult.Failed())
                {
                    _logger.LogError($"'{adminRole.Name}' role creating has failed. {roleResult.DumpErrors()}");
                    return(null,
                           IdentityResult.Failed()
                           );
                }
            }

            adminUser = new User {
                UserName       = AdminUserSeedInfo.Username,
                Email          = AdminUserSeedInfo.Email,
                EmailConfirmed = true,
                RegisterDate   = _dateSvc.UtcNow(),
                Title          = AdminUserSeedInfo.Title,
                LockoutEnabled = true,
                Status         = UserStatus.Enabled
            };

            var result = await _userManager.CreateAsync(adminUser, AdminUserSeedInfo.Password);

            if (result == IdentityResult.Failed())
            {
                _logger.LogError($"'{AdminUserSeedInfo.Username}; user creation has failed. {result.DumpErrors()}");
                return(null,
                       IdentityResult.Failed()
                       );
            }

            var setLockoutResult = await _userManager.SetLockoutEnabledAsync(adminUser, enabled : false);

            if (setLockoutResult == IdentityResult.Failed())
            {
                _logger.LogError($"'{AdminUserSeedInfo.Username}' setLockout on user has failed. {setLockoutResult.DumpErrors()}");
                return(null,
                       IdentityResult.Failed()
                       );
            }

            var addRoleResult = await _userManager.AddToRoleAsync(adminUser, AdminUserSeedInfo.RoleName);

            if (addRoleResult == IdentityResult.Failed())
            {
                _logger.LogError($"Adding user:'******' to role:'{AdminUserSeedInfo.RoleName}' has failed. {addRoleResult.DumpErrors()}");
                return(null,
                       IdentityResult.Failed()
                       );
            }

            return(
                adminUser,
                IdentityResult.Success
                );
        }