using System; using System.Security.Claims; using System.Threading.Tasks; using Microsoft.AspNet.Identity; using Microsoft.AspNet.Identity.EntityFramework; using Microsoft.Data.Entity.SqlServer; using Microsoft.Framework.DependencyInjection; using Microsoft.Framework.OptionsModel; namespace IdentitySample.Models { public static class SampleData { public static async Task InitializeIdentityDatabaseAsync(IServiceProvider serviceProvider) { using (var db = serviceProvider.GetRequiredService()) { if (await db.Database.EnsureCreatedAsync()) { await CreateAdminUser(serviceProvider); } } } /// /// Creates a store manager user who can manage the inventory. /// /// /// private static async Task CreateAdminUser(IServiceProvider serviceProvider) { var options = serviceProvider.GetRequiredService>().Value; const string adminRole = "Administrator"; var userManager = serviceProvider.GetRequiredService>(); var roleManager = serviceProvider.GetRequiredService>(); if (!await roleManager.RoleExistsAsync(adminRole)) { await roleManager.CreateAsync(new IdentityRole(adminRole)); } var user = await userManager.FindByNameAsync(options.DefaultAdminUserName); if (user == null) { user = new ApplicationUser { UserName = options.DefaultAdminUserName }; await userManager.CreateAsync(user, options.DefaultAdminPassword); await userManager.AddToRoleAsync(user, adminRole); await userManager.AddClaimAsync(user, new Claim("ManageStore", "Allowed")); } } } }