Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- namespace Chushka.Web.App
- {
- using Chushka.Models;
- using Microsoft.AspNetCore.Identity;
- using Microsoft.EntityFrameworkCore;
- using Microsoft.Extensions.DependencyInjection;
- using System;
- using System.Threading.Tasks;
- using Microsoft.AspNetCore;
- using Microsoft.AspNetCore.Hosting;
- public class Program
- {
- public static void Main(string[] args)
- {
- var host = CreateWebHostBuilder(args).Build();
- using (var scope = host.Services.CreateScope())
- {
- var serverProvider = scope.ServiceProvider;
- SeedUserRoles(serverProvider).GetAwaiter().GetResult();
- }
- host.Run();
- }
- public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
- WebHost.CreateDefaultBuilder(args)
- .UseStartup<Startup>();
- private static async Task SeedUserRoles(IServiceProvider serverProvider)
- {
- //initializing custom roles
- var roleManager = serverProvider.GetRequiredService<RoleManager<IdentityRole>>();
- var userManager = serverProvider.GetRequiredService<UserManager<AppUser>>();
- string[] roleNames = { "Admin", "Manager" };
- foreach (var roleName in roleNames)
- {
- var roleExist = await roleManager.RoleExistsAsync(roleName);
- if (!roleExist)
- {
- //create the roles and seed them to the database: Question 1
- await roleManager.CreateAsync(new IdentityRole(roleName));
- }
- }
- var users = await userManager.Users.ToListAsync();
- //
- // 1. Regex pattern for admins instead of specific name.
- // 2. Controller for roles.
- //
- if (user == null)
- {
- user = new AppUser
- {
- UserName = "[email protected]",
- Email = "[email protected]",
- Fullname = "admin"
- };
- await userManager.AddToRoleAsync(user, "Admin");
- await userManager.AddPasswordAsync(user, "admin");
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment