public static void EnsureSeeded(this EllegiaContext context, IServiceProvider serviceProvider, IConfigurationReader configurationReader) { var users = configurationReader.Read(); var userManager = serviceProvider.GetRequiredService <UserManager <EllegiaUser> >(); var roleManager = serviceProvider.GetRequiredService <RoleManager <EllegiaRole> >(); foreach (var user in users) { if (userManager.FindByNameAsync(user.Name).Result != null) { continue; } if (roleManager.FindByNameAsync(user.Role).Result == null) { var createRoleResult = roleManager.CreateAsync(new EllegiaRole { Name = user.Role }).Result; } var warehouse = context.Warehouses.First(); var ellegiaUser = new EllegiaUser(user.Name, user.Email, user.FullName, warehouse.Id); var createUserResult = userManager .CreateAsync(ellegiaUser, user.Password).Result; if (createUserResult.Succeeded) { var addUserToRoleResult = userManager.AddToRoleAsync(ellegiaUser, user.Role).Result; } } var ellegiaUsers = userManager.GetUsersInRoleAsync(Roles.SupervisorNormalizedName).Result; if (!context.Shifts.Any()) { context.Shifts.Add(new Shift("Смена #1", ellegiaUsers.First().Id)); context.SaveChanges(); } }
private async Task <AuthenticationTicket> CreateTicketAsync(OpenIdConnectRequest request, EllegiaUser user) { var principal = await _signInManager.CreateUserPrincipalAsync(user); foreach (var claim in principal.Claims) { claim.SetDestinations(OpenIdConnectConstants.Destinations.AccessToken, OpenIdConnectConstants.Destinations.IdentityToken); } var ticket = new AuthenticationTicket( principal, new AuthenticationProperties(), OpenIdConnectServerDefaults.AuthenticationScheme); ticket.SetScopes(new[] { OpenIdConnectConstants.Scopes.OpenId, OpenIdConnectConstants.Scopes.Email, OpenIdConnectConstants.Scopes.Profile, OpenIddictConstants.Scopes.Roles }.Intersect(request.GetScopes())); return(ticket); }