public RoleManagerController(RoleManager <IdentityRole> roleManager, PolicyRolesDbContext context, IOptionsSnapshot <Settings> settings) { _roleManager = roleManager; _policyRolesContext = context; _settings = settings.Value; }
// This method gets called by the runtime. Use this method to add services to the container. public void ConfigureServices(IServiceCollection services) { services.AddControllersWithViews(); services.Configure <Settings>(Configuration.GetSection("TestApp:Settings")); services.AddAzureAppConfiguration(); services.AddRazorPages(); services.AddDbContext <FagElGamousContext>(options => options.UseSqlServer(Configuration["ConnectionStrings:FagElGamousIdentityConnection"])); services.AddDbContext <PolicyRolesDbContext>(options => options.UseSqlServer(Configuration["ConnectionStrings:PolicyRolesDbConnection"])); services.AddDbContext <BYUExcavationDbContext>(options => options.UseSqlServer(Configuration["ConnectionStrings:BYUExcavationDbConnection"])); services.AddAuthentication() .AddGoogle(googleOptions => { IConfigurationSection googleAuthNSection = Configuration.GetSection("Authentication:Google"); googleOptions.ClientId = googleAuthNSection["ClientId"]; googleOptions.ClientSecret = googleAuthNSection["ClientSecret"]; }) .AddFacebook(facebookOptions => { facebookOptions.AppId = Configuration["Authentication:Facebook:AppId"]; facebookOptions.AppSecret = Configuration["Authentication:Facebook:AppSecret"]; }) .AddMicrosoftAccount(microsoftOptions => { microsoftOptions.ClientId = Configuration["Authentication:Microsoft:ClientId"]; microsoftOptions.ClientSecret = Configuration["Authentication:Microsoft:ClientSecret"]; }) .AddTwitter(twitterOptions => { twitterOptions.ConsumerKey = Configuration["Authentication:Twitter:ConsumerAPIKey"]; twitterOptions.ConsumerSecret = Configuration["Authentication:Twitter:ConsumerSecret"]; twitterOptions.RetrieveUserDetails = true; }) .AddGitHub(githubOptions => { githubOptions.ClientId = Configuration["Authentication:GitHub:ClientID"]; githubOptions.ClientSecret = Configuration["Authentication:GitHub:SecretID"]; }); PolicyRolesDbContext context = services.BuildServiceProvider().GetService <PolicyRolesDbContext>(); if (context.WriteRoles.Any()) { services.AddAuthorization(options => { options.AddPolicy("writepolicy", builder => builder.RequireRole(Policy.GetWriteRoles(context))); }); } else { context.WriteRoles.Add(new WriteRole { Role = "Admin" }); context.SaveChanges(); services.AddAuthorization(options => { options.AddPolicy("writepolicy", builder => builder.RequireRole(Policy.GetWriteRoles(context))); }); } if (context.DeleteRoles.Any()) { services.AddAuthorization(options => { options.AddPolicy("deletepolicy", builder => builder.RequireRole(Policy.GetDeleteRoles(context))); }); } else { context.DeleteRoles.Add(new DeleteRole { Role = "Admin" }); context.SaveChanges(); services.AddAuthorization(options => { options.AddPolicy("deletepolicy", builder => builder.RequireRole(Policy.GetDeleteRoles(context))); }); } services.AddTransient <IEmailSender, EmailSender>(); services.Configure <AuthMessageSenderOptions>(Configuration); }