diff --git a/Kyoo/Kyoo.csproj b/Kyoo/Kyoo.csproj index d6e3b6fa..4c2aa336 100644 --- a/Kyoo/Kyoo.csproj +++ b/Kyoo/Kyoo.csproj @@ -19,11 +19,16 @@ + + + + + + - diff --git a/Kyoo/Models/DatabaseContext.cs b/Kyoo/Models/DatabaseContext.cs index 3c19d7d1..2e4d0179 100644 --- a/Kyoo/Models/DatabaseContext.cs +++ b/Kyoo/Models/DatabaseContext.cs @@ -1,9 +1,13 @@ using System; using System.Linq; +using System.Threading.Tasks; +using IdentityServer4.EntityFramework.Entities; +using IdentityServer4.EntityFramework.Extensions; +using IdentityServer4.EntityFramework.Interfaces; using IdentityServer4.EntityFramework.Options; using Kyoo.Models; -using Microsoft.AspNetCore.ApiAuthorization.IdentityServer; using Microsoft.AspNetCore.Identity; +using Microsoft.AspNetCore.Identity.EntityFrameworkCore; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.ChangeTracking; using Microsoft.EntityFrameworkCore.Storage.ValueConversion; @@ -11,13 +15,25 @@ using Microsoft.Extensions.Options; namespace Kyoo { - public class DatabaseContext : ApiAuthorizationDbContext + public class DatabaseContext : IdentityDbContext, IPersistedGrantDbContext { - public DatabaseContext(DbContextOptions options, IOptions operationalStoreOptions) - : base(options, operationalStoreOptions) { } + private readonly IOptions _operationalStoreOptions; + public DatabaseContext(DbContextOptions options, IOptions operationalStoreOptions) + : base(options) + { + _operationalStoreOptions = operationalStoreOptions; + } + + public Task SaveChangesAsync() => base.SaveChangesAsync(); + + public DbSet PersistedGrants { get; set; } + public DbSet DeviceFlowCodes { get; set; } + public DbSet Accounts { get; set; } + + public DbSet Libraries { get; set; } public DbSet Collections { get; set; } public DbSet Shows { get; set; } @@ -76,6 +92,7 @@ namespace Kyoo modelBuilder.Entity().ToTable("UserRoles"); modelBuilder.Entity>().ToTable("UserRoleClaim"); modelBuilder.Entity>().ToTable("UserToken"); + modelBuilder.ConfigurePersistedGrantContext(_operationalStoreOptions.Value); } } } diff --git a/Kyoo/Startup.cs b/Kyoo/Startup.cs index f009f030..cefdc297 100644 --- a/Kyoo/Startup.cs +++ b/Kyoo/Startup.cs @@ -14,6 +14,7 @@ using Microsoft.AspNetCore.SpaServices.AngularCli; using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; +using Microsoft.Extensions.DependencyInjection.Extensions; using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Logging; @@ -52,7 +53,12 @@ namespace Kyoo string assemblyName = typeof(Startup).GetTypeInfo().Assembly.GetName().Name; string publicUrl = _configuration.GetValue("public_url"); - services.AddDefaultIdentity() + services.AddIdentityCore(o => + { + o.Stores.MaxLengthForKeys = 128; + }) + .AddSignInManager() + .AddDefaultTokenProviders() .AddEntityFrameworkStores(); services.AddIdentityServer(options => @@ -81,7 +87,13 @@ namespace Kyoo .AddInMemoryApiResources(IdentityContext.GetApis()) .AddProfileService() .AddSigninKeys(_configuration); - + + services.AddAuthentication(o => + { + o.DefaultScheme = IdentityConstants.ApplicationScheme; + o.DefaultSignInScheme = IdentityConstants.ExternalScheme; + }) + .AddIdentityCookies(o => { }); services.AddAuthentication() .AddJwtBearer(options => {