Exemple #1
0
        public ApplicationDbContext(DbContextOptions <ApplicationDbContext> options) : base(options)
        {
            if (Database.EnsureCreated())
            {
                #region создание ролей пользователей и администратора

                // роли пользователей
                var roleStore   = new RoleStore <IdentityRole>(this);
                var roleManager = new RoleManager <IdentityRole>
                                      (roleStore,
                                      new IRoleValidator <IdentityRole>[] { },
                                      new UpperInvariantLookupNormalizer(),
                                      new IdentityErrorDescriber(), null);
                roleManager.CreateAsync(new IdentityRole {
                    Name = Domain.UserRoles.ADMIN
                }).GetAwaiter().GetResult();
                roleManager.CreateAsync(new IdentityRole {
                    Name = Domain.UserRoles.USER
                }).GetAwaiter().GetResult();

                // учётная запись администратора
                var userStore   = new UserStore <ApplicationUser>(this);
                var userManager = new UserManager <ApplicationUser>
                                      (userStore,
                                      new OptionsManager <IdentityOptions>(new OptionsFactory <IdentityOptions>(new IConfigureOptions <IdentityOptions>[] { },
                                                                                                                new IPostConfigureOptions <IdentityOptions>[] { })),
                                      new PasswordHasher <ApplicationUser>(),
                                      new IUserValidator <ApplicationUser>[] { },
                                      new IPasswordValidator <ApplicationUser>[] { },
                                      new UpperInvariantLookupNormalizer(),
                                      new IdentityErrorDescriber(),
                                      null, null
                                      );
                var user = new ApplicationUser()
                {
                    UserName = "******", Email = "*****@*****.**", EmailConfirmed = true
                };
                var result = userManager.CreateAsync(user, "secret").GetAwaiter().GetResult();
                if (result.Succeeded)
                {
                    userManager.AddToRoleAsync(user, Domain.UserRoles.ADMIN).GetAwaiter().GetResult();
                    userManager.AddToRoleAsync(user, Domain.UserRoles.USER).GetAwaiter().GetResult();
                }
                userManager.Dispose();

                #endregion
            }
        }