Skip to content

Commit

Permalink
Example1 updated
Browse files Browse the repository at this point in the history
  • Loading branch information
JonPSmith committed Feb 28, 2024
1 parent b841b94 commit a97ed2e
Show file tree
Hide file tree
Showing 2 changed files with 115 additions and 122 deletions.
Original file line number Diff line number Diff line change
@@ -1,22 +1,22 @@
<Project Sdk="Microsoft.NET.Sdk.Web">

<PropertyGroup>
<TargetFramework>net6.0</TargetFramework>
<TargetFramework>net8.0</TargetFramework>
<UserSecretsId>aspnet-Example1.RazorPages.IndividualAccounts-9BFCF434-1CBC-460C-98B7-CBCEDC0204D8</UserSecretsId>
<CopyRefAssembliesToPublishDirectory>false</CopyRefAssembliesToPublishDirectory>
</PropertyGroup>

<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore" Version="6.0.11" />
<PackageReference Include="Microsoft.AspNetCore.Identity.EntityFrameworkCore" Version="6.0.11" />
<PackageReference Include="Microsoft.AspNetCore.Identity.UI" Version="6.0.11" />
<PackageReference Include="Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation" Version="6.0.11" />
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="6.0.11" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="6.0.11">
<PackageReference Include="Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore" Version="8.0.0" />
<PackageReference Include="Microsoft.AspNetCore.Identity.EntityFrameworkCore" Version="8.0.0" />
<PackageReference Include="Microsoft.AspNetCore.Identity.UI" Version="8.0.0" />
<PackageReference Include="Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation" Version="8.0.0" />
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="8.0.0" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="8.0.0">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="6.0.10" />
<PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="8.0.0" />
<PackageReference Include="EfCore.GenericServices.AspNetCore" Version="4.1.1" />
</ItemGroup>

Expand Down
221 changes: 107 additions & 114 deletions Example1.RazorPages.IndividualAccounts/Program.cs
Original file line number Diff line number Diff line change
Expand Up @@ -13,126 +13,119 @@
using AuthPermissions.AspNetCore;
using AuthPermissions.AspNetCore.Services;
using AuthPermissions.AspNetCore.StartupServices;
using Example1.RazorPages.IndividualAccounts;
using Example1.RazorPages.IndividualAccounts.Data;
using LocalizeMessagesAndErrors;
using Microsoft.EntityFrameworkCore;
using RunMethodsSequentially;
using Microsoft.Extensions.Options;

namespace Example1.RazorPages.IndividualAccounts;

public class Program
var builder = WebApplication.CreateBuilder(args);

builder.Services.AddDatabaseDeveloperPageExceptionFilter();

builder.Services.AddDbContext<ApplicationDbContext>(opt =>
opt.UseInMemoryDatabase(nameof(ApplicationDbContext)));

builder.Services.AddDefaultIdentity<IdentityUser>(
options => options.SignIn.RequireConfirmedAccount = false)
.AddEntityFrameworkStores<ApplicationDbContext>();

//Example of configure a page as only shown if you log in
builder.Services.AddRazorPages(options =>
{
options.Conventions.AuthorizePage("/AuthBuiltIn/LoggedInConfigure");
})
#region localization
.AddViewLocalization(options => options.ResourcesPath = "Resources");
#endregion

#region localization - defining the cultures
//see https://learn.microsoft.com/en-us/aspnet/core/fundamentals/localization#localization-middleware
var supportedCultures = new[] { "en", "fr"};
var localizationOptions = new RequestLocalizationOptions()
.SetDefaultCulture(supportedCultures[0])
.AddSupportedCultures(supportedCultures)
.AddSupportedUICultures(supportedCultures);


//This defines that the culture is selected by the culture cookie
localizationOptions.RequestCultureProviders = new List<IRequestCultureProvider>()
{
public static void Main(string[] args)
new CookieRequestCultureProvider(),
//new AcceptLanguageHeaderRequestCultureProvider(),
//new QueryStringRequestCultureProvider()
};

builder.Services.Configure<RequestLocalizationOptions>(options =>
{
List<CultureInfo> supportedCultures = new List<CultureInfo>
{
new ("en"),
new ("fr"),
};
options.DefaultRequestCulture = new RequestCulture("en");
options.SupportedCultures = supportedCultures;
options.SupportedUICultures = supportedCultures;

options.RequestCultureProviders = new List<IRequestCultureProvider>()
{
new CookieRequestCultureProvider(),
new AcceptLanguageHeaderRequestCultureProvider(),
new QueryStringRequestCultureProvider()
};
});
#endregion

//Register the SimpleLocalizer with its own Resource file
//This is used for localization of simple messages
builder.Services.RegisterSimpleLocalizer<AppLocalizeResource>();

builder.Services.RegisterAuthPermissions<Example1Permissions>()
.UsingInMemoryDatabase()
.IndividualAccountsAuthentication()
.AddRolesPermissionsIfEmpty(AppAuthSetupData.RolesDefinition)
.AddAuthUsersIfEmpty(AppAuthSetupData.UsersWithRolesDefinition)
.RegisterAuthenticationProviderReader<SyncIndividualAccountUsers>()
.RegisterFindUserInfoService<IndividualAccountUserLookup>()
.SetupAuthPLocalization<AuthPLocalizeResource>(supportedCultures)
.AddSuperUserToIndividualAccounts()
.SetupAspNetCoreAndDatabase(options =>
{
var builder = WebApplication.CreateBuilder(args);

builder.Services.AddDatabaseDeveloperPageExceptionFilter();

builder.Services.AddDbContext<ApplicationDbContext>(opt =>
opt.UseInMemoryDatabase(nameof(ApplicationDbContext)));

builder.Services.AddDefaultIdentity<IdentityUser>(
options => options.SignIn.RequireConfirmedAccount = false)
.AddEntityFrameworkStores<ApplicationDbContext>();

//Example of configure a page as only shown if you log in
builder.Services.AddRazorPages(options =>
{
options.Conventions.AuthorizePage("/AuthBuiltIn/LoggedInConfigure");
})
#region localization
.AddViewLocalization(options => options.ResourcesPath = "Resources");
#endregion

#region localization - defining the cultures
//see https://learn.microsoft.com/en-us/aspnet/core/fundamentals/localization#localization-middleware
var supportedCultures = new[] { "en", "fr"};
var localizationOptions = new RequestLocalizationOptions()
.SetDefaultCulture(supportedCultures[0])
.AddSupportedCultures(supportedCultures)
.AddSupportedUICultures(supportedCultures);


//This defines that the culture is selected by the culture cookie
localizationOptions.RequestCultureProviders = new List<IRequestCultureProvider>()
{
new CookieRequestCultureProvider(),
//new AcceptLanguageHeaderRequestCultureProvider(),
//new QueryStringRequestCultureProvider()
};

builder.Services.Configure<RequestLocalizationOptions>(options =>
{
List<CultureInfo> supportedCultures = new List<CultureInfo>
{
new ("en"),
new ("fr"),
};
options.DefaultRequestCulture = new RequestCulture("en");
options.SupportedCultures = supportedCultures;
options.SupportedUICultures = supportedCultures;

options.RequestCultureProviders = new List<IRequestCultureProvider>()
{
new CookieRequestCultureProvider(),
new AcceptLanguageHeaderRequestCultureProvider(),
new QueryStringRequestCultureProvider()
};
});
#endregion

//Register the SimpleLocalizer with its own Resource file
//This is used for localization of simple messages
builder.Services.RegisterSimpleLocalizer<AppLocalizeResource>();

builder.Services.RegisterAuthPermissions<Example1Permissions>()
.UsingInMemoryDatabase()
.IndividualAccountsAuthentication()
.AddRolesPermissionsIfEmpty(AppAuthSetupData.RolesDefinition)
.AddAuthUsersIfEmpty(AppAuthSetupData.UsersWithRolesDefinition)
.RegisterAuthenticationProviderReader<SyncIndividualAccountUsers>()
.RegisterFindUserInfoService<IndividualAccountUserLookup>()
.SetupAuthPLocalization<AuthPLocalizeResource>(supportedCultures)
.AddSuperUserToIndividualAccounts()
.SetupAspNetCoreAndDatabase(options =>
{
//Migrate individual account database
options.RegisterServiceToRunInJob<StartupServiceMigrateAnyDbContext<ApplicationDbContext>>();
//Add demo users to the database
options.RegisterServiceToRunInJob<StartupServicesIndividualAccountsAddDemoUsers>();
});


var app = builder.Build();

#region localization

//see https://learn.microsoft.com/en-us/aspnet/core/fundamentals/localization#localization-middleware
app.UseRequestLocalization(localizationOptions);
//var options = app.Services.GetRequiredService<IOptions<RequestLocalizationOptions>>().Value;
//app.UseRequestLocalization(options);

#endregion

// Configure the HTTP request pipeline.
if (!app.Environment.IsDevelopment())
{
app.UseExceptionHandler("/Error");
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
app.UseHsts();
}

app.UseHttpsRedirection();
app.UseStaticFiles();

app.UseRouting();

app.UseAuthorization();

app.MapRazorPages();

app.Run();
}

}
//Migrate individual account database
options.RegisterServiceToRunInJob<StartupServiceMigrateAnyDbContext<ApplicationDbContext>>();
//Add demo users to the database
options.RegisterServiceToRunInJob<StartupServicesIndividualAccountsAddDemoUsers>();
});


var app = builder.Build();

#region localization

//see https://learn.microsoft.com/en-us/aspnet/core/fundamentals/localization#localization-middleware
app.UseRequestLocalization(localizationOptions);
//var options = app.Services.GetRequiredService<IOptions<RequestLocalizationOptions>>().Value;
//app.UseRequestLocalization(options);

#endregion

// Configure the HTTP request pipeline.
if (!app.Environment.IsDevelopment())
{
app.UseExceptionHandler("/Error");
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
app.UseHsts();
}

app.UseHttpsRedirection();
app.UseStaticFiles();

app.UseRouting();

app.UseAuthorization();

app.MapRazorPages();

app.Run();

0 comments on commit a97ed2e

Please sign in to comment.