Aliendreamer

seeding admin in app asp.net core

Nov 12th, 2018
299
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.43 KB | None | 0 0
  1. namespace Chushka.Web.App
  2. {
  3.     using Chushka.Models;
  4.     using Microsoft.AspNetCore.Identity;
  5.     using Microsoft.EntityFrameworkCore;
  6.     using Microsoft.Extensions.DependencyInjection;
  7.     using System;
  8.     using System.Threading.Tasks;
  9.     using Microsoft.AspNetCore;
  10.     using Microsoft.AspNetCore.Hosting;
  11.  
  12.     public class Program
  13.     {
  14.         public static void Main(string[] args)
  15.         {
  16.             var host = CreateWebHostBuilder(args).Build();
  17.  
  18.             using (var scope = host.Services.CreateScope())
  19.             {
  20.                 var serverProvider = scope.ServiceProvider;
  21.  
  22.                 SeedUserRoles(serverProvider).GetAwaiter().GetResult();
  23.             }
  24.  
  25.             host.Run();
  26.         }
  27.  
  28.         public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
  29.             WebHost.CreateDefaultBuilder(args)
  30.                 .UseStartup<Startup>();
  31.  
  32.         private static async Task SeedUserRoles(IServiceProvider serverProvider)
  33.         {
  34.             //initializing custom roles
  35.             var roleManager = serverProvider.GetRequiredService<RoleManager<IdentityRole>>();
  36.             var userManager = serverProvider.GetRequiredService<UserManager<AppUser>>();
  37.  
  38.             string[] roleNames = { "Admin", "Manager" };
  39.  
  40.             foreach (var roleName in roleNames)
  41.             {
  42.                 var roleExist = await roleManager.RoleExistsAsync(roleName);
  43.  
  44.                 if (!roleExist)
  45.                 {
  46.                     //create the roles and seed them to the database: Question 1
  47.                     await roleManager.CreateAsync(new IdentityRole(roleName));
  48.                 }
  49.             }
  50.  
  51.             var users = await userManager.Users.ToListAsync();
  52.  
  53.             //
  54.             // 1. Regex pattern for admins instead of specific name.
  55.             // 2. Controller for roles.
  56.             //
  57.             AppUser user = await userManager.FindByEmailAsync("[email protected]");
  58.  
  59.             if (user == null)
  60.             {
  61.                 user = new AppUser
  62.                 {
  63.                     UserName = "[email protected]",
  64.                     Email = "[email protected]",
  65.                     Fullname = "admin"
  66.                 };
  67.                 await userManager.CreateAsync(user, "[email protected]");
  68.                 await userManager.AddToRoleAsync(user, "Admin");
  69.                 await userManager.AddPasswordAsync(user, "admin");
  70.             }
  71.         }
  72.     }
  73. }
Advertisement
Add Comment
Please, Sign In to add comment