From c89d25199d20cad16e4df944915e00add02fda39 Mon Sep 17 00:00:00 2001 From: maliming Date: Mon, 4 Dec 2023 16:25:01 +0800 Subject: [PATCH 1/8] Upgrade `OpenIddict` to `5.0.0-preview3`. --- Directory.Packages.props | 10 +- .../app/OpenIddict.Demo.API/Program.cs | 13 +- .../Pages/Index.razor | 35 ++- .../Program.cs | 1 + .../Pages/Index.cshtml | 19 -- .../ServerDataSeedContributor.cs | 9 + ....cs => 20231204054625_Initial.Designer.cs} | 18 +- ...9_Initial.cs => 20231204054625_Initial.cs} | 5 +- .../ServerDbContextModelSnapshot.cs | 16 +- .../wwwroot/libs/abp/jquery/abp.jquery.js | 7 +- .../app/OpenIddict.Demo.Server/yarn.lock | 268 +++++++++--------- .../AbpOpenIddictWildcardDomainBase.cs | 21 +- .../AbpOpenIddictWildcardDomainOptions.cs | 1 - .../AbpValidateAuthorizedParty.cs | 8 +- .../AbpValidateClientPostLogoutRedirectUri.cs | 6 +- .../AbpValidateClientRedirectUri.cs | 8 +- ...pValidatePostLogoutRedirectUriParameter.cs | 6 +- .../AbpValidateRedirectUriParameter.cs | 4 +- .../OpenIddictApplicationConsts.cs | 4 +- .../AbpOpenIddictApplicationStore.cs | 87 +++++- .../Applications/OpenIddictApplication.cs | 20 +- .../OpenIddictApplicationExtensions.cs | 27 +- .../OpenIddictApplicationModel.cs | 20 +- .../AbpOpenIddictAuthorizationStore.cs | 5 +- .../IOpenIddictAuthorizationRepository.cs | 2 +- .../Tokens/AbpOpenIddictTokenStore.cs | 10 +- .../Tokens/IOpenIddictTokenRepository.cs | 4 +- ...EfCoreOpenIddictAuthorizationRepository.cs | 6 +- ...nIddictDbContextModelCreatingExtensions.cs | 7 +- .../Tokens/EfCoreOpenIddictTokenRepository.cs | 12 +- .../MongoOpenIddictAuthorizationRepository.cs | 3 +- .../Tokens/MongoOpenIddictTokenRepository.cs | 13 +- .../AbpOpenIddictApplicationStore_Tests.cs | 74 ++--- .../Data/OpenIddictDataSeedContributor.cs | 2 +- .../Data/OpenIddictDataSeedContributor.cs | 2 +- .../Data/OpenIddictDataSeedContributor.cs | 2 +- .../Data/OpenIddictDataSeedContributor.cs | 2 +- .../OpenIddictDataSeedContributor.cs | 2 +- .../OpenIddictDataSeedContributor.cs | 2 +- 39 files changed, 500 insertions(+), 261 deletions(-) rename modules/openiddict/app/OpenIddict.Demo.Server/Migrations/{20231116094249_Initial.Designer.cs => 20231204054625_Initial.Designer.cs} (99%) rename modules/openiddict/app/OpenIddict.Demo.Server/Migrations/{20231116094249_Initial.cs => 20231204054625_Initial.cs} (99%) diff --git a/Directory.Packages.props b/Directory.Packages.props index 540c7f109d..9c16cf28b7 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -113,11 +113,11 @@ - - - - - + + + + + diff --git a/modules/openiddict/app/OpenIddict.Demo.API/Program.cs b/modules/openiddict/app/OpenIddict.Demo.API/Program.cs index 9fe034cecf..c40a46ad60 100644 --- a/modules/openiddict/app/OpenIddict.Demo.API/Program.cs +++ b/modules/openiddict/app/OpenIddict.Demo.API/Program.cs @@ -1,11 +1,19 @@ -using System.Text; using Microsoft.AspNetCore.Authentication.JwtBearer; -using Microsoft.IdentityModel.Tokens; var builder = WebApplication.CreateBuilder(args); builder.Logging.ClearProviders(); builder.Logging.AddConsole(); +builder.Services.AddCors(options => +{ + options.AddDefaultPolicy(policy => + { + policy.WithOrigins("https://localhost:44304") + .AllowAnyHeader() + .AllowAnyMethod(); + }); +}); + // Add services to the container. builder.Services.AddControllers(); @@ -31,6 +39,7 @@ if (app.Environment.IsDevelopment()) app.UseHttpsRedirection(); +app.UseCors(); app.UseAuthentication(); app.UseAuthorization(); diff --git a/modules/openiddict/app/OpenIddict.Demo.Client.BlazorWASM/Pages/Index.razor b/modules/openiddict/app/OpenIddict.Demo.Client.BlazorWASM/Pages/Index.razor index a2f0e6eb76..7889736c35 100644 --- a/modules/openiddict/app/OpenIddict.Demo.Client.BlazorWASM/Pages/Index.razor +++ b/modules/openiddict/app/OpenIddict.Demo.Client.BlazorWASM/Pages/Index.razor @@ -1,7 +1,11 @@ @page "/" @using System.Security.Claims +@using System.Text.Json +@using Microsoft.AspNetCore.Components.WebAssembly.Authentication +@using System.Net.Http.Headers @inject AuthenticationStateProvider AuthenticationStateProvider +@inject IAccessTokenProvider AccessTokenProvider Index @@ -17,14 +21,31 @@ Welcome to your new app. @if (_claims.Count() > 0) { +

+ @_accessToken +

+
    @foreach (var claim in _claims) {
  • @claim.Type: @claim.Value
  • }
-} + + @{ + var apiResponse = "No API response"; + if (_claimsResponseString != null) + { + apiResponse = JsonSerializer.Serialize(JsonDocument.Parse(_claimsResponseString), new JsonSerializerOptions + { + WriteIndented = true + }); + } + } + @apiResponse; + +} @code { @@ -35,6 +56,8 @@ Welcome to your new app. } private IEnumerable _claims = Enumerable.Empty(); + private string? _accessToken; + private string? _claimsResponseString; private async Task GetClaimsPrincipalData() { @@ -43,8 +66,16 @@ Welcome to your new app. if (user.Identity.IsAuthenticated) { - _claims = user.Claims; + + var result = await AccessTokenProvider.RequestAccessToken(); + result.TryGetToken(out var token); + _accessToken = token?.Value; + + var client = new HttpClient(); + var request = new HttpRequestMessage(HttpMethod.Get, "https://localhost:44303/api/claims"); + request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", _accessToken); + _claimsResponseString = await (await client.SendAsync(request)).Content.ReadAsStringAsync(); } } } diff --git a/modules/openiddict/app/OpenIddict.Demo.Client.BlazorWASM/Program.cs b/modules/openiddict/app/OpenIddict.Demo.Client.BlazorWASM/Program.cs index 9995224252..f4a96ba0f8 100644 --- a/modules/openiddict/app/OpenIddict.Demo.Client.BlazorWASM/Program.cs +++ b/modules/openiddict/app/OpenIddict.Demo.Client.BlazorWASM/Program.cs @@ -21,6 +21,7 @@ builder.Services.AddOidcAuthentication(options => options.ProviderOptions.DefaultScopes.Add("roles"); options.ProviderOptions.DefaultScopes.Add("email"); options.ProviderOptions.DefaultScopes.Add("phone"); + options.ProviderOptions.DefaultScopes.Add("AbpAPI"); }); await builder.Build().RunAsync(); diff --git a/modules/openiddict/app/OpenIddict.Demo.Client.Mvc/Pages/Index.cshtml b/modules/openiddict/app/OpenIddict.Demo.Client.Mvc/Pages/Index.cshtml index ca7e62a411..51646646d1 100644 --- a/modules/openiddict/app/OpenIddict.Demo.Client.Mvc/Pages/Index.cshtml +++ b/modules/openiddict/app/OpenIddict.Demo.Client.Mvc/Pages/Index.cshtml @@ -45,24 +45,5 @@ } @apiResponse; - - request = new HttpRequestMessage(HttpMethod.Get, "https://localhost:44301/api/claims"); - request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", await HttpContext.GetTokenAsync("access_token")); - - response = await client.SendAsync(request); - - - @{ - apiResponse = response.StatusCode.ToString(); - if (response.IsSuccessStatusCode) - { - apiResponse = JsonSerializer.Serialize(JsonDocument.Parse(await response.Content.ReadAsStringAsync()), new JsonSerializerOptions - { - WriteIndented = true - }); - } - } - @apiResponse; - } diff --git a/modules/openiddict/app/OpenIddict.Demo.Server/EntityFrameworkCore/ServerDataSeedContributor.cs b/modules/openiddict/app/OpenIddict.Demo.Server/EntityFrameworkCore/ServerDataSeedContributor.cs index bf6a9cdb15..f63137a0e2 100644 --- a/modules/openiddict/app/OpenIddict.Demo.Server/EntityFrameworkCore/ServerDataSeedContributor.cs +++ b/modules/openiddict/app/OpenIddict.Demo.Server/EntityFrameworkCore/ServerDataSeedContributor.cs @@ -47,8 +47,10 @@ public class ServerDataSeedContributor : IDataSeedContributor, ITransientDepende { await _applicationManager.CreateAsync(new OpenIddictApplicationDescriptor { + ApplicationType = OpenIddictConstants.ApplicationTypes.Web, ClientId = "AbpApp", ClientSecret = "1q2w3e*", + ClientType = OpenIddictConstants.ClientTypes.Confidential, ConsentType = OpenIddictConstants.ConsentTypes.Explicit, DisplayName = "Abp Application", PostLogoutRedirectUris = @@ -93,6 +95,11 @@ public class ServerDataSeedContributor : IDataSeedContributor, ITransientDepende OpenIddictConstants.Permissions.Scopes.Address, OpenIddictConstants.Permissions.Scopes.Phone, OpenIddictConstants.Permissions.Prefixes.Scope + "AbpAPI" + }, + Settings = + { + // Use a shorter access token lifetime for tokens issued to the Postman application. + [OpenIddictConstants.Settings.TokenLifetimes.AccessToken] = TimeSpan.FromMinutes(5).ToString("c", CultureInfo.InvariantCulture) } }); } @@ -101,7 +108,9 @@ public class ServerDataSeedContributor : IDataSeedContributor, ITransientDepende { await _applicationManager.CreateAsync(new OpenIddictApplicationDescriptor { + ApplicationType = OpenIddictConstants.ApplicationTypes.Web, ClientId = "AbpBlazorWASMApp", + ClientType = OpenIddictConstants.ClientTypes.Public, ConsentType = OpenIddictConstants.ConsentTypes.Explicit, DisplayName = "Abp Blazor WASM Application", PostLogoutRedirectUris = diff --git a/modules/openiddict/app/OpenIddict.Demo.Server/Migrations/20231116094249_Initial.Designer.cs b/modules/openiddict/app/OpenIddict.Demo.Server/Migrations/20231204054625_Initial.Designer.cs similarity index 99% rename from modules/openiddict/app/OpenIddict.Demo.Server/Migrations/20231116094249_Initial.Designer.cs rename to modules/openiddict/app/OpenIddict.Demo.Server/Migrations/20231204054625_Initial.Designer.cs index a946b38999..1f0bcae464 100644 --- a/modules/openiddict/app/OpenIddict.Demo.Server/Migrations/20231116094249_Initial.Designer.cs +++ b/modules/openiddict/app/OpenIddict.Demo.Server/Migrations/20231204054625_Initial.Designer.cs @@ -13,7 +13,7 @@ using Volo.Abp.EntityFrameworkCore; namespace OpenIddict.Demo.Server.Migrations { [DbContext(typeof(ServerDbContext))] - [Migration("20231116094249_Initial")] + [Migration("20231204054625_Initial")] partial class Initial { /// @@ -818,6 +818,10 @@ namespace OpenIddict.Demo.Server.Migrations .ValueGeneratedOnAdd() .HasColumnType("uniqueidentifier"); + b.Property("ApplicationType") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + b.Property("ClientId") .HasMaxLength(100) .HasColumnType("nvarchar(100)"); @@ -825,6 +829,10 @@ namespace OpenIddict.Demo.Server.Migrations b.Property("ClientSecret") .HasColumnType("nvarchar(max)"); + b.Property("ClientType") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + b.Property("ClientUri") .HasColumnType("nvarchar(max)"); @@ -872,6 +880,9 @@ namespace OpenIddict.Demo.Server.Migrations .HasDefaultValue(false) .HasColumnName("IsDeleted"); + b.Property("JsonWebKeySet") + .HasColumnType("nvarchar(max)"); + b.Property("LastModificationTime") .HasColumnType("datetime2") .HasColumnName("LastModificationTime"); @@ -898,9 +909,8 @@ namespace OpenIddict.Demo.Server.Migrations b.Property("Requirements") .HasColumnType("nvarchar(max)"); - b.Property("Type") - .HasMaxLength(50) - .HasColumnType("nvarchar(50)"); + b.Property("Settings") + .HasColumnType("nvarchar(max)"); b.HasKey("Id"); diff --git a/modules/openiddict/app/OpenIddict.Demo.Server/Migrations/20231116094249_Initial.cs b/modules/openiddict/app/OpenIddict.Demo.Server/Migrations/20231204054625_Initial.cs similarity index 99% rename from modules/openiddict/app/OpenIddict.Demo.Server/Migrations/20231116094249_Initial.cs rename to modules/openiddict/app/OpenIddict.Demo.Server/Migrations/20231204054625_Initial.cs index 89de930745..43e69e2d57 100644 --- a/modules/openiddict/app/OpenIddict.Demo.Server/Migrations/20231116094249_Initial.cs +++ b/modules/openiddict/app/OpenIddict.Demo.Server/Migrations/20231204054625_Initial.cs @@ -340,17 +340,20 @@ namespace OpenIddict.Demo.Server.Migrations columns: table => new { Id = table.Column(type: "uniqueidentifier", nullable: false), + ApplicationType = table.Column(type: "nvarchar(50)", maxLength: 50, nullable: true), ClientId = table.Column(type: "nvarchar(100)", maxLength: 100, nullable: true), ClientSecret = table.Column(type: "nvarchar(max)", nullable: true), + ClientType = table.Column(type: "nvarchar(50)", maxLength: 50, nullable: true), ConsentType = table.Column(type: "nvarchar(50)", maxLength: 50, nullable: true), DisplayName = table.Column(type: "nvarchar(max)", nullable: true), DisplayNames = table.Column(type: "nvarchar(max)", nullable: true), + JsonWebKeySet = table.Column(type: "nvarchar(max)", nullable: true), Permissions = table.Column(type: "nvarchar(max)", nullable: true), PostLogoutRedirectUris = table.Column(type: "nvarchar(max)", nullable: true), Properties = table.Column(type: "nvarchar(max)", nullable: true), RedirectUris = table.Column(type: "nvarchar(max)", nullable: true), Requirements = table.Column(type: "nvarchar(max)", nullable: true), - Type = table.Column(type: "nvarchar(50)", maxLength: 50, nullable: true), + Settings = table.Column(type: "nvarchar(max)", nullable: true), ClientUri = table.Column(type: "nvarchar(max)", nullable: true), LogoUri = table.Column(type: "nvarchar(max)", nullable: true), ExtraProperties = table.Column(type: "nvarchar(max)", nullable: false), diff --git a/modules/openiddict/app/OpenIddict.Demo.Server/Migrations/ServerDbContextModelSnapshot.cs b/modules/openiddict/app/OpenIddict.Demo.Server/Migrations/ServerDbContextModelSnapshot.cs index dcd97f6304..2ff52d58d5 100644 --- a/modules/openiddict/app/OpenIddict.Demo.Server/Migrations/ServerDbContextModelSnapshot.cs +++ b/modules/openiddict/app/OpenIddict.Demo.Server/Migrations/ServerDbContextModelSnapshot.cs @@ -815,6 +815,10 @@ namespace OpenIddict.Demo.Server.Migrations .ValueGeneratedOnAdd() .HasColumnType("uniqueidentifier"); + b.Property("ApplicationType") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + b.Property("ClientId") .HasMaxLength(100) .HasColumnType("nvarchar(100)"); @@ -822,6 +826,10 @@ namespace OpenIddict.Demo.Server.Migrations b.Property("ClientSecret") .HasColumnType("nvarchar(max)"); + b.Property("ClientType") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + b.Property("ClientUri") .HasColumnType("nvarchar(max)"); @@ -869,6 +877,9 @@ namespace OpenIddict.Demo.Server.Migrations .HasDefaultValue(false) .HasColumnName("IsDeleted"); + b.Property("JsonWebKeySet") + .HasColumnType("nvarchar(max)"); + b.Property("LastModificationTime") .HasColumnType("datetime2") .HasColumnName("LastModificationTime"); @@ -895,9 +906,8 @@ namespace OpenIddict.Demo.Server.Migrations b.Property("Requirements") .HasColumnType("nvarchar(max)"); - b.Property("Type") - .HasMaxLength(50) - .HasColumnType("nvarchar(50)"); + b.Property("Settings") + .HasColumnType("nvarchar(max)"); b.HasKey("Id"); diff --git a/modules/openiddict/app/OpenIddict.Demo.Server/wwwroot/libs/abp/jquery/abp.jquery.js b/modules/openiddict/app/OpenIddict.Demo.Server/wwwroot/libs/abp/jquery/abp.jquery.js index 942bddd39e..9137fcc989 100644 --- a/modules/openiddict/app/OpenIddict.Demo.Server/wwwroot/libs/abp/jquery/abp.jquery.js +++ b/modules/openiddict/app/OpenIddict.Demo.Server/wwwroot/libs/abp/jquery/abp.jquery.js @@ -371,13 +371,18 @@ var abp = abp || {}; }; var _loadScript = function (url, loadCallback, failCallback) { + var nonce = document.body.nonce || document.body.getAttribute('nonce'); _loadFromUrl(url, loadCallback, failCallback, function (urlInfo) { $.get({ url: url, dataType: 'text' }) .done(function (script) { - $.globalEval(script); + if(nonce){ + $.globalEval(script, { nonce: nonce}); + }else{ + $.globalEval(script); + } urlInfo.succeed(); }) .fail(function () { diff --git a/modules/openiddict/app/OpenIddict.Demo.Server/yarn.lock b/modules/openiddict/app/OpenIddict.Demo.Server/yarn.lock index 9a20d73eef..9f48860d42 100644 --- a/modules/openiddict/app/OpenIddict.Demo.Server/yarn.lock +++ b/modules/openiddict/app/OpenIddict.Demo.Server/yarn.lock @@ -2,39 +2,39 @@ # yarn lockfile v1 -"@abp/aspnetcore.mvc.ui.theme.basic@~7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-7.0.0.tgz#b61845e6c2d7486575ab0fd177e7c87005f51d54" - integrity sha512-T4rhCG+O3agwD0pt7m/977ID8Hm0ME9zlqyHIQWiIIaRbicmgblr3OY5szv0C5ttCTUsjzeYlxtcv7I+7SXcaA== - dependencies: - "@abp/aspnetcore.mvc.ui.theme.shared" "~7.0.0" - -"@abp/aspnetcore.mvc.ui.theme.shared@~7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-7.0.0.tgz#d2c2785dfe0e482677a38d19f40399eddc246a3b" - integrity sha512-LNetkktN3cMuo28bTrKKC0qYo4vo6OKxWTSGX7tXI9uyd0fPHupwQSh5cNzrJ6KZjNLxINn6MphWiSbcTRYLZw== - dependencies: - "@abp/aspnetcore.mvc.ui" "~7.0.0" - "@abp/bootstrap" "~7.0.0" - "@abp/bootstrap-datepicker" "~7.0.0" - "@abp/bootstrap-daterangepicker" "~7.0.0" - "@abp/datatables.net-bs5" "~7.0.0" - "@abp/font-awesome" "~7.0.0" - "@abp/jquery-form" "~7.0.0" - "@abp/jquery-validation-unobtrusive" "~7.0.0" - "@abp/lodash" "~7.0.0" - "@abp/luxon" "~7.0.0" - "@abp/malihu-custom-scrollbar-plugin" "~7.0.0" - "@abp/moment" "~7.0.0" - "@abp/select2" "~7.0.0" - "@abp/sweetalert2" "~7.0.0" - "@abp/timeago" "~7.0.0" - "@abp/toastr" "~7.0.0" - -"@abp/aspnetcore.mvc.ui@~7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-7.0.0.tgz#9b55260d41c3dc0f94c6210b88ed8cdb549fea05" - integrity sha512-Ualz90DAgixUOV/B4xoQuGpSfpyDp8vsxB/56qnHcWtbHqdI9lEjdmZstH2CwV6Ey6vIDNMlPR3azbQlEkwslg== +"@abp/aspnetcore.mvc.ui.theme.basic@~8.0.0-rc.2": + version "8.0.0-rc.2" + resolved "https://www.myget.org/F/abp-nightly/npm/@abp/aspnetcore.mvc.ui.theme.basic/-/@abp/aspnetcore.mvc.ui.theme.basic-8.0.0-rc.2.tgz#ff10cf70d483fd12304e463ef240c113fceb2bb3" + integrity sha1-/xDPcNSD/RIwTkY+8kDBE/zrK7M= + dependencies: + "@abp/aspnetcore.mvc.ui.theme.shared" "~8.0.0-rc.2" + +"@abp/aspnetcore.mvc.ui.theme.shared@~8.0.0-rc.2": + version "8.0.0-rc.2" + resolved "https://www.myget.org/F/abp-nightly/npm/@abp/aspnetcore.mvc.ui.theme.shared/-/@abp/aspnetcore.mvc.ui.theme.shared-8.0.0-rc.2.tgz#db570c960ad1b250292a0211317634fbeb762a52" + integrity sha1-21cMlgrRslApKgIRMXY0++t2KlI= + dependencies: + "@abp/aspnetcore.mvc.ui" "~8.0.0-rc.2" + "@abp/bootstrap" "~8.0.0-rc.2" + "@abp/bootstrap-datepicker" "~8.0.0-rc.2" + "@abp/bootstrap-daterangepicker" "~8.0.0-rc.2" + "@abp/datatables.net-bs5" "~8.0.0-rc.2" + "@abp/font-awesome" "~8.0.0-rc.2" + "@abp/jquery-form" "~8.0.0-rc.2" + "@abp/jquery-validation-unobtrusive" "~8.0.0-rc.2" + "@abp/lodash" "~8.0.0-rc.2" + "@abp/luxon" "~8.0.0-rc.2" + "@abp/malihu-custom-scrollbar-plugin" "~8.0.0-rc.2" + "@abp/moment" "~8.0.0-rc.2" + "@abp/select2" "~8.0.0-rc.2" + "@abp/sweetalert2" "~8.0.0-rc.2" + "@abp/timeago" "~8.0.0-rc.2" + "@abp/toastr" "~8.0.0-rc.2" + +"@abp/aspnetcore.mvc.ui@~8.0.0-rc.2": + version "8.0.0-rc.2" + resolved "https://www.myget.org/F/abp-nightly/npm/@abp/aspnetcore.mvc.ui/-/@abp/aspnetcore.mvc.ui-8.0.0-rc.2.tgz#57099c3064f462713940a1d40fbddfe7b14510eb" + integrity sha1-VwmcMGT0YnE5QKHUD73f57FFEOs= dependencies: ansi-colors "^4.1.1" extend-object "^1.0.0" @@ -43,160 +43,160 @@ merge-stream "^2.0.0" micromatch "^4.0.2" -"@abp/bootstrap-datepicker@~7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-7.0.0.tgz#7d83206c7a496addd9136ebd08635fd55e88e004" - integrity sha512-IBr1lyptW1w8E34yDfx8UcY/9QhWn54X+p1VsVi5vNsabIw/eV2cizfU200w7qdWRENJxWR2rCbvPAvfB79erA== +"@abp/bootstrap-datepicker@~8.0.0-rc.2": + version "8.0.0-rc.2" + resolved "https://www.myget.org/F/abp-nightly/npm/@abp/bootstrap-datepicker/-/@abp/bootstrap-datepicker-8.0.0-rc.2.tgz#85e41ff35b7306040e0dfdaabc04c9dec280ae0f" + integrity sha1-heQf81tzBgQODf2qvATJ3sKArg8= dependencies: bootstrap-datepicker "^1.9.0" -"@abp/bootstrap-daterangepicker@~7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@abp/bootstrap-daterangepicker/-/bootstrap-daterangepicker-7.0.0.tgz#8bbbbb5696edbe9dfb02c5057e5aaf0b1e4b3296" - integrity sha512-+dWOj3H5rerpt1JMIWeSEjWh2WkJxYy944BBO42G0TYVghrWFSZkpu3HQTJu4hc/WSEFcHBbE5DmbGmg8tSpvA== +"@abp/bootstrap-daterangepicker@~8.0.0-rc.2": + version "8.0.0-rc.2" + resolved "https://www.myget.org/F/abp-nightly/npm/@abp/bootstrap-daterangepicker/-/@abp/bootstrap-daterangepicker-8.0.0-rc.2.tgz#9380b4e29c69fe8ecec4877c9bbe443857e2e902" + integrity sha1-k4C04pxp/o7OxId8m75EOFfi6QI= dependencies: bootstrap-daterangepicker "^3.1.0" -"@abp/bootstrap@~7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-7.0.0.tgz#f28bf80bf0422c726a563588ed07697d0c990ec9" - integrity sha512-7u6x8hPf4ldpoxpVYZrIvo9AvVdUQdASaDWXgYiuIjgR+xvnVwD1cWI/jzAhKLnnVXfCpv9pcUYp6bfyCHpO8g== +"@abp/bootstrap@~8.0.0-rc.2": + version "8.0.0-rc.2" + resolved "https://www.myget.org/F/abp-nightly/npm/@abp/bootstrap/-/@abp/bootstrap-8.0.0-rc.2.tgz#9d36df7aa5b78ada6739633dabedf0c05fdedbde" + integrity sha1-nTbfeqW3itpnOWM9q+3wwF/e294= dependencies: - "@abp/core" "~7.0.0" + "@abp/core" "~8.0.0-rc.2" bootstrap "^5.1.3" -"@abp/core@~7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@abp/core/-/core-7.0.0.tgz#f2f62ea826563cb7498dff1534f2e87a875002e4" - integrity sha512-I9V+amo8a4eYlKeMV6fxb+2uvBLZkuJv78IRilmL6jOxg5F9mJuvPzg7XQugMnDQ9NZXErjDW04DyR/5OfeIiA== +"@abp/core@~8.0.0-rc.2": + version "8.0.0-rc.2" + resolved "https://www.myget.org/F/abp-nightly/npm/@abp/core/-/@abp/core-8.0.0-rc.2.tgz#6167929da30563b3b2f1938be40648bd08db61af" + integrity sha1-YWeSnaMFY7Oy8ZOL5AZIvQjbYa8= dependencies: - "@abp/utils" "~7.0.0" + "@abp/utils" "~8.0.0-rc.2" -"@abp/datatables.net-bs5@~7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs5/-/datatables.net-bs5-7.0.0.tgz#f85e62d8f634dd0493f6e0bf093b43b1a83ccd1c" - integrity sha512-yul58rrMylQJUJS4aUZNpm85dLbU1IF84LESAqFKrRST0v3uK3/qXdXgir2XQt0cuOv33rQIrljKRovxxv57zA== +"@abp/datatables.net-bs5@~8.0.0-rc.2": + version "8.0.0-rc.2" + resolved "https://www.myget.org/F/abp-nightly/npm/@abp/datatables.net-bs5/-/@abp/datatables.net-bs5-8.0.0-rc.2.tgz#a5d36298ad7ddb59dc66917eeb10f3898d4f6e39" + integrity sha1-pdNimK1921ncZpF+6xDziY1Pbjk= dependencies: - "@abp/datatables.net" "~7.0.0" + "@abp/datatables.net" "~8.0.0-rc.2" datatables.net-bs5 "^1.11.4" -"@abp/datatables.net@~7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-7.0.0.tgz#d6b0557695070a3fdb939e4f3c6593a092881081" - integrity sha512-vETe0eUB5LXQP3oHdwjMibXYFcXmwjkZea3ZoCHH9IG/gLmmrr0zM8yQHwRJvJv+wkxUtp2cWwcMMLFmK5o2Aw== +"@abp/datatables.net@~8.0.0-rc.2": + version "8.0.0-rc.2" + resolved "https://www.myget.org/F/abp-nightly/npm/@abp/datatables.net/-/@abp/datatables.net-8.0.0-rc.2.tgz#267dcb7a49b708af83de3dfbdeb2f42617d46708" + integrity sha1-Jn3Lekm3CK+D3j373rL0JhfUZwg= dependencies: - "@abp/jquery" "~7.0.0" + "@abp/jquery" "~8.0.0-rc.2" datatables.net "^1.11.4" -"@abp/font-awesome@~7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-7.0.0.tgz#938f4e4cf3d46e0ec45fc60f568519f4df7221a3" - integrity sha512-UXiO/y9yrguhvev8BmFEKzdek0wMC25IwppMOsVmxtv/SiCRUsHGIzyTVs1ZLuvlL94cuxxqfIHrQrat423/0g== +"@abp/font-awesome@~8.0.0-rc.2": + version "8.0.0-rc.2" + resolved "https://www.myget.org/F/abp-nightly/npm/@abp/font-awesome/-/@abp/font-awesome-8.0.0-rc.2.tgz#2c7f392d4a7971f34ef6fa2835901183b2731976" + integrity sha1-LH85LUp5cfNO9vooNZARg7JzGXY= dependencies: - "@abp/core" "~7.0.0" + "@abp/core" "~8.0.0-rc.2" "@fortawesome/fontawesome-free" "^5.15.4" -"@abp/jquery-form@~7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-7.0.0.tgz#86a051c9d98b51ce70d15ee578cf4f5d9c628030" - integrity sha512-nm89ufHtO+QFaVZ+TwihuWgmEpxhaFoUUbuD7Plzt3PpFWeGet722yTma7MUr10FUTIshOiBBWJ84+ak+CMqgA== +"@abp/jquery-form@~8.0.0-rc.2": + version "8.0.0-rc.2" + resolved "https://www.myget.org/F/abp-nightly/npm/@abp/jquery-form/-/@abp/jquery-form-8.0.0-rc.2.tgz#45e2a3d838ed8c2b3f59aa6eb6f62b2e7a5934fa" + integrity sha1-ReKj2DjtjCs/WaputvYrLnpZNPo= dependencies: - "@abp/jquery" "~7.0.0" + "@abp/jquery" "~8.0.0-rc.2" jquery-form "^4.3.0" -"@abp/jquery-validation-unobtrusive@~7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-7.0.0.tgz#5049fc367ed8ed7b0faff63b89a7eee1619afaf9" - integrity sha512-B8OPreI05utq3IPyU+/713e0c35OjQrS5OKO7dZs1D6V9L6S/VzkeD3sdoVJQ0Syh59KcSr3IGr1F9VM1O0LJw== +"@abp/jquery-validation-unobtrusive@~8.0.0-rc.2": + version "8.0.0-rc.2" + resolved "https://www.myget.org/F/abp-nightly/npm/@abp/jquery-validation-unobtrusive/-/@abp/jquery-validation-unobtrusive-8.0.0-rc.2.tgz#c6a4e3081f1d7eadff34592b8cf0498db40170a0" + integrity sha1-xqTjCB8dfq3/NFkrjPBJjbQBcKA= dependencies: - "@abp/jquery-validation" "~7.0.0" + "@abp/jquery-validation" "~8.0.0-rc.2" jquery-validation-unobtrusive "^3.2.12" -"@abp/jquery-validation@~7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-7.0.0.tgz#eebadba703391ce6dea1a5217a177af0bafe4f4b" - integrity sha512-6YrYZhVZBTt3897eR0t/b9cQp4gMsiylhe6xqtZBhcuTlS5q0ac30UeiOj9bsBisg4TWS6+3XZYUccdM38YE0Q== +"@abp/jquery-validation@~8.0.0-rc.2": + version "8.0.0-rc.2" + resolved "https://www.myget.org/F/abp-nightly/npm/@abp/jquery-validation/-/@abp/jquery-validation-8.0.0-rc.2.tgz#4282682538c450bffaba2558cbcc8ac9779736b6" + integrity sha1-QoJoJTjEUL/6uiVYy8yKyXeXNrY= dependencies: - "@abp/jquery" "~7.0.0" + "@abp/jquery" "~8.0.0-rc.2" jquery-validation "^1.19.3" -"@abp/jquery@~7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-7.0.0.tgz#0ec51b53c92bd23100bbbe1f719e7e1c13c41406" - integrity sha512-Gsyl1Bl6ahIv1Sc0y1Zt9iaYeS3HCjx7mxJGMitQiKOmKRNHDX6bOzcUN2tY3CaZ+Q5lgHw9RNehleFF2AasJw== +"@abp/jquery@~8.0.0-rc.2": + version "8.0.0-rc.2" + resolved "https://www.myget.org/F/abp-nightly/npm/@abp/jquery/-/@abp/jquery-8.0.0-rc.2.tgz#e54905bbd5efa13f9a87854608f103e15757a26c" + integrity sha1-5UkFu9XvoT+ah4VGCPED4VdXomw= dependencies: - "@abp/core" "~7.0.0" + "@abp/core" "~8.0.0-rc.2" jquery "~3.6.0" -"@abp/lodash@~7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-7.0.0.tgz#7086287a6fafee12a44b2c2abc3c9bea4338ebde" - integrity sha512-JbUxeZNB/RYETPxALKuMJ78SeuVxHPXjsl1lv21XrRhOU6SaQMIFMHWL7AlfLjLS/ibbSXHoHM1K/YwkN3zAZQ== +"@abp/lodash@~8.0.0-rc.2": + version "8.0.0-rc.2" + resolved "https://www.myget.org/F/abp-nightly/npm/@abp/lodash/-/@abp/lodash-8.0.0-rc.2.tgz#1bca1821db7524e1c612cfe23319abab5d874453" + integrity sha1-G8oYIdt1JOHGEs/iMxmrq12HRFM= dependencies: - "@abp/core" "~7.0.0" + "@abp/core" "~8.0.0-rc.2" lodash "^4.17.21" -"@abp/luxon@~7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-7.0.0.tgz#5f781dc826fc1f15af9da52b032f2d4fc1b61c4d" - integrity sha512-zbHZuvkH4F5f0/r2Rfr42k+iNkHlJJKZMCyaCjcDcypLHg/HSsVnpVNjqCrdggSxDgx/7jdf6M3aRIa6hINthA== +"@abp/luxon@~8.0.0-rc.2": + version "8.0.0-rc.2" + resolved "https://www.myget.org/F/abp-nightly/npm/@abp/luxon/-/@abp/luxon-8.0.0-rc.2.tgz#336800a04fd72c42f2b9a00da864a708d0c730c6" + integrity sha1-M2gAoE/XLELyuaANqGSnCNDHMMY= dependencies: - "@abp/core" "~7.0.0" + "@abp/core" "~8.0.0-rc.2" luxon "^2.3.0" -"@abp/malihu-custom-scrollbar-plugin@~7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-7.0.0.tgz#6d01a2a75d04bb1919a9ef4c6bfb8559fb2a1744" - integrity sha512-S6rlGNtcgFtfyuF2/1yoeA6VWE1a4ChGWll08DAwM9oz4ULU2vsjQCsbcLB3uhgmTKmF0Q7I964AF1Ngc7FfrQ== +"@abp/malihu-custom-scrollbar-plugin@~8.0.0-rc.2": + version "8.0.0-rc.2" + resolved "https://www.myget.org/F/abp-nightly/npm/@abp/malihu-custom-scrollbar-plugin/-/@abp/malihu-custom-scrollbar-plugin-8.0.0-rc.2.tgz#30e7f8fb1edfa921e413f7c166fcac03c9702993" + integrity sha1-MOf4+x7fqSHkE/fBZvysA8lwKZM= dependencies: - "@abp/core" "~7.0.0" + "@abp/core" "~8.0.0-rc.2" malihu-custom-scrollbar-plugin "^3.1.5" -"@abp/moment@~7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@abp/moment/-/moment-7.0.0.tgz#fd5480a0f4e59e6cad7fb7dda1167e75eb9b872d" - integrity sha512-22gWkJgb16DAuq4dqol5gNR1xXkJLXfI30lOOMFhGAuFNlyhQiaZH7tk/pt/wk8+74zi5swdcx42R4C4ioJsMg== +"@abp/moment@~8.0.0-rc.2": + version "8.0.0-rc.2" + resolved "https://www.myget.org/F/abp-nightly/npm/@abp/moment/-/@abp/moment-8.0.0-rc.2.tgz#47e65d9cd7f58d2902da2df584d23d6500c9aa4e" + integrity sha1-R+ZdnNf1jSkC2i31hNI9ZQDJqk4= dependencies: moment "^2.9.0" -"@abp/select2@~7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-7.0.0.tgz#510b6a281beb10708609308fe8a001ceb294bdbe" - integrity sha512-1LsxnglYz87zus2XLiknmnISq1WB+FOqNVkVEV5B/tgjZxB47QDHlBAsDq+CVSUdHupvyaoqjvzjhepQWn4lXg== +"@abp/select2@~8.0.0-rc.2": + version "8.0.0-rc.2" + resolved "https://www.myget.org/F/abp-nightly/npm/@abp/select2/-/@abp/select2-8.0.0-rc.2.tgz#eab2d8c788490dfb42e164535a2ec0e5341c9463" + integrity sha1-6rLYx4hJDftC4WRTWi7A5TQclGM= dependencies: - "@abp/core" "~7.0.0" + "@abp/core" "~8.0.0-rc.2" select2 "^4.0.13" -"@abp/sweetalert2@~7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@abp/sweetalert2/-/sweetalert2-7.0.0.tgz#0c4ff48755bbc13e00430a5c7107a2d3c0f4ffc6" - integrity sha512-mVFfikx48hnYqQzvmkrYw1pa+ggKkLD+S94U70aEMZE+pqYsVzkPHckFKPqi+iQL265iQ8zTLgeclYCrOsEnrg== +"@abp/sweetalert2@~8.0.0-rc.2": + version "8.0.0-rc.2" + resolved "https://www.myget.org/F/abp-nightly/npm/@abp/sweetalert2/-/@abp/sweetalert2-8.0.0-rc.2.tgz#7c3ca3ffff01a43a3603f49a1986f162157e2a72" + integrity sha1-fDyj//8BpDo2A/SaGYbxYhV+KnI= dependencies: - "@abp/core" "~7.0.0" + "@abp/core" "~8.0.0-rc.2" sweetalert2 "^11.3.6" -"@abp/timeago@~7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-7.0.0.tgz#b5c0a98511cef63d24d51c531adccc135d12706e" - integrity sha512-Y4PZxP4YVUVIQp8mQtNCxdsK9JxxQj7QJURGVtS+v4bfr6HO9GHK2Byq57ypCdB6hHcn+DJ/NHJV8qANcjHnFA== +"@abp/timeago@~8.0.0-rc.2": + version "8.0.0-rc.2" + resolved "https://www.myget.org/F/abp-nightly/npm/@abp/timeago/-/@abp/timeago-8.0.0-rc.2.tgz#ed98d40b1fa2fa7e65bc3ad84db896e32184a112" + integrity sha1-7ZjUCx+i+n5lvDrYTbiW4yGEoRI= dependencies: - "@abp/jquery" "~7.0.0" + "@abp/jquery" "~8.0.0-rc.2" timeago "^1.6.7" -"@abp/toastr@~7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-7.0.0.tgz#4704e61aa0ac741dd4a53505533a5278b5c205cb" - integrity sha512-kDd4YkyOInBs1u1enOL6ov8HKUJwZbJ3Dx0GI+UNnl+7/LFboeWBfsGukDTVaCn8U73jEP+wbc98mTe8j2coZA== +"@abp/toastr@~8.0.0-rc.2": + version "8.0.0-rc.2" + resolved "https://www.myget.org/F/abp-nightly/npm/@abp/toastr/-/@abp/toastr-8.0.0-rc.2.tgz#c494bb1070ef6aa80d443d11a61f93c03d82f543" + integrity sha1-xJS7EHDvaqgNRD0Rph+TwD2C9UM= dependencies: - "@abp/jquery" "~7.0.0" + "@abp/jquery" "~8.0.0-rc.2" toastr "^2.1.4" -"@abp/utils@~7.0.0": - version "7.0.0" - resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-7.0.0.tgz#662645b8774b048ba5eb6f7971fa1f20b909ad96" - integrity sha512-JLufGsUmZ8jUdZNteXXp/phYqVCiOHO6ymMyd2oUjVEnRh3wRtRs4snhN2MQruGa6KCbPHkjGhXiQTUo75IbaQ== +"@abp/utils@~8.0.0-rc.2": + version "8.0.0-rc.2" + resolved "https://www.myget.org/F/abp-nightly/npm/@abp/utils/-/@abp/utils-8.0.0-rc.2.tgz#c2959e5161e4102d5757a571d16bd3a4316779fb" + integrity sha1-wpWeUWHkEC1XV6Vx0WvTpDFnefs= dependencies: - just-compare "^1.3.0" + just-compare "^2.3.0" "@fortawesome/fontawesome-free@^5.15.4": version "5.15.4" @@ -1439,10 +1439,10 @@ json-stable-stringify-without-jsonify@^1.0.1: resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= -just-compare@^1.3.0: - version "1.5.1" - resolved "https://registry.yarnpkg.com/just-compare/-/just-compare-1.5.1.tgz#aed7e93e6bae9c3b69d79aea7805684132a0c0c5" - integrity sha512-xDEEFHNIyJNmN4uo/2RVeUcay9THtN/5ka/iw98Y/gsa8w9KXZQuyaf5eFUY6VlntA2+G+bdPmdhqqTs7T+BRw== +just-compare@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/just-compare/-/just-compare-2.3.0.tgz#a2adcc1d1940536263275f5a1ef1298bcacfeda7" + integrity sha512-6shoR7HDT+fzfL3gBahx1jZG3hWLrhPAf+l7nCwahDdT9XDtosB9kIF0ZrzUp5QY8dJWfQVr5rnsPqsbvflDzg== just-debounce@^1.0.0: version "1.1.0" diff --git a/modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/WildcardDomains/AbpOpenIddictWildcardDomainBase.cs b/modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/WildcardDomains/AbpOpenIddictWildcardDomainBase.cs index 8839871832..c3ba2c6bce 100644 --- a/modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/WildcardDomains/AbpOpenIddictWildcardDomainBase.cs +++ b/modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/WildcardDomains/AbpOpenIddictWildcardDomainBase.cs @@ -1,45 +1,58 @@ using System; using System.Threading.Tasks; +using Microsoft.Extensions.Logging; +using Microsoft.Extensions.Logging.Abstractions; using Microsoft.Extensions.Options; using OpenIddict.Server; using Volo.Abp.Text.Formatting; namespace Volo.Abp.OpenIddict.WildcardDomains; -public abstract class AbpOpenIddictWildcardDomainBase : IOpenIddictServerHandler +public abstract class AbpOpenIddictWildcardDomainBase : IOpenIddictServerHandler where THandler : class + where TOriginalHandler : class where TContext : OpenIddictServerEvents.BaseContext { - protected THandler Handler { get; set; } + public ILogger Logger { get; set; } + protected TOriginalHandler OriginalHandler { get; set; } protected AbpOpenIddictWildcardDomainOptions WildcardDomainOptions { get; } - protected AbpOpenIddictWildcardDomainBase(IOptions wildcardDomainOptions, THandler handler) + protected AbpOpenIddictWildcardDomainBase(IOptions wildcardDomainOptions, TOriginalHandler originalHandler) { WildcardDomainOptions = wildcardDomainOptions.Value; - Handler = handler; + OriginalHandler = originalHandler; + + Logger = NullLogger.Instance; } public abstract ValueTask HandleAsync(TContext context); protected virtual Task CheckWildcardDomainAsync(string url) { + Logger.LogDebug("Checking wildcard domain for url: {url}", url); + foreach (var domainFormat in WildcardDomainOptions.WildcardDomainsFormat) { + Logger.LogDebug("Checking wildcard domain format: {domainFormat}", domainFormat); var extractResult = FormattedStringValueExtracter.Extract(url, domainFormat, ignoreCase: true); if (extractResult.IsMatch) { + Logger.LogDebug("Wildcard domain found for url: {url}", url); return Task.FromResult(true); } } foreach (var domainFormat in WildcardDomainOptions.WildcardDomainsFormat) { + Logger.LogDebug("Checking wildcard domain format: {domainFormat}", domainFormat); if (domainFormat.Replace("{0}.", "").Equals(url, StringComparison.OrdinalIgnoreCase)) { + Logger.LogDebug("Wildcard domain found for url: {url}", url); return Task.FromResult(true); } } + Logger.LogDebug("Wildcard domain not found for url: {url}", url); return Task.FromResult(false); } } diff --git a/modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/WildcardDomains/AbpOpenIddictWildcardDomainOptions.cs b/modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/WildcardDomains/AbpOpenIddictWildcardDomainOptions.cs index 5b0e8f591a..358974e3d6 100644 --- a/modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/WildcardDomains/AbpOpenIddictWildcardDomainOptions.cs +++ b/modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/WildcardDomains/AbpOpenIddictWildcardDomainOptions.cs @@ -12,5 +12,4 @@ public class AbpOpenIddictWildcardDomainOptions { WildcardDomainsFormat = new HashSet(); } - } diff --git a/modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/WildcardDomains/AbpValidateAuthorizedParty.cs b/modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/WildcardDomains/AbpValidateAuthorizedParty.cs index 89ebfee28c..5c22de29a2 100644 --- a/modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/WildcardDomains/AbpValidateAuthorizedParty.cs +++ b/modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/WildcardDomains/AbpValidateAuthorizedParty.cs @@ -5,12 +5,12 @@ using OpenIddict.Server; namespace Volo.Abp.OpenIddict.WildcardDomains; -public class AbpValidateAuthorizedParty : AbpOpenIddictWildcardDomainBase +public class AbpValidateAuthorizedParty : AbpOpenIddictWildcardDomainBase { public static OpenIddictServerHandlerDescriptor Descriptor { get; } = OpenIddictServerHandlerDescriptor.CreateBuilder() .UseScopedHandler() - .SetOrder(OpenIddictServerHandlers.Session.ValidateToken.Descriptor.Order + 1_000) + .SetOrder(OpenIddictServerHandlers.Session.ValidateEndpointPermissions.Descriptor.Order + 1_000) .SetType(OpenIddictServerHandlerType.BuiltIn) .Build(); @@ -19,7 +19,7 @@ public class AbpValidateAuthorizedParty : AbpOpenIddictWildcardDomainBase +public class AbpValidateClientPostLogoutRedirectUri : AbpOpenIddictWildcardDomainBase { public static OpenIddictServerHandlerDescriptor Descriptor { get; } = OpenIddictServerHandlerDescriptor.CreateBuilder() @@ -21,7 +21,7 @@ public class AbpValidateClientPostLogoutRedirectUri : AbpOpenIddictWildcardDomai IOpenIddictApplicationManager applicationManager) : base(wildcardDomainsOptions, new OpenIddictServerHandlers.Session.ValidateClientPostLogoutRedirectUri(applicationManager)) { - Handler = new OpenIddictServerHandlers.Session.ValidateClientPostLogoutRedirectUri(applicationManager); + OriginalHandler = new OpenIddictServerHandlers.Session.ValidateClientPostLogoutRedirectUri(applicationManager); } public async override ValueTask HandleAsync(OpenIddictServerEvents.ValidateLogoutRequestContext context) @@ -34,6 +34,6 @@ public class AbpValidateClientPostLogoutRedirectUri : AbpOpenIddictWildcardDomai return; } - await Handler.HandleAsync(context); + await OriginalHandler.HandleAsync(context); } } diff --git a/modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/WildcardDomains/AbpValidateClientRedirectUri.cs b/modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/WildcardDomains/AbpValidateClientRedirectUri.cs index 739d34b39b..914c6960d3 100644 --- a/modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/WildcardDomains/AbpValidateClientRedirectUri.cs +++ b/modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/WildcardDomains/AbpValidateClientRedirectUri.cs @@ -5,13 +5,13 @@ using OpenIddict.Server; namespace Volo.Abp.OpenIddict.WildcardDomains; -public class AbpValidateClientRedirectUri : AbpOpenIddictWildcardDomainBase +public class AbpValidateClientRedirectUri : AbpOpenIddictWildcardDomainBase { public static OpenIddictServerHandlerDescriptor Descriptor { get; } = OpenIddictServerHandlerDescriptor.CreateBuilder() .AddFilter() .UseScopedHandler() - .SetOrder(OpenIddictServerHandlers.Authentication.ValidateClientType.Descriptor.Order + 1_000) + .SetOrder(OpenIddictServerHandlers.Authentication.ValidateResponseType.Descriptor.Order + 1_000) .SetType(OpenIddictServerHandlerType.BuiltIn) .Build(); @@ -20,7 +20,7 @@ public class AbpValidateClientRedirectUri : AbpOpenIddictWildcardDomainBase +public class AbpValidatePostLogoutRedirectUriParameter : AbpOpenIddictWildcardDomainBase { public static OpenIddictServerHandlerDescriptor Descriptor { get; } = OpenIddictServerHandlerDescriptor.CreateBuilder() @@ -14,7 +14,7 @@ public class AbpValidatePostLogoutRedirectUriParameter : AbpOpenIddictWildcardDo .Build(); public AbpValidatePostLogoutRedirectUriParameter(IOptions wildcardDomainsOptions) - : base(wildcardDomainsOptions, new OpenIddictServerHandlers.Session.ValidatePostLogoutRedirectUriParameter()) + : base(wildcardDomainsOptions, new OpenIddictServerHandlers.Session.ValidatePostLogoutRedirectUriParameter()) { } @@ -27,6 +27,6 @@ public class AbpValidatePostLogoutRedirectUriParameter : AbpOpenIddictWildcardDo return; } - await Handler.HandleAsync(context); + await OriginalHandler.HandleAsync(context); } } diff --git a/modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/WildcardDomains/AbpValidateRedirectUriParameter.cs b/modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/WildcardDomains/AbpValidateRedirectUriParameter.cs index 3bac84e2c4..cc52e3d2b0 100644 --- a/modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/WildcardDomains/AbpValidateRedirectUriParameter.cs +++ b/modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/WildcardDomains/AbpValidateRedirectUriParameter.cs @@ -4,7 +4,7 @@ using OpenIddict.Server; namespace Volo.Abp.OpenIddict.WildcardDomains; -public class AbpValidateRedirectUriParameter : AbpOpenIddictWildcardDomainBase +public class AbpValidateRedirectUriParameter : AbpOpenIddictWildcardDomainBase { public static OpenIddictServerHandlerDescriptor Descriptor { get; } = OpenIddictServerHandlerDescriptor.CreateBuilder() @@ -27,6 +27,6 @@ public class AbpValidateRedirectUriParameter : AbpOpenIddictWildcardDomainBase GetApplicationTypeAsync(OpenIddictApplicationModel application, CancellationToken cancellationToken) + { + Check.NotNull(application, nameof(application)); + + return new ValueTask(application.ApplicationType); + } + public ValueTask GetAsync(Func, TState, IQueryable> query, TState state, CancellationToken cancellationToken) { throw new NotSupportedException(); @@ -142,7 +150,7 @@ public class AbpOpenIddictApplicationStore : AbpOpenIddictStoreBase GetClientTypeAsync(OpenIddictApplicationModel application, CancellationToken cancellationToken) { Check.NotNull(application, nameof(application)); - return new ValueTask(application.Type); + return new ValueTask(application.ClientType); } public ValueTask GetConsentTypeAsync(OpenIddictApplicationModel application, CancellationToken cancellationToken) @@ -194,6 +202,13 @@ public class AbpOpenIddictApplicationStore : AbpOpenIddictStoreBase(ConvertIdentifierToString(application.Id)); } + public ValueTask GetJsonWebKeySetAsync(OpenIddictApplicationModel application, CancellationToken cancellationToken) + { + Check.NotNull(application, nameof(application)); + + return new ValueTask(application.JsonWebKeySet); + } + public ValueTask> GetPermissionsAsync(OpenIddictApplicationModel application, CancellationToken cancellationToken) { Check.NotNull(application, nameof(application)); @@ -327,6 +342,34 @@ public class AbpOpenIddictApplicationStore : AbpOpenIddictStoreBase> GetSettingsAsync(OpenIddictApplicationModel application, CancellationToken cancellationToken) + { + Check.NotNull(application, nameof(application)); + + if (string.IsNullOrEmpty(application.Settings)) + { + return new ValueTask>(ImmutableDictionary.Create()); + } + + using (var document = JsonDocument.Parse(application.Settings)) + { + var builder = ImmutableDictionary.CreateBuilder(); + + foreach (var property in document.RootElement.EnumerateObject()) + { + var value = property.Value.GetString(); + if (string.IsNullOrEmpty(value)) + { + continue; + } + + builder[property.Name] = value; + } + + return new ValueTask>(builder.ToImmutable()); + } + } + public ValueTask InstantiateAsync(CancellationToken cancellationToken) { return new ValueTask(new OpenIddictApplicationModel @@ -349,6 +392,14 @@ public class AbpOpenIddictApplicationStore : AbpOpenIddictStoreBase permissions, CancellationToken cancellationToken) { @@ -534,6 +593,30 @@ public class AbpOpenIddictApplicationStore : AbpOpenIddictStoreBase settings, CancellationToken cancellationToken) + { + Check.NotNull(application, nameof(application)); + + if (settings.IsEmpty) + { + application.Settings = null; + return default; + } + + application.Settings = WriteStream(writer => + { + writer.WriteStartObject(); + foreach (var setting in settings) + { + writer.WritePropertyName(setting.Key); + writer.WriteStringValue(setting.Value); + } + writer.WriteEndObject(); + }); + + return default; + } + public virtual async ValueTask UpdateAsync(OpenIddictApplicationModel application, CancellationToken cancellationToken) { Check.NotNull(application, nameof(application)); diff --git a/modules/openiddict/src/Volo.Abp.OpenIddict.Domain/Volo/Abp/OpenIddict/Applications/OpenIddictApplication.cs b/modules/openiddict/src/Volo.Abp.OpenIddict.Domain/Volo/Abp/OpenIddict/Applications/OpenIddictApplication.cs index 6098f67392..e88370e874 100644 --- a/modules/openiddict/src/Volo.Abp.OpenIddict.Domain/Volo/Abp/OpenIddict/Applications/OpenIddictApplication.cs +++ b/modules/openiddict/src/Volo.Abp.OpenIddict.Domain/Volo/Abp/OpenIddict/Applications/OpenIddictApplication.cs @@ -14,6 +14,11 @@ public class OpenIddictApplication : FullAuditedAggregateRoot { } + /// + /// Gets or sets the application type associated with the application. + /// + public virtual string ApplicationType { get; set; } + /// /// Gets or sets the client identifier associated with the current application. /// @@ -26,6 +31,11 @@ public class OpenIddictApplication : FullAuditedAggregateRoot /// public virtual string ClientSecret { get; set; } + /// + /// Gets or sets the client type associated with the application. + /// + public string ClientType { get; set; } + /// /// Gets or sets the consent type associated with the current application. /// @@ -43,6 +53,12 @@ public class OpenIddictApplication : FullAuditedAggregateRoot /// public virtual string DisplayNames { get; set; } + /// + /// Gets or sets the JSON Web Key Set associated with + /// the application, serialized as a JSON object. + /// + public virtual string JsonWebKeySet { get; set; } + /// /// Gets or sets the permissions associated with the /// current application, serialized as a JSON array. @@ -74,9 +90,9 @@ public class OpenIddictApplication : FullAuditedAggregateRoot public virtual string Requirements { get; set; } /// - /// Gets or sets the application type associated with the current application. + /// Gets or sets the settings serialized as a JSON object. /// - public virtual string Type { get; set; } + public virtual string Settings { get; set; } /// /// URI to further information about client. diff --git a/modules/openiddict/src/Volo.Abp.OpenIddict.Domain/Volo/Abp/OpenIddict/Applications/OpenIddictApplicationExtensions.cs b/modules/openiddict/src/Volo.Abp.OpenIddict.Domain/Volo/Abp/OpenIddict/Applications/OpenIddictApplicationExtensions.cs index 34ff4ba41f..791136316a 100644 --- a/modules/openiddict/src/Volo.Abp.OpenIddict.Domain/Volo/Abp/OpenIddict/Applications/OpenIddictApplicationExtensions.cs +++ b/modules/openiddict/src/Volo.Abp.OpenIddict.Domain/Volo/Abp/OpenIddict/Applications/OpenIddictApplicationExtensions.cs @@ -1,4 +1,9 @@ -namespace Volo.Abp.OpenIddict.Applications; +using System.Collections.Concurrent; +using System.Collections.Generic; +using System.Text.Json; +using Microsoft.IdentityModel.Tokens; + +namespace Volo.Abp.OpenIddict.Applications; public static class OpenIddictApplicationExtensions { @@ -8,17 +13,20 @@ public static class OpenIddictApplicationExtensions var entity = new OpenIddictApplication(model.Id) { + ApplicationType = model.ApplicationType, ClientId = model.ClientId, ClientSecret = model.ClientSecret, + ClientType = model.ClientType, ConsentType = model.ConsentType, DisplayName = model.DisplayName, DisplayNames = model.DisplayNames, + JsonWebKeySet = model.JsonWebKeySet != null ? JsonSerializer.Serialize(model.JsonWebKeySet) : null, Permissions = model.Permissions, PostLogoutRedirectUris = model.PostLogoutRedirectUris, Properties = model.Properties, RedirectUris = model.RedirectUris, Requirements = model.Requirements, - Type = model.Type, + Settings = model.Settings, ClientUri = model.ClientUri, LogoUri = model.LogoUri }; @@ -37,17 +45,20 @@ public static class OpenIddictApplicationExtensions Check.NotNull(model, nameof(model)); Check.NotNull(entity, nameof(entity)); + entity.ApplicationType = model.ApplicationType; entity.ClientId = model.ClientId; entity.ClientSecret = model.ClientSecret; entity.ConsentType = model.ConsentType; + entity.ClientType = model.ClientType; entity.DisplayName = model.DisplayName; entity.DisplayNames = model.DisplayNames; + entity.JsonWebKeySet = model.JsonWebKeySet != null ? JsonSerializer.Serialize(model.JsonWebKeySet) : null; entity.Permissions = model.Permissions; entity.PostLogoutRedirectUris = model.PostLogoutRedirectUris; entity.Properties = model.Properties; entity.RedirectUris = model.RedirectUris; entity.Requirements = model.Requirements; - entity.Type = model.Type; + entity.Settings = model.Settings; entity.ClientUri = model.ClientUri; entity.LogoUri = model.LogoUri; @@ -60,6 +71,11 @@ public static class OpenIddictApplicationExtensions return entity; } + /// + /// parsing the stringified JSON Web Key Set is an expensive operation, To mitigate that, the resulting object is stored in the static cache. + /// + private readonly static ConcurrentDictionary JsonWebKeySetCache = new ConcurrentDictionary(); + public static OpenIddictApplicationModel ToModel(this OpenIddictApplication entity) { if(entity == null) @@ -70,17 +86,20 @@ public static class OpenIddictApplicationExtensions var model = new OpenIddictApplicationModel { Id = entity.Id, + ApplicationType = entity.ApplicationType, ClientId = entity.ClientId, ClientSecret = entity.ClientSecret, + ClientType = entity.ClientType, ConsentType = entity.ConsentType, DisplayName = entity.DisplayName, DisplayNames = entity.DisplayNames, + JsonWebKeySet = entity.JsonWebKeySet != null ? JsonWebKeySetCache.GetOrAdd(entity.JsonWebKeySet, () => JsonWebKeySet.Create(entity.JsonWebKeySet)) : null, Permissions = entity.Permissions, PostLogoutRedirectUris = entity.PostLogoutRedirectUris, Properties = entity.Properties, RedirectUris = entity.RedirectUris, Requirements = entity.Requirements, - Type = entity.Type, + Settings = entity.Settings, ClientUri = entity.ClientUri, LogoUri = entity.LogoUri }; diff --git a/modules/openiddict/src/Volo.Abp.OpenIddict.Domain/Volo/Abp/OpenIddict/Applications/OpenIddictApplicationModel.cs b/modules/openiddict/src/Volo.Abp.OpenIddict.Domain/Volo/Abp/OpenIddict/Applications/OpenIddictApplicationModel.cs index ff13ef2355..48a376769f 100644 --- a/modules/openiddict/src/Volo.Abp.OpenIddict.Domain/Volo/Abp/OpenIddict/Applications/OpenIddictApplicationModel.cs +++ b/modules/openiddict/src/Volo.Abp.OpenIddict.Domain/Volo/Abp/OpenIddict/Applications/OpenIddictApplicationModel.cs @@ -1,4 +1,5 @@ using System; +using Microsoft.IdentityModel.Tokens; using Volo.Abp.MultiTenancy; using Volo.Abp.ObjectExtending; @@ -9,6 +10,11 @@ public class OpenIddictApplicationModel : ExtensibleObject { public Guid Id { get; set; } + /// + /// Gets or sets the application type associated with the application. + /// + public virtual string ApplicationType { get; set; } + /// /// Gets or sets the client identifier associated with the current application. /// @@ -21,6 +27,11 @@ public class OpenIddictApplicationModel : ExtensibleObject /// public virtual string ClientSecret { get; set; } + /// + /// Gets or sets the client type associated with the application. + /// + public string ClientType { get; set; } + /// /// Gets or sets the consent type associated with the current application. /// @@ -38,6 +49,11 @@ public class OpenIddictApplicationModel : ExtensibleObject /// public virtual string DisplayNames { get; set; } + /// + /// Gets or sets the JSON Web Key Set associated with the application. + /// + public virtual JsonWebKeySet JsonWebKeySet { get; set; } + /// /// Gets or sets the permissions associated with the /// current application, serialized as a JSON array. @@ -69,9 +85,9 @@ public class OpenIddictApplicationModel : ExtensibleObject public virtual string Requirements { get; set; } /// - /// Gets or sets the application type associated with the current application. + /// Gets the settings associated with the application. /// - public virtual string Type { get; set; } + public virtual string Settings { get; set; } /// /// URI to further information about client. diff --git a/modules/openiddict/src/Volo.Abp.OpenIddict.Domain/Volo/Abp/OpenIddict/Authorizations/AbpOpenIddictAuthorizationStore.cs b/modules/openiddict/src/Volo.Abp.OpenIddict.Domain/Volo/Abp/OpenIddict/Authorizations/AbpOpenIddictAuthorizationStore.cs index 9b96011a52..1a29f9cb4e 100644 --- a/modules/openiddict/src/Volo.Abp.OpenIddict.Domain/Volo/Abp/OpenIddict/Authorizations/AbpOpenIddictAuthorizationStore.cs +++ b/modules/openiddict/src/Volo.Abp.OpenIddict.Domain/Volo/Abp/OpenIddict/Authorizations/AbpOpenIddictAuthorizationStore.cs @@ -287,13 +287,14 @@ public class AbpOpenIddictAuthorizationStore : AbpOpenIddictStoreBase PruneAsync(DateTimeOffset threshold, CancellationToken cancellationToken) { using (var uow = UnitOfWorkManager.Begin(requiresNew: true, isTransactional: true, isolationLevel: IsolationLevel.RepeatableRead)) { var date = threshold.UtcDateTime; - await Repository.PruneAsync(date, cancellationToken: cancellationToken); + var count = await Repository.PruneAsync(date, cancellationToken: cancellationToken); await uow.CompleteAsync(cancellationToken); + return count; } } diff --git a/modules/openiddict/src/Volo.Abp.OpenIddict.Domain/Volo/Abp/OpenIddict/Authorizations/IOpenIddictAuthorizationRepository.cs b/modules/openiddict/src/Volo.Abp.OpenIddict.Domain/Volo/Abp/OpenIddict/Authorizations/IOpenIddictAuthorizationRepository.cs index 0cca87ebb9..98c98b3e58 100644 --- a/modules/openiddict/src/Volo.Abp.OpenIddict.Domain/Volo/Abp/OpenIddict/Authorizations/IOpenIddictAuthorizationRepository.cs +++ b/modules/openiddict/src/Volo.Abp.OpenIddict.Domain/Volo/Abp/OpenIddict/Authorizations/IOpenIddictAuthorizationRepository.cs @@ -22,5 +22,5 @@ public interface IOpenIddictAuthorizationRepository : IBasicRepository> ListAsync(int? count, int? offset, CancellationToken cancellationToken = default); - Task PruneAsync(DateTime date, CancellationToken cancellationToken = default); + Task PruneAsync(DateTime date, CancellationToken cancellationToken = default); } diff --git a/modules/openiddict/src/Volo.Abp.OpenIddict.Domain/Volo/Abp/OpenIddict/Tokens/AbpOpenIddictTokenStore.cs b/modules/openiddict/src/Volo.Abp.OpenIddict.Domain/Volo/Abp/OpenIddict/Tokens/AbpOpenIddictTokenStore.cs index 31f4007879..b861da8407 100644 --- a/modules/openiddict/src/Volo.Abp.OpenIddict.Domain/Volo/Abp/OpenIddict/Tokens/AbpOpenIddictTokenStore.cs +++ b/modules/openiddict/src/Volo.Abp.OpenIddict.Domain/Volo/Abp/OpenIddict/Tokens/AbpOpenIddictTokenStore.cs @@ -302,13 +302,19 @@ public class AbpOpenIddictTokenStore : AbpOpenIddictStoreBase RevokeByAuthorizationIdAsync(string identifier, CancellationToken cancellationToken) + { + return await Repository.RevokeByAuthorizationIdAsync(ConvertIdentifierFromString(identifier), cancellationToken); + } + + public virtual async ValueTask PruneAsync(DateTimeOffset threshold, CancellationToken cancellationToken) { using (var uow = UnitOfWorkManager.Begin(requiresNew: true, isTransactional: true, isolationLevel: IsolationLevel.RepeatableRead)) { var date = threshold.UtcDateTime; - await Repository.PruneAsync(date, cancellationToken: cancellationToken); + var count = await Repository.PruneAsync(date, cancellationToken: cancellationToken); await uow.CompleteAsync(cancellationToken); + return count; } } diff --git a/modules/openiddict/src/Volo.Abp.OpenIddict.Domain/Volo/Abp/OpenIddict/Tokens/IOpenIddictTokenRepository.cs b/modules/openiddict/src/Volo.Abp.OpenIddict.Domain/Volo/Abp/OpenIddict/Tokens/IOpenIddictTokenRepository.cs index a747106642..1a1877746a 100644 --- a/modules/openiddict/src/Volo.Abp.OpenIddict.Domain/Volo/Abp/OpenIddict/Tokens/IOpenIddictTokenRepository.cs +++ b/modules/openiddict/src/Volo.Abp.OpenIddict.Domain/Volo/Abp/OpenIddict/Tokens/IOpenIddictTokenRepository.cs @@ -32,5 +32,7 @@ public interface IOpenIddictTokenRepository : IBasicRepository> ListAsync(int? count, int? offset, CancellationToken cancellationToken = default); - Task PruneAsync(DateTime date, CancellationToken cancellationToken = default); + Task PruneAsync(DateTime date, CancellationToken cancellationToken = default); + + ValueTask RevokeByAuthorizationIdAsync(Guid id, CancellationToken cancellationToken); } diff --git a/modules/openiddict/src/Volo.Abp.OpenIddict.EntityFrameworkCore/Volo/Abp/OpenIddict/Authorizations/EfCoreOpenIddictAuthorizationRepository.cs b/modules/openiddict/src/Volo.Abp.OpenIddict.EntityFrameworkCore/Volo/Abp/OpenIddict/Authorizations/EfCoreOpenIddictAuthorizationRepository.cs index 3738884b5c..62cf3abdd4 100644 --- a/modules/openiddict/src/Volo.Abp.OpenIddict.EntityFrameworkCore/Volo/Abp/OpenIddict/Authorizations/EfCoreOpenIddictAuthorizationRepository.cs +++ b/modules/openiddict/src/Volo.Abp.OpenIddict.EntityFrameworkCore/Volo/Abp/OpenIddict/Authorizations/EfCoreOpenIddictAuthorizationRepository.cs @@ -80,7 +80,7 @@ public class EfCoreOpenIddictAuthorizationRepository : EfCoreRepository PruneAsync(DateTime date, CancellationToken cancellationToken = default) { var authorizations = await (from authorization in (await GetQueryableAsync()) join token in (await GetDbContextAsync()).Set() @@ -91,11 +91,11 @@ public class EfCoreOpenIddictAuthorizationRepository : EfCoreRepository() + var count = await (from token in (await GetDbContextAsync()).Set() where token.AuthorizationId != null && authorizations.Contains(token.AuthorizationId.Value) select token) .ExecuteDeleteAsync(GetCancellationToken(cancellationToken)); - await (await GetDbSetAsync()).Where(x => authorizations.Contains(x.Id)).ExecuteDeleteAsync(cancellationToken); + return count + await (await GetDbSetAsync()).Where(x => authorizations.Contains(x.Id)).ExecuteDeleteAsync(cancellationToken); } } diff --git a/modules/openiddict/src/Volo.Abp.OpenIddict.EntityFrameworkCore/Volo/Abp/OpenIddict/EntityFrameworkCore/OpenIddictDbContextModelCreatingExtensions.cs b/modules/openiddict/src/Volo.Abp.OpenIddict.EntityFrameworkCore/Volo/Abp/OpenIddict/EntityFrameworkCore/OpenIddictDbContextModelCreatingExtensions.cs index bcf179297a..d10ecc86ae 100644 --- a/modules/openiddict/src/Volo.Abp.OpenIddict.EntityFrameworkCore/Volo/Abp/OpenIddict/EntityFrameworkCore/OpenIddictDbContextModelCreatingExtensions.cs +++ b/modules/openiddict/src/Volo.Abp.OpenIddict.EntityFrameworkCore/Volo/Abp/OpenIddict/EntityFrameworkCore/OpenIddictDbContextModelCreatingExtensions.cs @@ -28,14 +28,17 @@ public static class OpenIddictDbContextModelCreatingExtensions b.HasIndex(x => x.ClientId); //.IsUnique(); + b.Property(x => x.ApplicationType) + .HasMaxLength(OpenIddictApplicationConsts.ApplicationTypeMaxLength); + b.Property(x => x.ClientId) .HasMaxLength(OpenIddictApplicationConsts.ClientIdMaxLength); b.Property(x => x.ConsentType) .HasMaxLength(OpenIddictApplicationConsts.ConsentTypeMaxLength); - b.Property(x => x.Type) - .HasMaxLength(OpenIddictApplicationConsts.TypeMaxLength); + b.Property(x => x.ClientType) + .HasMaxLength(OpenIddictApplicationConsts.ClientTypeMaxLength); b.ApplyObjectExtensionMappings(); }); diff --git a/modules/openiddict/src/Volo.Abp.OpenIddict.EntityFrameworkCore/Volo/Abp/OpenIddict/Tokens/EfCoreOpenIddictTokenRepository.cs b/modules/openiddict/src/Volo.Abp.OpenIddict.EntityFrameworkCore/Volo/Abp/OpenIddict/Tokens/EfCoreOpenIddictTokenRepository.cs index c1ed4a84ff..d861f8b54e 100644 --- a/modules/openiddict/src/Volo.Abp.OpenIddict.EntityFrameworkCore/Volo/Abp/OpenIddict/Tokens/EfCoreOpenIddictTokenRepository.cs +++ b/modules/openiddict/src/Volo.Abp.OpenIddict.EntityFrameworkCore/Volo/Abp/OpenIddict/Tokens/EfCoreOpenIddictTokenRepository.cs @@ -96,9 +96,9 @@ public class EfCoreOpenIddictTokenRepository : EfCoreRepository PruneAsync(DateTime date, CancellationToken cancellationToken = default) { - await (from token in await GetQueryableAsync() + return await (from token in await GetQueryableAsync() join authorization in (await GetDbContextAsync()).Set() on token.AuthorizationId equals authorization.Id into tokenAuthorizations from tokenAuthorization in tokenAuthorizations.DefaultIfEmpty() @@ -109,4 +109,12 @@ public class EfCoreOpenIddictTokenRepository : EfCoreRepository RevokeByAuthorizationIdAsync(Guid id, CancellationToken cancellationToken) + { + return await (from token in await GetQueryableAsync() where token.AuthorizationId == id select token) + .ExecuteUpdateAsync( + entity => entity.SetProperty(token => token.Status, OpenIddictConstants.Statuses.Revoked), + GetCancellationToken(cancellationToken)); + } } diff --git a/modules/openiddict/src/Volo.Abp.OpenIddict.MongoDB/Volo/Abp/OpenIddict/Authorizations/MongoOpenIddictAuthorizationRepository.cs b/modules/openiddict/src/Volo.Abp.OpenIddict.MongoDB/Volo/Abp/OpenIddict/Authorizations/MongoOpenIddictAuthorizationRepository.cs index 7225425581..3e30912a8d 100644 --- a/modules/openiddict/src/Volo.Abp.OpenIddict.MongoDB/Volo/Abp/OpenIddict/Authorizations/MongoOpenIddictAuthorizationRepository.cs +++ b/modules/openiddict/src/Volo.Abp.OpenIddict.MongoDB/Volo/Abp/OpenIddict/Authorizations/MongoOpenIddictAuthorizationRepository.cs @@ -71,7 +71,7 @@ public class MongoOpenIddictAuthorizationRepository : MongoDbRepository>().ToListAsync(GetCancellationToken(cancellationToken)); } - public virtual async Task PruneAsync(DateTime date, CancellationToken cancellationToken = default) + public virtual async Task PruneAsync(DateTime date, CancellationToken cancellationToken = default) { var tokenIds = await (await GetMongoQueryableAsync(cancellationToken)) .Where(x => x.AuthorizationId != null) @@ -107,5 +107,6 @@ public class MongoOpenIddictAuthorizationRepository : MongoDbRepository PruneAsync(DateTime date, CancellationToken cancellationToken = default) { var authorizationIds = await (await GetMongoQueryableAsync(cancellationToken)) .Where(x => x.Status != OpenIddictConstants.Statuses.Valid) @@ -125,5 +125,16 @@ public class MongoOpenIddictTokenRepository : MongoDbRepository RevokeByAuthorizationIdAsync(Guid id, CancellationToken cancellationToken) + { + return (await (await GetCollectionAsync(GetCancellationToken(cancellationToken))).UpdateManyAsync( + filter: token => token.AuthorizationId == id, + update: Builders.Update.Set(token => token.Status, OpenIddictConstants.Statuses.Revoked), + options: null, + cancellationToken: GetCancellationToken(cancellationToken))).MatchedCount; } } diff --git a/modules/openiddict/test/Volo.Abp.OpenIddict.Domain.Tests/Volo/Abp/OpenIddict/Applications/AbpOpenIddictApplicationStore_Tests.cs b/modules/openiddict/test/Volo.Abp.OpenIddict.Domain.Tests/Volo/Abp/OpenIddict/Applications/AbpOpenIddictApplicationStore_Tests.cs index 81dafe33c3..c4f4d85d47 100644 --- a/modules/openiddict/test/Volo.Abp.OpenIddict.Domain.Tests/Volo/Abp/OpenIddict/Applications/AbpOpenIddictApplicationStore_Tests.cs +++ b/modules/openiddict/test/Volo.Abp.OpenIddict.Domain.Tests/Volo/Abp/OpenIddict/Applications/AbpOpenIddictApplicationStore_Tests.cs @@ -30,12 +30,12 @@ public class AbpOpenIddictApplicationStore_Tests : OpenIddictDomainTestBase var application = await _applicationStore.FindByIdAsync(nonExistingId, CancellationToken.None); application.ShouldBeNull(); } - + [Fact] public async Task FindByIdAsync_Should_Return_Application_If_Found() { var application = await _applicationStore.FindByIdAsync(_testData.App1Id.ToString(), CancellationToken.None); - + application.ShouldNotBeNull(); application.ClientId.ShouldBe(_testData.App1ClientId); application.ConsentType.ShouldBe(OpenIddictConstants.ConsentTypes.Explicit); @@ -76,16 +76,16 @@ public class AbpOpenIddictApplicationStore_Tests : OpenIddictDomainTestBase ClientId = clientId, ConsentType = OpenIddictConstants.ConsentTypes.Explicit, DisplayName = "Test Application", - Type = OpenIddictConstants.ClientTypes.Public, + ClientType = OpenIddictConstants.ClientTypes.Public, PostLogoutRedirectUris = "https://abp.io", RedirectUris = "https://abp.io" }, CancellationToken.None); - + var application = await _applicationStore.FindByClientIdAsync(clientId, CancellationToken.None); application.ShouldNotBeNull(); application.ClientId.ShouldBe(clientId); application.DisplayName.ShouldBe("Test Application"); - application.Type.ShouldBe(OpenIddictConstants.ClientTypes.Public); + application.ClientType.ShouldBe(OpenIddictConstants.ClientTypes.Public); application.PostLogoutRedirectUris.ShouldBe("https://abp.io"); application.RedirectUris.ShouldBe("https://abp.io"); } @@ -95,9 +95,9 @@ public class AbpOpenIddictApplicationStore_Tests : OpenIddictDomainTestBase { var application = await _applicationStore.FindByIdAsync(_testData.App1Id.ToString(), CancellationToken.None); application.ShouldNotBeNull(); - + await _applicationStore.DeleteAsync(application, CancellationToken.None); - + application = await _applicationStore.FindByIdAsync(_testData.App1Id.ToString(), CancellationToken.None); application.ShouldBeNull(); } @@ -115,14 +115,14 @@ public class AbpOpenIddictApplicationStore_Tests : OpenIddictDomainTestBase var applications = await _applicationStore.FindByPostLogoutRedirectUriAsync("https://abp.io", CancellationToken.None).ToListAsync(); applications.Count.ShouldBe(2); } - + [Fact] public async Task FindByRedirectUriAsync_Should_Return_Empty_If_Not_Found() { var applications = await _applicationStore.FindByRedirectUriAsync("non-existing-uri", CancellationToken.None).ToListAsync(); applications.Count.ShouldBe(0); } - + [Fact] public async Task FindByRedirectUriAsync_Should_Return_Applications_If_Found() { @@ -135,7 +135,7 @@ public class AbpOpenIddictApplicationStore_Tests : OpenIddictDomainTestBase { var application = await _applicationStore.FindByIdAsync(_testData.App1Id.ToString(), CancellationToken.None); var clientId = await _applicationStore.GetClientIdAsync(application, CancellationToken.None); - + clientId.ShouldBe(_testData.App1ClientId); } @@ -144,7 +144,7 @@ public class AbpOpenIddictApplicationStore_Tests : OpenIddictDomainTestBase { var application = await _applicationStore.FindByIdAsync(_testData.App1Id.ToString(), CancellationToken.None); var secret = await _applicationStore.GetClientIdAsync(application, CancellationToken.None); - + secret.ShouldBe("Client1"); } @@ -153,7 +153,7 @@ public class AbpOpenIddictApplicationStore_Tests : OpenIddictDomainTestBase { var application = await _applicationStore.FindByIdAsync(_testData.App1Id.ToString(), CancellationToken.None); var clientType = await _applicationStore.GetClientTypeAsync(application, CancellationToken.None); - + clientType.ShouldBe(OpenIddictConstants.ClientTypes.Public); } @@ -162,7 +162,7 @@ public class AbpOpenIddictApplicationStore_Tests : OpenIddictDomainTestBase { var application = await _applicationStore.FindByIdAsync(_testData.App1Id.ToString(), CancellationToken.None); var consentType = await _applicationStore.GetConsentTypeAsync(application, CancellationToken.None); - + consentType.ShouldBe(OpenIddictConstants.ConsentTypes.Explicit); } @@ -171,7 +171,7 @@ public class AbpOpenIddictApplicationStore_Tests : OpenIddictDomainTestBase { var application = await _applicationStore.FindByIdAsync(_testData.App1Id.ToString(), CancellationToken.None); var displayName = await _applicationStore.GetDisplayNameAsync(application, CancellationToken.None); - + displayName.ShouldBe("Test Application"); } @@ -180,7 +180,7 @@ public class AbpOpenIddictApplicationStore_Tests : OpenIddictDomainTestBase { var application = await _applicationStore.FindByIdAsync(_testData.App1Id.ToString(), CancellationToken.None); var id = await _applicationStore.GetIdAsync(application, CancellationToken.None); - + id.ShouldBe(_testData.App1Id.ToString()); } @@ -189,7 +189,7 @@ public class AbpOpenIddictApplicationStore_Tests : OpenIddictDomainTestBase { var application = await _applicationStore.FindByIdAsync(_testData.App1Id.ToString(), CancellationToken.None); var permissions = await _applicationStore.GetPermissionsAsync(application, CancellationToken.None); - + permissions.Length.ShouldBeGreaterThan(0); } @@ -198,7 +198,7 @@ public class AbpOpenIddictApplicationStore_Tests : OpenIddictDomainTestBase { var application = await _applicationStore.FindByIdAsync(_testData.App1Id.ToString(), CancellationToken.None); var postLogoutRedirectUris = await _applicationStore.GetPostLogoutRedirectUrisAsync(application, CancellationToken.None); - + postLogoutRedirectUris.Length.ShouldBe(1); postLogoutRedirectUris[0].ShouldBe("https://abp.io"); } @@ -208,7 +208,7 @@ public class AbpOpenIddictApplicationStore_Tests : OpenIddictDomainTestBase { var application = await _applicationStore.FindByIdAsync(_testData.App1Id.ToString(), CancellationToken.None); var redirectUris = await _applicationStore.GetRedirectUrisAsync(application, CancellationToken.None); - + redirectUris.Length.ShouldBe(1); redirectUris[0].ShouldBe("https://abp.io"); } @@ -218,7 +218,7 @@ public class AbpOpenIddictApplicationStore_Tests : OpenIddictDomainTestBase { var application = await _applicationStore.FindByIdAsync(_testData.App1Id.ToString(), CancellationToken.None); var properties = await _applicationStore.GetPropertiesAsync(application, CancellationToken.None); - + properties.Count.ShouldBe(0); } @@ -227,14 +227,14 @@ public class AbpOpenIddictApplicationStore_Tests : OpenIddictDomainTestBase { var application = await _applicationStore.FindByIdAsync(_testData.App1Id.ToString(), CancellationToken.None); var requirements = await _applicationStore.GetRequirementsAsync(application, CancellationToken.None); - + requirements.Length.ShouldBe(0); } [Fact] public async Task InstantiateAsync() { - var application = await _applicationStore.InstantiateAsync(CancellationToken.None); + var application = await _applicationStore.InstantiateAsync(CancellationToken.None); application.ShouldNotBeNull(); } @@ -268,7 +268,7 @@ public class AbpOpenIddictApplicationStore_Tests : OpenIddictDomainTestBase var clientSecret = Guid.NewGuid().ToString(); var application = await _applicationStore.FindByIdAsync(_testData.App1Id.ToString(), CancellationToken.None); await _applicationStore.SetClientSecretAsync(application, clientSecret, CancellationToken.None); - + application.ClientSecret.ShouldBe(clientSecret); } @@ -277,8 +277,8 @@ public class AbpOpenIddictApplicationStore_Tests : OpenIddictDomainTestBase { var application = await _applicationStore.FindByIdAsync(_testData.App1Id.ToString(), CancellationToken.None); await _applicationStore.SetClientTypeAsync(application, OpenIddictConstants.ClientTypes.Confidential, CancellationToken.None); - - application.Type.ShouldBe(OpenIddictConstants.ClientTypes.Confidential); + + application.ClientType.ShouldBe(OpenIddictConstants.ClientTypes.Confidential); } [Fact] @@ -286,17 +286,17 @@ public class AbpOpenIddictApplicationStore_Tests : OpenIddictDomainTestBase { var application = await _applicationStore.FindByIdAsync(_testData.App1Id.ToString(), CancellationToken.None); await _applicationStore.SetConsentTypeAsync(application, OpenIddictConstants.ConsentTypes.Systematic, CancellationToken.None); - + application.ConsentType.ShouldBe(OpenIddictConstants.ConsentTypes.Systematic); } - + [Fact] public async Task SetDisplayNameAsync() { var displayName = Guid.NewGuid().ToString(); var application = await _applicationStore.FindByIdAsync(_testData.App1Id.ToString(), CancellationToken.None); await _applicationStore.SetDisplayNameAsync(application, displayName, CancellationToken.None); - + application.DisplayName.ShouldBe(displayName); } @@ -306,7 +306,7 @@ public class AbpOpenIddictApplicationStore_Tests : OpenIddictDomainTestBase var displayNames = ImmutableDictionary.Create(); displayNames = displayNames.Add(CultureInfo.GetCultureInfo("en"), "Test Application"); displayNames = displayNames.Add(CultureInfo.GetCultureInfo("zh-Hans"), "测试应用程序"); - + var application = await _applicationStore.FindByIdAsync(_testData.App1Id.ToString(), CancellationToken.None); await _applicationStore.SetDisplayNamesAsync(application, displayNames, CancellationToken.None); @@ -319,7 +319,7 @@ public class AbpOpenIddictApplicationStore_Tests : OpenIddictDomainTestBase { var application = await _applicationStore.FindByIdAsync(_testData.App1Id.ToString(), CancellationToken.None); await _applicationStore.SetPermissionsAsync(application, ImmutableArray.Create(OpenIddictConstants.Permissions.Endpoints.Authorization), CancellationToken.None); - + application.Permissions.ShouldBe("[\""+OpenIddictConstants.Permissions.Endpoints.Authorization+"\"]"); } @@ -328,7 +328,7 @@ public class AbpOpenIddictApplicationStore_Tests : OpenIddictDomainTestBase { var application = await _applicationStore.FindByIdAsync(_testData.App1Id.ToString(), CancellationToken.None); await _applicationStore.SetPostLogoutRedirectUrisAsync(application, ImmutableArray.Create("https://abp.io"), CancellationToken.None); - + application.PostLogoutRedirectUris.ShouldBe("[\"https://abp.io\"]"); } @@ -337,7 +337,7 @@ public class AbpOpenIddictApplicationStore_Tests : OpenIddictDomainTestBase { var application = await _applicationStore.FindByIdAsync(_testData.App1Id.ToString(), CancellationToken.None); await _applicationStore.SetPropertiesAsync(application, ImmutableDictionary.Create(), CancellationToken.None); - + application.Properties.ShouldBeNull(); } @@ -346,7 +346,7 @@ public class AbpOpenIddictApplicationStore_Tests : OpenIddictDomainTestBase { var application = await _applicationStore.FindByIdAsync(_testData.App1Id.ToString(), CancellationToken.None); await _applicationStore.SetRedirectUrisAsync(application, ImmutableArray.Create("https://abp.io"), CancellationToken.None); - + application.RedirectUris.ShouldBe("[\"https://abp.io\"]"); } @@ -355,7 +355,7 @@ public class AbpOpenIddictApplicationStore_Tests : OpenIddictDomainTestBase { var application = await _applicationStore.FindByIdAsync(_testData.App1Id.ToString(), CancellationToken.None); await _applicationStore.SetRequirementsAsync(application, ImmutableArray.Create(OpenIddictConstants.Requirements.Features.ProofKeyForCodeExchange), CancellationToken.None); - + application.Requirements.ShouldBe("[\""+OpenIddictConstants.Requirements.Features.ProofKeyForCodeExchange+"\"]"); } @@ -364,19 +364,19 @@ public class AbpOpenIddictApplicationStore_Tests : OpenIddictDomainTestBase { var application = await _applicationStore.FindByIdAsync(_testData.App1Id.ToString(), CancellationToken.None); application.ClientId = "new_client_id"; - application.Type = OpenIddictConstants.ClientTypes.Public; + application.ClientType = OpenIddictConstants.ClientTypes.Public; application.RedirectUris = "https://new_logout_uri"; application.PostLogoutRedirectUris = "https://new_post_logout_uri"; application.DisplayName = "new_display_name"; - + await _applicationStore.UpdateAsync(application, CancellationToken.None); application = await _applicationStore.FindByIdAsync(_testData.App1Id.ToString(), CancellationToken.None); application.ShouldNotBeNull(); application.ClientId.ShouldBe("new_client_id"); - application.Type.ShouldBe(OpenIddictConstants.ClientTypes.Public); + application.ClientType.ShouldBe(OpenIddictConstants.ClientTypes.Public); application.RedirectUris.ShouldBe("https://new_logout_uri"); application.PostLogoutRedirectUris.ShouldBe("https://new_post_logout_uri"); application.DisplayName.ShouldBe("new_display_name"); } -} \ No newline at end of file +} diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Server.Mongo/Data/OpenIddictDataSeedContributor.cs b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Server.Mongo/Data/OpenIddictDataSeedContributor.cs index 47eae54f36..117aeeb123 100644 --- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Server.Mongo/Data/OpenIddictDataSeedContributor.cs +++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Server.Mongo/Data/OpenIddictDataSeedContributor.cs @@ -152,7 +152,7 @@ public class OpenIddictDataSeedContributor : IDataSeedContributor, ITransientDep var application = new AbpApplicationDescriptor { ClientId = name, - Type = type, + ClientType = type, ClientSecret = secret, ConsentType = consentType, DisplayName = displayName, diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Server/Data/OpenIddictDataSeedContributor.cs b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Server/Data/OpenIddictDataSeedContributor.cs index 47eae54f36..117aeeb123 100644 --- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Server/Data/OpenIddictDataSeedContributor.cs +++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Server/Data/OpenIddictDataSeedContributor.cs @@ -152,7 +152,7 @@ public class OpenIddictDataSeedContributor : IDataSeedContributor, ITransientDep var application = new AbpApplicationDescriptor { ClientId = name, - Type = type, + ClientType = type, ClientSecret = secret, ConsentType = consentType, DisplayName = displayName, diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host.Mongo/Data/OpenIddictDataSeedContributor.cs b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host.Mongo/Data/OpenIddictDataSeedContributor.cs index 51dca1344f..37ca7e6c12 100644 --- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host.Mongo/Data/OpenIddictDataSeedContributor.cs +++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host.Mongo/Data/OpenIddictDataSeedContributor.cs @@ -152,7 +152,7 @@ public class OpenIddictDataSeedContributor : IDataSeedContributor, ITransientDep var application = new OpenIddictApplicationDescriptor { ClientId = name, - Type = type, + ClientType = type, ClientSecret = secret, ConsentType = consentType, DisplayName = displayName diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/Data/OpenIddictDataSeedContributor.cs b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/Data/OpenIddictDataSeedContributor.cs index 51dca1344f..37ca7e6c12 100644 --- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/Data/OpenIddictDataSeedContributor.cs +++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/Data/OpenIddictDataSeedContributor.cs @@ -152,7 +152,7 @@ public class OpenIddictDataSeedContributor : IDataSeedContributor, ITransientDep var application = new OpenIddictApplicationDescriptor { ClientId = name, - Type = type, + ClientType = type, ClientSecret = secret, ConsentType = consentType, DisplayName = displayName diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain/OpenIddict/OpenIddictDataSeedContributor.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain/OpenIddict/OpenIddictDataSeedContributor.cs index a1af7f6b6a..8e0f486bfb 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain/OpenIddict/OpenIddictDataSeedContributor.cs +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Domain/OpenIddict/OpenIddictDataSeedContributor.cs @@ -230,7 +230,7 @@ public class OpenIddictDataSeedContributor : IDataSeedContributor, ITransientDep var application = new AbpApplicationDescriptor { ClientId = name, - Type = type, + ClientType = type, ClientSecret = secret, ConsentType = consentType, DisplayName = displayName, diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.AuthServer/OpenIddict/OpenIddictDataSeedContributor.cs b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.AuthServer/OpenIddict/OpenIddictDataSeedContributor.cs index 6d18e53622..29b1751bee 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.AuthServer/OpenIddict/OpenIddictDataSeedContributor.cs +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.AuthServer/OpenIddict/OpenIddictDataSeedContributor.cs @@ -204,7 +204,7 @@ public class OpenIddictDataSeedContributor : IDataSeedContributor, ITransientDep var application = new OpenIddictApplicationDescriptor { ClientId = name, - Type = type, + ClientType = type, ClientSecret = secret, ConsentType = consentType, DisplayName = displayName From cf09d280945e23a0c2b3bdc3751e9f29e6180532 Mon Sep 17 00:00:00 2001 From: maliming Date: Mon, 4 Dec 2023 16:45:57 +0800 Subject: [PATCH 2/8] Update migrations of `OpenIddict.Demo.Server`. --- .../20231204054625_Initial.Designer.cs | 18 +- .../Migrations/20231204054625_Initial.cs | 5 +- .../20231204084517_openiddict5.Designer.cs | 1598 +++++++++++++++++ .../Migrations/20231204084517_openiddict5.cs | 59 + .../AbpOpenIddictApplicationStore_Tests.cs | 6 + 5 files changed, 1668 insertions(+), 18 deletions(-) create mode 100644 modules/openiddict/app/OpenIddict.Demo.Server/Migrations/20231204084517_openiddict5.Designer.cs create mode 100644 modules/openiddict/app/OpenIddict.Demo.Server/Migrations/20231204084517_openiddict5.cs diff --git a/modules/openiddict/app/OpenIddict.Demo.Server/Migrations/20231204054625_Initial.Designer.cs b/modules/openiddict/app/OpenIddict.Demo.Server/Migrations/20231204054625_Initial.Designer.cs index 1f0bcae464..a946b38999 100644 --- a/modules/openiddict/app/OpenIddict.Demo.Server/Migrations/20231204054625_Initial.Designer.cs +++ b/modules/openiddict/app/OpenIddict.Demo.Server/Migrations/20231204054625_Initial.Designer.cs @@ -13,7 +13,7 @@ using Volo.Abp.EntityFrameworkCore; namespace OpenIddict.Demo.Server.Migrations { [DbContext(typeof(ServerDbContext))] - [Migration("20231204054625_Initial")] + [Migration("20231116094249_Initial")] partial class Initial { /// @@ -818,10 +818,6 @@ namespace OpenIddict.Demo.Server.Migrations .ValueGeneratedOnAdd() .HasColumnType("uniqueidentifier"); - b.Property("ApplicationType") - .HasMaxLength(50) - .HasColumnType("nvarchar(50)"); - b.Property("ClientId") .HasMaxLength(100) .HasColumnType("nvarchar(100)"); @@ -829,10 +825,6 @@ namespace OpenIddict.Demo.Server.Migrations b.Property("ClientSecret") .HasColumnType("nvarchar(max)"); - b.Property("ClientType") - .HasMaxLength(50) - .HasColumnType("nvarchar(50)"); - b.Property("ClientUri") .HasColumnType("nvarchar(max)"); @@ -880,9 +872,6 @@ namespace OpenIddict.Demo.Server.Migrations .HasDefaultValue(false) .HasColumnName("IsDeleted"); - b.Property("JsonWebKeySet") - .HasColumnType("nvarchar(max)"); - b.Property("LastModificationTime") .HasColumnType("datetime2") .HasColumnName("LastModificationTime"); @@ -909,8 +898,9 @@ namespace OpenIddict.Demo.Server.Migrations b.Property("Requirements") .HasColumnType("nvarchar(max)"); - b.Property("Settings") - .HasColumnType("nvarchar(max)"); + b.Property("Type") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); b.HasKey("Id"); diff --git a/modules/openiddict/app/OpenIddict.Demo.Server/Migrations/20231204054625_Initial.cs b/modules/openiddict/app/OpenIddict.Demo.Server/Migrations/20231204054625_Initial.cs index 43e69e2d57..89de930745 100644 --- a/modules/openiddict/app/OpenIddict.Demo.Server/Migrations/20231204054625_Initial.cs +++ b/modules/openiddict/app/OpenIddict.Demo.Server/Migrations/20231204054625_Initial.cs @@ -340,20 +340,17 @@ namespace OpenIddict.Demo.Server.Migrations columns: table => new { Id = table.Column(type: "uniqueidentifier", nullable: false), - ApplicationType = table.Column(type: "nvarchar(50)", maxLength: 50, nullable: true), ClientId = table.Column(type: "nvarchar(100)", maxLength: 100, nullable: true), ClientSecret = table.Column(type: "nvarchar(max)", nullable: true), - ClientType = table.Column(type: "nvarchar(50)", maxLength: 50, nullable: true), ConsentType = table.Column(type: "nvarchar(50)", maxLength: 50, nullable: true), DisplayName = table.Column(type: "nvarchar(max)", nullable: true), DisplayNames = table.Column(type: "nvarchar(max)", nullable: true), - JsonWebKeySet = table.Column(type: "nvarchar(max)", nullable: true), Permissions = table.Column(type: "nvarchar(max)", nullable: true), PostLogoutRedirectUris = table.Column(type: "nvarchar(max)", nullable: true), Properties = table.Column(type: "nvarchar(max)", nullable: true), RedirectUris = table.Column(type: "nvarchar(max)", nullable: true), Requirements = table.Column(type: "nvarchar(max)", nullable: true), - Settings = table.Column(type: "nvarchar(max)", nullable: true), + Type = table.Column(type: "nvarchar(50)", maxLength: 50, nullable: true), ClientUri = table.Column(type: "nvarchar(max)", nullable: true), LogoUri = table.Column(type: "nvarchar(max)", nullable: true), ExtraProperties = table.Column(type: "nvarchar(max)", nullable: false), diff --git a/modules/openiddict/app/OpenIddict.Demo.Server/Migrations/20231204084517_openiddict5.Designer.cs b/modules/openiddict/app/OpenIddict.Demo.Server/Migrations/20231204084517_openiddict5.Designer.cs new file mode 100644 index 0000000000..c479f89c7c --- /dev/null +++ b/modules/openiddict/app/OpenIddict.Demo.Server/Migrations/20231204084517_openiddict5.Designer.cs @@ -0,0 +1,1598 @@ +// +using System; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Metadata; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; +using OpenIddict.Demo.Server.EntityFrameworkCore; +using Volo.Abp.EntityFrameworkCore; + +#nullable disable + +namespace OpenIddict.Demo.Server.Migrations +{ + [DbContext(typeof(ServerDbContext))] + [Migration("20231204084517_openiddict5")] + partial class openiddict5 + { + /// + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("_Abp_DatabaseProvider", EfCoreDatabaseProvider.SqlServer) + .HasAnnotation("ProductVersion", "8.0.0") + .HasAnnotation("Relational:MaxIdentifierLength", 128); + + SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder); + + modelBuilder.Entity("Volo.Abp.FeatureManagement.FeatureDefinitionRecord", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("AllowedProviders") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("DefaultValue") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("Description") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("DisplayName") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("ExtraProperties") + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("GroupName") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property("IsAvailableToHost") + .HasColumnType("bit"); + + b.Property("IsVisibleToClients") + .HasColumnType("bit"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property("ParentName") + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property("ValueType") + .HasMaxLength(2048) + .HasColumnType("nvarchar(2048)"); + + b.HasKey("Id"); + + b.HasIndex("GroupName"); + + b.HasIndex("Name") + .IsUnique(); + + b.ToTable("AbpFeatures", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.FeatureManagement.FeatureGroupDefinitionRecord", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("DisplayName") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("ExtraProperties") + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.HasKey("Id"); + + b.HasIndex("Name") + .IsUnique(); + + b.ToTable("AbpFeatureGroups", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.FeatureManagement.FeatureValue", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property("ProviderKey") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)"); + + b.Property("ProviderName") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)"); + + b.Property("Value") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.HasKey("Id"); + + b.HasIndex("Name", "ProviderName", "ProviderKey") + .IsUnique() + .HasFilter("[ProviderName] IS NOT NULL AND [ProviderKey] IS NOT NULL"); + + b.ToTable("AbpFeatureValues", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityClaimType", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("nvarchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("Description") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("IsStatic") + .HasColumnType("bit"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("Regex") + .HasMaxLength(512) + .HasColumnType("nvarchar(512)"); + + b.Property("RegexDescription") + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property("Required") + .HasColumnType("bit"); + + b.Property("ValueType") + .HasColumnType("int"); + + b.HasKey("Id"); + + b.ToTable("AbpClaimTypes", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityLinkUser", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("SourceTenantId") + .HasColumnType("uniqueidentifier"); + + b.Property("SourceUserId") + .HasColumnType("uniqueidentifier"); + + b.Property("TargetTenantId") + .HasColumnType("uniqueidentifier"); + + b.Property("TargetUserId") + .HasColumnType("uniqueidentifier"); + + b.HasKey("Id"); + + b.HasIndex("SourceUserId", "SourceTenantId", "TargetUserId", "TargetTenantId") + .IsUnique() + .HasFilter("[SourceTenantId] IS NOT NULL AND [TargetTenantId] IS NOT NULL"); + + b.ToTable("AbpLinkUsers", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityRole", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("nvarchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("EntityVersion") + .HasColumnType("int"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("IsDefault") + .HasColumnType("bit") + .HasColumnName("IsDefault"); + + b.Property("IsPublic") + .HasColumnType("bit") + .HasColumnName("IsPublic"); + + b.Property("IsStatic") + .HasColumnType("bit") + .HasColumnName("IsStatic"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("NormalizedName") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("NormalizedName"); + + b.ToTable("AbpRoles", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityRoleClaim", b => + { + b.Property("Id") + .HasColumnType("uniqueidentifier"); + + b.Property("ClaimType") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("ClaimValue") + .HasMaxLength(1024) + .HasColumnType("nvarchar(1024)"); + + b.Property("RoleId") + .HasColumnType("uniqueidentifier"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("RoleId"); + + b.ToTable("AbpRoleClaims", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentitySecurityLog", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("Action") + .HasMaxLength(96) + .HasColumnType("nvarchar(96)"); + + b.Property("ApplicationName") + .HasMaxLength(96) + .HasColumnType("nvarchar(96)"); + + b.Property("BrowserInfo") + .HasMaxLength(512) + .HasColumnType("nvarchar(512)"); + + b.Property("ClientId") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)"); + + b.Property("ClientIpAddress") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("nvarchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CorrelationId") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)"); + + b.Property("CreationTime") + .HasColumnType("datetime2"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("Identity") + .HasMaxLength(96) + .HasColumnType("nvarchar(96)"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.Property("TenantName") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)"); + + b.Property("UserId") + .HasColumnType("uniqueidentifier"); + + b.Property("UserName") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.HasKey("Id"); + + b.HasIndex("TenantId", "Action"); + + b.HasIndex("TenantId", "ApplicationName"); + + b.HasIndex("TenantId", "Identity"); + + b.HasIndex("TenantId", "UserId"); + + b.ToTable("AbpSecurityLogs", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUser", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("AccessFailedCount") + .ValueGeneratedOnAdd() + .HasColumnType("int") + .HasDefaultValue(0) + .HasColumnName("AccessFailedCount"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("nvarchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("datetime2") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uniqueidentifier") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uniqueidentifier") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("datetime2") + .HasColumnName("DeletionTime"); + + b.Property("Email") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)") + .HasColumnName("Email"); + + b.Property("EmailConfirmed") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(false) + .HasColumnName("EmailConfirmed"); + + b.Property("EntityVersion") + .HasColumnType("int"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("IsActive") + .HasColumnType("bit") + .HasColumnName("IsActive"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("IsExternal") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(false) + .HasColumnName("IsExternal"); + + b.Property("LastModificationTime") + .HasColumnType("datetime2") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uniqueidentifier") + .HasColumnName("LastModifierId"); + + b.Property("LastPasswordChangeTime") + .HasColumnType("datetimeoffset"); + + b.Property("LockoutEnabled") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(false) + .HasColumnName("LockoutEnabled"); + + b.Property("LockoutEnd") + .HasColumnType("datetimeoffset"); + + b.Property("Name") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)") + .HasColumnName("Name"); + + b.Property("NormalizedEmail") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)") + .HasColumnName("NormalizedEmail"); + + b.Property("NormalizedUserName") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)") + .HasColumnName("NormalizedUserName"); + + b.Property("PasswordHash") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)") + .HasColumnName("PasswordHash"); + + b.Property("PhoneNumber") + .HasMaxLength(16) + .HasColumnType("nvarchar(16)") + .HasColumnName("PhoneNumber"); + + b.Property("PhoneNumberConfirmed") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(false) + .HasColumnName("PhoneNumberConfirmed"); + + b.Property("SecurityStamp") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)") + .HasColumnName("SecurityStamp"); + + b.Property("ShouldChangePasswordOnNextLogin") + .HasColumnType("bit"); + + b.Property("Surname") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)") + .HasColumnName("Surname"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.Property("TwoFactorEnabled") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(false) + .HasColumnName("TwoFactorEnabled"); + + b.Property("UserName") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)") + .HasColumnName("UserName"); + + b.HasKey("Id"); + + b.HasIndex("Email"); + + b.HasIndex("NormalizedEmail"); + + b.HasIndex("NormalizedUserName"); + + b.HasIndex("UserName"); + + b.ToTable("AbpUsers", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserClaim", b => + { + b.Property("Id") + .HasColumnType("uniqueidentifier"); + + b.Property("ClaimType") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("ClaimValue") + .HasMaxLength(1024) + .HasColumnType("nvarchar(1024)"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.Property("UserId") + .HasColumnType("uniqueidentifier"); + + b.HasKey("Id"); + + b.HasIndex("UserId"); + + b.ToTable("AbpUserClaims", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserDelegation", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("EndTime") + .HasColumnType("datetime2"); + + b.Property("SourceUserId") + .HasColumnType("uniqueidentifier"); + + b.Property("StartTime") + .HasColumnType("datetime2"); + + b.Property("TargetUserId") + .HasColumnType("uniqueidentifier"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.ToTable("AbpUserDelegations", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserLogin", b => + { + b.Property("UserId") + .HasColumnType("uniqueidentifier"); + + b.Property("LoginProvider") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)"); + + b.Property("ProviderDisplayName") + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property("ProviderKey") + .IsRequired() + .HasMaxLength(196) + .HasColumnType("nvarchar(196)"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.HasKey("UserId", "LoginProvider"); + + b.HasIndex("LoginProvider", "ProviderKey"); + + b.ToTable("AbpUserLogins", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserOrganizationUnit", b => + { + b.Property("OrganizationUnitId") + .HasColumnType("uniqueidentifier"); + + b.Property("UserId") + .HasColumnType("uniqueidentifier"); + + b.Property("CreationTime") + .HasColumnType("datetime2") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uniqueidentifier") + .HasColumnName("CreatorId"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.HasKey("OrganizationUnitId", "UserId"); + + b.HasIndex("UserId", "OrganizationUnitId"); + + b.ToTable("AbpUserOrganizationUnits", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserRole", b => + { + b.Property("UserId") + .HasColumnType("uniqueidentifier"); + + b.Property("RoleId") + .HasColumnType("uniqueidentifier"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.HasKey("UserId", "RoleId"); + + b.HasIndex("RoleId", "UserId"); + + b.ToTable("AbpUserRoles", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserToken", b => + { + b.Property("UserId") + .HasColumnType("uniqueidentifier"); + + b.Property("LoginProvider") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)"); + + b.Property("Name") + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.Property("Value") + .HasColumnType("nvarchar(max)"); + + b.HasKey("UserId", "LoginProvider", "Name"); + + b.ToTable("AbpUserTokens", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.OrganizationUnit", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("Code") + .IsRequired() + .HasMaxLength(95) + .HasColumnType("nvarchar(95)") + .HasColumnName("Code"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("nvarchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("datetime2") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uniqueidentifier") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uniqueidentifier") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("datetime2") + .HasColumnName("DeletionTime"); + + b.Property("DisplayName") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("nvarchar(128)") + .HasColumnName("DisplayName"); + + b.Property("EntityVersion") + .HasColumnType("int"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("datetime2") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uniqueidentifier") + .HasColumnName("LastModifierId"); + + b.Property("ParentId") + .HasColumnType("uniqueidentifier"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("Code"); + + b.HasIndex("ParentId"); + + b.ToTable("AbpOrganizationUnits", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.OrganizationUnitRole", b => + { + b.Property("OrganizationUnitId") + .HasColumnType("uniqueidentifier"); + + b.Property("RoleId") + .HasColumnType("uniqueidentifier"); + + b.Property("CreationTime") + .HasColumnType("datetime2") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uniqueidentifier") + .HasColumnName("CreatorId"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.HasKey("OrganizationUnitId", "RoleId"); + + b.HasIndex("RoleId", "OrganizationUnitId"); + + b.ToTable("AbpOrganizationUnitRoles", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.OpenIddict.Applications.OpenIddictApplication", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("ApplicationType") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("ClientId") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("ClientSecret") + .HasColumnType("nvarchar(max)"); + + b.Property("ClientType") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("ClientUri") + .HasColumnType("nvarchar(max)"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("nvarchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("ConsentType") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("CreationTime") + .HasColumnType("datetime2") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uniqueidentifier") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uniqueidentifier") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("datetime2") + .HasColumnName("DeletionTime"); + + b.Property("DisplayName") + .HasColumnType("nvarchar(max)"); + + b.Property("DisplayNames") + .HasColumnType("nvarchar(max)"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("JsonWebKeySet") + .HasColumnType("nvarchar(max)"); + + b.Property("LastModificationTime") + .HasColumnType("datetime2") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uniqueidentifier") + .HasColumnName("LastModifierId"); + + b.Property("LogoUri") + .HasColumnType("nvarchar(max)"); + + b.Property("Permissions") + .HasColumnType("nvarchar(max)"); + + b.Property("PostLogoutRedirectUris") + .HasColumnType("nvarchar(max)"); + + b.Property("Properties") + .HasColumnType("nvarchar(max)"); + + b.Property("RedirectUris") + .HasColumnType("nvarchar(max)"); + + b.Property("Requirements") + .HasColumnType("nvarchar(max)"); + + b.Property("Settings") + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.HasIndex("ClientId"); + + b.ToTable("OpenIddictApplications", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.OpenIddict.Authorizations.OpenIddictAuthorization", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("ApplicationId") + .HasColumnType("uniqueidentifier"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("nvarchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("CreationTime") + .HasColumnType("datetime2") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uniqueidentifier") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uniqueidentifier") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("datetime2") + .HasColumnName("DeletionTime"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("datetime2") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uniqueidentifier") + .HasColumnName("LastModifierId"); + + b.Property("Properties") + .HasColumnType("nvarchar(max)"); + + b.Property("Scopes") + .HasColumnType("nvarchar(max)"); + + b.Property("Status") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("Subject") + .HasMaxLength(400) + .HasColumnType("nvarchar(400)"); + + b.Property("Type") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.HasKey("Id"); + + b.HasIndex("ApplicationId", "Status", "Subject", "Type"); + + b.ToTable("OpenIddictAuthorizations", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.OpenIddict.Scopes.OpenIddictScope", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("nvarchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("datetime2") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uniqueidentifier") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uniqueidentifier") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("datetime2") + .HasColumnName("DeletionTime"); + + b.Property("Description") + .HasColumnType("nvarchar(max)"); + + b.Property("Descriptions") + .HasColumnType("nvarchar(max)"); + + b.Property("DisplayName") + .HasColumnType("nvarchar(max)"); + + b.Property("DisplayNames") + .HasColumnType("nvarchar(max)"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("datetime2") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uniqueidentifier") + .HasColumnName("LastModifierId"); + + b.Property("Name") + .HasMaxLength(200) + .HasColumnType("nvarchar(200)"); + + b.Property("Properties") + .HasColumnType("nvarchar(max)"); + + b.Property("Resources") + .HasColumnType("nvarchar(max)"); + + b.HasKey("Id"); + + b.HasIndex("Name"); + + b.ToTable("OpenIddictScopes", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.OpenIddict.Tokens.OpenIddictToken", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("ApplicationId") + .HasColumnType("uniqueidentifier"); + + b.Property("AuthorizationId") + .HasColumnType("uniqueidentifier"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("nvarchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationDate") + .HasColumnType("datetime2"); + + b.Property("CreationTime") + .HasColumnType("datetime2") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uniqueidentifier") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uniqueidentifier") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("datetime2") + .HasColumnName("DeletionTime"); + + b.Property("ExpirationDate") + .HasColumnType("datetime2"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("datetime2") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uniqueidentifier") + .HasColumnName("LastModifierId"); + + b.Property("Payload") + .HasColumnType("nvarchar(max)"); + + b.Property("Properties") + .HasColumnType("nvarchar(max)"); + + b.Property("RedemptionDate") + .HasColumnType("datetime2"); + + b.Property("ReferenceId") + .HasMaxLength(100) + .HasColumnType("nvarchar(100)"); + + b.Property("Status") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.Property("Subject") + .HasMaxLength(400) + .HasColumnType("nvarchar(400)"); + + b.Property("Type") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + + b.HasKey("Id"); + + b.HasIndex("AuthorizationId"); + + b.HasIndex("ReferenceId"); + + b.HasIndex("ApplicationId", "Status", "Subject", "Type"); + + b.ToTable("OpenIddictTokens", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.PermissionManagement.PermissionDefinitionRecord", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("DisplayName") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("ExtraProperties") + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("GroupName") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property("IsEnabled") + .HasColumnType("bit"); + + b.Property("MultiTenancySide") + .HasColumnType("tinyint"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property("ParentName") + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property("Providers") + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property("StateCheckers") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.HasKey("Id"); + + b.HasIndex("GroupName"); + + b.HasIndex("Name") + .IsUnique(); + + b.ToTable("AbpPermissions", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.PermissionManagement.PermissionGrant", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property("ProviderKey") + .IsRequired() + .HasMaxLength(64) + .HasColumnType("nvarchar(64)"); + + b.Property("ProviderName") + .IsRequired() + .HasMaxLength(64) + .HasColumnType("nvarchar(64)"); + + b.Property("TenantId") + .HasColumnType("uniqueidentifier") + .HasColumnName("TenantId"); + + b.HasKey("Id"); + + b.HasIndex("TenantId", "Name", "ProviderName", "ProviderKey") + .IsUnique() + .HasFilter("[TenantId] IS NOT NULL"); + + b.ToTable("AbpPermissionGrants", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.PermissionManagement.PermissionGroupDefinitionRecord", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("DisplayName") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("ExtraProperties") + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.HasKey("Id"); + + b.HasIndex("Name") + .IsUnique(); + + b.ToTable("AbpPermissionGroups", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.SettingManagement.Setting", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property("ProviderKey") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)"); + + b.Property("ProviderName") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)"); + + b.Property("Value") + .IsRequired() + .HasMaxLength(2048) + .HasColumnType("nvarchar(2048)"); + + b.HasKey("Id"); + + b.HasIndex("Name", "ProviderName", "ProviderKey") + .IsUnique() + .HasFilter("[ProviderName] IS NOT NULL AND [ProviderKey] IS NOT NULL"); + + b.ToTable("AbpSettings", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.SettingManagement.SettingDefinitionRecord", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("DefaultValue") + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("Description") + .HasMaxLength(512) + .HasColumnType("nvarchar(512)"); + + b.Property("DisplayName") + .IsRequired() + .HasMaxLength(256) + .HasColumnType("nvarchar(256)"); + + b.Property("ExtraProperties") + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("IsEncrypted") + .HasColumnType("bit"); + + b.Property("IsInherited") + .HasColumnType("bit"); + + b.Property("IsVisibleToClients") + .HasColumnType("bit"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.Property("Providers") + .HasMaxLength(128) + .HasColumnType("nvarchar(128)"); + + b.HasKey("Id"); + + b.HasIndex("Name") + .IsUnique(); + + b.ToTable("AbpSettingDefinitions", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.TenantManagement.Tenant", b => + { + b.Property("Id") + .ValueGeneratedOnAdd() + .HasColumnType("uniqueidentifier"); + + b.Property("ConcurrencyStamp") + .IsConcurrencyToken() + .IsRequired() + .HasMaxLength(40) + .HasColumnType("nvarchar(40)") + .HasColumnName("ConcurrencyStamp"); + + b.Property("CreationTime") + .HasColumnType("datetime2") + .HasColumnName("CreationTime"); + + b.Property("CreatorId") + .HasColumnType("uniqueidentifier") + .HasColumnName("CreatorId"); + + b.Property("DeleterId") + .HasColumnType("uniqueidentifier") + .HasColumnName("DeleterId"); + + b.Property("DeletionTime") + .HasColumnType("datetime2") + .HasColumnName("DeletionTime"); + + b.Property("EntityVersion") + .HasColumnType("int"); + + b.Property("ExtraProperties") + .IsRequired() + .HasColumnType("nvarchar(max)") + .HasColumnName("ExtraProperties"); + + b.Property("IsDeleted") + .ValueGeneratedOnAdd() + .HasColumnType("bit") + .HasDefaultValue(false) + .HasColumnName("IsDeleted"); + + b.Property("LastModificationTime") + .HasColumnType("datetime2") + .HasColumnName("LastModificationTime"); + + b.Property("LastModifierId") + .HasColumnType("uniqueidentifier") + .HasColumnName("LastModifierId"); + + b.Property("Name") + .IsRequired() + .HasMaxLength(64) + .HasColumnType("nvarchar(64)"); + + b.HasKey("Id"); + + b.HasIndex("Name"); + + b.ToTable("AbpTenants", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.TenantManagement.TenantConnectionString", b => + { + b.Property("TenantId") + .HasColumnType("uniqueidentifier"); + + b.Property("Name") + .HasMaxLength(64) + .HasColumnType("nvarchar(64)"); + + b.Property("Value") + .IsRequired() + .HasMaxLength(1024) + .HasColumnType("nvarchar(1024)"); + + b.HasKey("TenantId", "Name"); + + b.ToTable("AbpTenantConnectionStrings", (string)null); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityRoleClaim", b => + { + b.HasOne("Volo.Abp.Identity.IdentityRole", null) + .WithMany("Claims") + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserClaim", b => + { + b.HasOne("Volo.Abp.Identity.IdentityUser", null) + .WithMany("Claims") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserLogin", b => + { + b.HasOne("Volo.Abp.Identity.IdentityUser", null) + .WithMany("Logins") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserOrganizationUnit", b => + { + b.HasOne("Volo.Abp.Identity.OrganizationUnit", null) + .WithMany() + .HasForeignKey("OrganizationUnitId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Volo.Abp.Identity.IdentityUser", null) + .WithMany("OrganizationUnits") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserRole", b => + { + b.HasOne("Volo.Abp.Identity.IdentityRole", null) + .WithMany() + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Volo.Abp.Identity.IdentityUser", null) + .WithMany("Roles") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUserToken", b => + { + b.HasOne("Volo.Abp.Identity.IdentityUser", null) + .WithMany("Tokens") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.Identity.OrganizationUnit", b => + { + b.HasOne("Volo.Abp.Identity.OrganizationUnit", null) + .WithMany() + .HasForeignKey("ParentId"); + }); + + modelBuilder.Entity("Volo.Abp.Identity.OrganizationUnitRole", b => + { + b.HasOne("Volo.Abp.Identity.OrganizationUnit", null) + .WithMany("Roles") + .HasForeignKey("OrganizationUnitId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + + b.HasOne("Volo.Abp.Identity.IdentityRole", null) + .WithMany() + .HasForeignKey("RoleId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.OpenIddict.Authorizations.OpenIddictAuthorization", b => + { + b.HasOne("Volo.Abp.OpenIddict.Applications.OpenIddictApplication", null) + .WithMany() + .HasForeignKey("ApplicationId"); + }); + + modelBuilder.Entity("Volo.Abp.OpenIddict.Tokens.OpenIddictToken", b => + { + b.HasOne("Volo.Abp.OpenIddict.Applications.OpenIddictApplication", null) + .WithMany() + .HasForeignKey("ApplicationId"); + + b.HasOne("Volo.Abp.OpenIddict.Authorizations.OpenIddictAuthorization", null) + .WithMany() + .HasForeignKey("AuthorizationId"); + }); + + modelBuilder.Entity("Volo.Abp.TenantManagement.TenantConnectionString", b => + { + b.HasOne("Volo.Abp.TenantManagement.Tenant", null) + .WithMany("ConnectionStrings") + .HasForeignKey("TenantId") + .OnDelete(DeleteBehavior.Cascade) + .IsRequired(); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityRole", b => + { + b.Navigation("Claims"); + }); + + modelBuilder.Entity("Volo.Abp.Identity.IdentityUser", b => + { + b.Navigation("Claims"); + + b.Navigation("Logins"); + + b.Navigation("OrganizationUnits"); + + b.Navigation("Roles"); + + b.Navigation("Tokens"); + }); + + modelBuilder.Entity("Volo.Abp.Identity.OrganizationUnit", b => + { + b.Navigation("Roles"); + }); + + modelBuilder.Entity("Volo.Abp.TenantManagement.Tenant", b => + { + b.Navigation("ConnectionStrings"); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/modules/openiddict/app/OpenIddict.Demo.Server/Migrations/20231204084517_openiddict5.cs b/modules/openiddict/app/OpenIddict.Demo.Server/Migrations/20231204084517_openiddict5.cs new file mode 100644 index 0000000000..3a6d58fc0f --- /dev/null +++ b/modules/openiddict/app/OpenIddict.Demo.Server/Migrations/20231204084517_openiddict5.cs @@ -0,0 +1,59 @@ +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace OpenIddict.Demo.Server.Migrations +{ + /// + public partial class openiddict5 : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.RenameColumn( + name: "Type", + table: "OpenIddictApplications", + newName: "ClientType"); + + migrationBuilder.AddColumn( + name: "ApplicationType", + table: "OpenIddictApplications", + type: "nvarchar(50)", + maxLength: 50, + nullable: true); + + migrationBuilder.AddColumn( + name: "JsonWebKeySet", + table: "OpenIddictApplications", + type: "nvarchar(max)", + nullable: true); + + migrationBuilder.AddColumn( + name: "Settings", + table: "OpenIddictApplications", + type: "nvarchar(max)", + nullable: true); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropColumn( + name: "ApplicationType", + table: "OpenIddictApplications"); + + migrationBuilder.DropColumn( + name: "JsonWebKeySet", + table: "OpenIddictApplications"); + + migrationBuilder.DropColumn( + name: "Settings", + table: "OpenIddictApplications"); + + migrationBuilder.RenameColumn( + name: "ClientType", + table: "OpenIddictApplications", + newName: "Type"); + } + } +} diff --git a/modules/openiddict/test/Volo.Abp.OpenIddict.Domain.Tests/Volo/Abp/OpenIddict/Applications/AbpOpenIddictApplicationStore_Tests.cs b/modules/openiddict/test/Volo.Abp.OpenIddict.Domain.Tests/Volo/Abp/OpenIddict/Applications/AbpOpenIddictApplicationStore_Tests.cs index c4f4d85d47..c4aac7b144 100644 --- a/modules/openiddict/test/Volo.Abp.OpenIddict.Domain.Tests/Volo/Abp/OpenIddict/Applications/AbpOpenIddictApplicationStore_Tests.cs +++ b/modules/openiddict/test/Volo.Abp.OpenIddict.Domain.Tests/Volo/Abp/OpenIddict/Applications/AbpOpenIddictApplicationStore_Tests.cs @@ -6,6 +6,7 @@ using System.Text.Json; using System.Threading; using System.Threading.Tasks; using Microsoft.Extensions.DependencyInjection; +using Microsoft.IdentityModel.Tokens; using OpenIddict.Abstractions; using Shouldly; using Xunit; @@ -73,19 +74,24 @@ public class AbpOpenIddictApplicationStore_Tests : OpenIddictDomainTestBase { var clientId = Guid.NewGuid().ToString(); await _applicationStore.CreateAsync(new OpenIddictApplicationModel { + ApplicationType = OpenIddictConstants.ApplicationTypes.Web, ClientId = clientId, ConsentType = OpenIddictConstants.ConsentTypes.Explicit, DisplayName = "Test Application", ClientType = OpenIddictConstants.ClientTypes.Public, + JsonWebKeySet = JsonWebKeySet.Create("{\"keys\":[{\"kid\":\"B3CFECA9F030CB8DA7EC0C2C27462E0F1EDB5920\",\"use\":\"sig\",\"kty\":\"RSA\",\"alg\":\"RS256\",\"e\":\"AQAB\",\"n\":\"yvTJVUUPNKui4mc12Z9sasNC1xQ_feZLhYDUqrMYDrbbOdHNdppCRQa8hwZBAgru7mJn-qD1aBDHZQFp0h_tWME5B5c07Y8b80w0vBWgfhgw0Kvzet6aDtVRVFZ0pJ92sIto0gcEeU2cst21s21ICGI3bT80-BIrWe_OGbWt0LwkTYLMGFaSiIov65OqnBm9LiZFgpANk8gajmPW49Jp9w4N6dXKJmpLD4Ke0TqHV1wx3DepYs9cdXlyEAh_Zb6iX7-GaIqkpiG32Ej1ezc-Qfjy16nt1mxrDkgZNROXeo9dSKT-zCuUNaAoDj93vFFnKzdGB4wiUbeRb-fvebAKDw\",\"x5t\":\"s8_sqfAwy42n7AwsJ0YuDx7bWSA\",\"x5c\":[\"MIIDzTCCArWgAwIBAgIJAJk4OSYyxcY2MA0GCSqGSIb3DQEBCwUAMH0xCzAJBgNVBAYTAlRSMREwDwYDVQQHDAhJc3RhbmJ1bDEZMBcGA1UECgwQVm9sb3NvZnQgTFRELlNUSTEXMBUGA1UEAwwOYWNjb3VudC5hYnAuaW8xJzAlBgkqhkiG9w0BCQEWGGdhbGlwLmVyZGVtQHZvbG9zb2Z0LmNvbTAeFw0yMDAxMjExNjQ1MTBaFw0zMDAxMTgxNjQ1MTBaMH0xCzAJBgNVBAYTAlRSMREwDwYDVQQHDAhJc3RhbmJ1bDEZMBcGA1UECgwQVm9sb3NvZnQgTFRELlNUSTEXMBUGA1UEAwwOYWNjb3VudC5hYnAuaW8xJzAlBgkqhkiG9w0BCQEWGGdhbGlwLmVyZGVtQHZvbG9zb2Z0LmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMr0yVVFDzSrouJnNdmfbGrDQtcUP33mS4WA1KqzGA622znRzXaaQkUGvIcGQQIK7u5iZ/qg9WgQx2UBadIf7VjBOQeXNO2PG/NMNLwVoH4YMNCr83remg7VUVRWdKSfdrCLaNIHBHlNnLLdtbNtSAhiN20/NPgSK1nvzhm1rdC8JE2CzBhWkoiKL+uTqpwZvS4mRYKQDZPIGo5j1uPSafcODenVyiZqSw+CntE6h1dcMdw3qWLPXHV5chAIf2W+ol+/hmiKpKYht9hI9Xs3PkH48tep7dZsaw5IGTUTl3qPXUik/swrlDWgKA4/d7xRZys3RgeMIlG3kW/n73mwCg8CAwEAAaNQME4wHQYDVR0OBBYEFCnN7HANDCj/ncgFu4AI+U6wXn2AMB8GA1UdIwQYMBaAFCnN7HANDCj/ncgFu4AI+U6wXn2AMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQELBQADggEBAEvVPtZnXzebhgVIyD+TBE7cgI567ck5W9kfeZhJLPlWQzrOQCgXbR7rqNLRs4K73k6Yo6/9E5jAOtjlqqotiqj89tqOTZzG6kDIVoMiYJjgEVLeF1bVBnCA7xDbdpVfrL2IOnNGy9Ys+FsG6EV/oBbTw8Fqk+5c7M0RvverCaEfPHWSTg6M+B5pHBk50p67MB6DeaD0u6RUnCkqYxBBPrnVHvvGEoimoEAdT5g3/8CAtAG9m4b9IoBpUHi626b+/SS+2h1xr4oq54gxG8jlDkLoRWT2cKiFM/bCufZkd1LyOmke8udpHBZ3Jt0nH64oZdSUT6huDzYBdtXfSw3XTwo=\"]}]}"), PostLogoutRedirectUris = "https://abp.io", RedirectUris = "https://abp.io" }, CancellationToken.None); var application = await _applicationStore.FindByClientIdAsync(clientId, CancellationToken.None); application.ShouldNotBeNull(); + application.ApplicationType.ShouldBe(OpenIddictConstants.ApplicationTypes.Web); application.ClientId.ShouldBe(clientId); application.DisplayName.ShouldBe("Test Application"); application.ClientType.ShouldBe(OpenIddictConstants.ClientTypes.Public); + application.JsonWebKeySet.ShouldNotBeNull(); + application.JsonWebKeySet.Keys.First().Alg.ShouldBe(SecurityAlgorithms.RsaSha256); application.PostLogoutRedirectUris.ShouldBe("https://abp.io"); application.RedirectUris.ShouldBe("https://abp.io"); } From f14f2c9a94e14f2f7f4272a253b92f18b8207b99 Mon Sep 17 00:00:00 2001 From: maliming Date: Thu, 7 Dec 2023 11:25:25 +0800 Subject: [PATCH 3/8] `OpenIddict 4.x to 5.x Migration Guide`. --- docs/en/Migration-Guides/OpenIddict4-to-5.md | 108 ++++++++++++++++++ .../openiddict-pro-application-modal.png | Bin 0 -> 297885 bytes ...niddict-pro-application-timelife-modal.png | Bin 0 -> 207915 bytes 3 files changed, 108 insertions(+) create mode 100644 docs/en/Migration-Guides/OpenIddict4-to-5.md create mode 100644 docs/en/Migration-Guides/images/openiddict-pro-application-modal.png create mode 100644 docs/en/Migration-Guides/images/openiddict-pro-application-timelife-modal.png diff --git a/docs/en/Migration-Guides/OpenIddict4-to-5.md b/docs/en/Migration-Guides/OpenIddict4-to-5.md new file mode 100644 index 0000000000..21bfc0adee --- /dev/null +++ b/docs/en/Migration-Guides/OpenIddict4-to-5.md @@ -0,0 +1,108 @@ +# OpenIddict 4.x to 5.x Migration Guide + +The 5.0 release of OpenIddict is a major release that introduces breaking changes. + +Check this blog [Introducing native applications, per-client token lifetimes and client assertions support in OpenIddict 5.0 preview1](https://kevinchalet.com/2023/10/20/introducing-native-applications-per-client-token-lifetimes-and-client-assertions-support-in-openiddict-5-0-preview1/) for the new features introduced in OpenIddict 5.0. + +I will show the changes you need to make to do the migration. + +> Please backup your database before doing the migration. + +## OpenIddictApplication changes + +1. The `Type(string)` of the `OpenIddictApplication` has been renamed to `ClientType(string)`. +2. The `ApplicationType(string)` as been added to the `OpenIddictApplication` entity. +3. The `JsonWebKeySet(string)` as been added to the `OpenIddictApplication` entity. +4. The `Settings(string)` as been added to the `OpenIddictApplication` entity. + +The new migration looks like this: + +````csharp +using Microsoft.EntityFrameworkCore.Migrations; + +#nullable disable + +namespace OpenIddict.Demo.Server.Migrations +{ + /// + public partial class openiddict5 : Migration + { + /// + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.RenameColumn( + name: "Type", + table: "OpenIddictApplications", + newName: "ClientType"); + + migrationBuilder.AddColumn( + name: "ApplicationType", + table: "OpenIddictApplications", + type: "nvarchar(50)", + maxLength: 50, + nullable: true); + + migrationBuilder.AddColumn( + name: "JsonWebKeySet", + table: "OpenIddictApplications", + type: "nvarchar(max)", + nullable: true); + + migrationBuilder.AddColumn( + name: "Settings", + table: "OpenIddictApplications", + type: "nvarchar(max)", + nullable: true); + } + + /// + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropColumn( + name: "ApplicationType", + table: "OpenIddictApplications"); + + migrationBuilder.DropColumn( + name: "JsonWebKeySet", + table: "OpenIddictApplications"); + + migrationBuilder.DropColumn( + name: "Settings", + table: "OpenIddictApplications"); + + migrationBuilder.RenameColumn( + name: "ClientType", + table: "OpenIddictApplications", + newName: "Type"); + } + } +} +```` + +## OpenIddictApplicationModel changes + +1. The `Type(string)` of the `OpenIddictApplicationModel` has been renamed to `ClientType(string)`. +2. The `ApplicationType(string)` as been added to the `OpenIddictApplicationModel` entity. +3. The `JsonWebKeySet`([JsonWebKeySet](https://learn.microsoft.com/en-us/dotnet/api/microsoft.identitymodel.tokens.jsonwebkeyset)) as been added to the `OpenIddictApplicationModel` entity. +4. The `Settings(string)` as been added to the `OpenIddictApplicationModel` entity. + +## OpenIddictApplicationDescriptor changes + +You have to change the `Type` to `ClientType` when creating a new `OpenIddictApplicationDescriptor`. + +````csharp +var application = new AbpApplicationDescriptor { + ClientId = name, +- Type = type, ++ ClientType = type, + ClientSecret = secret, + ConsentType = consentType, + DisplayName = displayName, +```` + +## OpenIddict Pro module UI changes + +You can change the `ApplicationType` when creating/editing a OpenIddict's application, also set time life of the tokens for each application. + +![ropeniddict-pro-application-modal](images/openiddict-pro-application-modal.png) +![openiddict-pro-application-timelife-modal](images/openiddict-pro-application-timelife-modal.png) diff --git a/docs/en/Migration-Guides/images/openiddict-pro-application-modal.png b/docs/en/Migration-Guides/images/openiddict-pro-application-modal.png new file mode 100644 index 0000000000000000000000000000000000000000..10fe722053bef3eeb2ba6329be9cd70e41442a56 GIT binary patch literal 297885 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 z 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�pI9Sl=r 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%0DrN%3n-ry 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≺d*sR?$V-+*@-J%~~s5;xvNqAjC{jM{>fyM0O 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 literal 0 HcmV?d00001 From 4df1c231ae634a65d40ca5e1856649298228cd54 Mon Sep 17 00:00:00 2001 From: maliming Date: Thu, 7 Dec 2023 11:29:55 +0800 Subject: [PATCH 4/8] Update OpenIddict4-to-5.md --- docs/en/Migration-Guides/OpenIddict4-to-5.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/en/Migration-Guides/OpenIddict4-to-5.md b/docs/en/Migration-Guides/OpenIddict4-to-5.md index 21bfc0adee..bef99a7550 100644 --- a/docs/en/Migration-Guides/OpenIddict4-to-5.md +++ b/docs/en/Migration-Guides/OpenIddict4-to-5.md @@ -11,9 +11,9 @@ I will show the changes you need to make to do the migration. ## OpenIddictApplication changes 1. The `Type(string)` of the `OpenIddictApplication` has been renamed to `ClientType(string)`. -2. The `ApplicationType(string)` as been added to the `OpenIddictApplication` entity. -3. The `JsonWebKeySet(string)` as been added to the `OpenIddictApplication` entity. -4. The `Settings(string)` as been added to the `OpenIddictApplication` entity. +2. The `ApplicationType(string)` has been added to the `OpenIddictApplication` entity. +3. The `JsonWebKeySet(string)` has been added to the `OpenIddictApplication` entity. +4. The `Settings(string)` has been added to the `OpenIddictApplication` entity. The new migration looks like this: @@ -82,9 +82,9 @@ namespace OpenIddict.Demo.Server.Migrations ## OpenIddictApplicationModel changes 1. The `Type(string)` of the `OpenIddictApplicationModel` has been renamed to `ClientType(string)`. -2. The `ApplicationType(string)` as been added to the `OpenIddictApplicationModel` entity. -3. The `JsonWebKeySet`([JsonWebKeySet](https://learn.microsoft.com/en-us/dotnet/api/microsoft.identitymodel.tokens.jsonwebkeyset)) as been added to the `OpenIddictApplicationModel` entity. -4. The `Settings(string)` as been added to the `OpenIddictApplicationModel` entity. +2. The `ApplicationType(string)` has been added to the `OpenIddictApplicationModel` entity. +3. The `JsonWebKeySet`([JsonWebKeySet](https://learn.microsoft.com/en-us/dotnet/api/microsoft.identitymodel.tokens.jsonwebkeyset)) has been added to the `OpenIddictApplicationModel` entity. +4. The `Settings(string)` has been added to the `OpenIddictApplicationModel` entity. ## OpenIddictApplicationDescriptor changes From 76ca1549ff1d3cf02a4df3f77032e152e3f44e5a Mon Sep 17 00:00:00 2001 From: maliming Date: Thu, 7 Dec 2023 11:30:52 +0800 Subject: [PATCH 5/8] Update OpenIddict4-to-5.md --- docs/en/Migration-Guides/OpenIddict4-to-5.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/en/Migration-Guides/OpenIddict4-to-5.md b/docs/en/Migration-Guides/OpenIddict4-to-5.md index bef99a7550..9080ae7876 100644 --- a/docs/en/Migration-Guides/OpenIddict4-to-5.md +++ b/docs/en/Migration-Guides/OpenIddict4-to-5.md @@ -88,7 +88,7 @@ namespace OpenIddict.Demo.Server.Migrations ## OpenIddictApplicationDescriptor changes -You have to change the `Type` to `ClientType` when creating a new `OpenIddictApplicationDescriptor`. +You have to change the `Type` to `ClientType` when creating a new `AbpApplicationDescriptor` or `OpenIddictApplicationDescriptor`. ````csharp var application = new AbpApplicationDescriptor { From a447dfc008ebe3a42cf24166a511668c46bd1c7e Mon Sep 17 00:00:00 2001 From: maliming Date: Thu, 7 Dec 2023 13:42:42 +0800 Subject: [PATCH 6/8] Update migrations for template projects. --- .../20231204054625_Initial.Designer.cs | 1588 ----------------- .../Migrations/20231204084517_openiddict5.cs | 59 - ....cs => 20231207053813_Initial.Designer.cs} | 4 +- ...5_Initial.cs => 20231207053813_Initial.cs} | 5 +- ....cs => 20231207053812_Initial.Designer.cs} | 18 +- ...0_Initial.cs => 20231207053812_Initial.cs} | 5 +- .../MyProjectNameDbContextModelSnapshot.cs | 16 +- ....cs => 20231207053830_Initial.Designer.cs} | 18 +- .../Migrations/20231207053830_Initial.cs} | 5 +- .../MyProjectNameDbContextModelSnapshot.cs | 16 +- ....cs => 20231207053820_Initial.Designer.cs} | 18 +- ...5_Initial.cs => 20231207053820_Initial.cs} | 5 +- .../MyProjectNameDbContextModelSnapshot.cs | 16 +- ....cs => 20231207053825_Initial.Designer.cs} | 18 +- ...7_Initial.cs => 20231207053825_Initial.cs} | 5 +- .../MyProjectNameDbContextModelSnapshot.cs | 16 +- ....cs => 20231207053523_Initial.Designer.cs} | 18 +- ...8_Initial.cs => 20231207053523_Initial.cs} | 5 +- .../MyProjectNameDbContextModelSnapshot.cs | 16 +- ....cs => 20231207053828_Initial.Designer.cs} | 18 +- .../Migrations/20231207053828_Initial.cs} | 5 +- .../AuthServerDbContextModelSnapshot.cs | 16 +- 22 files changed, 192 insertions(+), 1698 deletions(-) delete mode 100644 modules/openiddict/app/OpenIddict.Demo.Server/Migrations/20231204054625_Initial.Designer.cs delete mode 100644 modules/openiddict/app/OpenIddict.Demo.Server/Migrations/20231204084517_openiddict5.cs rename modules/openiddict/app/OpenIddict.Demo.Server/Migrations/{20231204084517_openiddict5.Designer.cs => 20231207053813_Initial.Designer.cs} (99%) rename modules/openiddict/app/OpenIddict.Demo.Server/Migrations/{20231204054625_Initial.cs => 20231207053813_Initial.cs} (99%) rename templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/Migrations/{20231115065150_Initial.Designer.cs => 20231207053812_Initial.Designer.cs} (99%) rename templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/Migrations/{20231115065150_Initial.cs => 20231207053812_Initial.cs} (99%) rename templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Server/Migrations/{20231115065250_Initial.Designer.cs => 20231207053830_Initial.Designer.cs} (99%) rename templates/{module/aspnet-core/host/MyCompanyName.MyProjectName.AuthServer/Migrations/20231115065520_Initial.cs => app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Server/Migrations/20231207053830_Initial.cs} (99%) rename templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/Migrations/{20231115065335_Initial.Designer.cs => 20231207053820_Initial.Designer.cs} (99%) rename templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/Migrations/{20231115065335_Initial.cs => 20231207053820_Initial.cs} (99%) rename templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/Migrations/{20231115065427_Initial.Designer.cs => 20231207053825_Initial.Designer.cs} (99%) rename templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/Migrations/{20231115065427_Initial.cs => 20231207053825_Initial.cs} (99%) rename templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/Migrations/{20231115065038_Initial.Designer.cs => 20231207053523_Initial.Designer.cs} (99%) rename templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/Migrations/{20231115065038_Initial.cs => 20231207053523_Initial.cs} (99%) rename templates/module/aspnet-core/host/MyCompanyName.MyProjectName.AuthServer/Migrations/{20231115065520_Initial.Designer.cs => 20231207053828_Initial.Designer.cs} (99%) rename templates/{app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Server/Migrations/20231115065250_Initial.cs => module/aspnet-core/host/MyCompanyName.MyProjectName.AuthServer/Migrations/20231207053828_Initial.cs} (99%) diff --git a/modules/openiddict/app/OpenIddict.Demo.Server/Migrations/20231204054625_Initial.Designer.cs b/modules/openiddict/app/OpenIddict.Demo.Server/Migrations/20231204054625_Initial.Designer.cs deleted file mode 100644 index a946b38999..0000000000 --- a/modules/openiddict/app/OpenIddict.Demo.Server/Migrations/20231204054625_Initial.Designer.cs +++ /dev/null @@ -1,1588 +0,0 @@ -// -using System; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.EntityFrameworkCore.Metadata; -using Microsoft.EntityFrameworkCore.Migrations; -using Microsoft.EntityFrameworkCore.Storage.ValueConversion; -using OpenIddict.Demo.Server.EntityFrameworkCore; -using Volo.Abp.EntityFrameworkCore; - -#nullable disable - -namespace OpenIddict.Demo.Server.Migrations -{ - [DbContext(typeof(ServerDbContext))] - [Migration("20231116094249_Initial")] - partial class Initial - { - /// - protected override void BuildTargetModel(ModelBuilder modelBuilder) - { -#pragma warning disable 612, 618 - modelBuilder - .HasAnnotation("_Abp_DatabaseProvider", EfCoreDatabaseProvider.SqlServer) - .HasAnnotation("ProductVersion", "8.0.0") - .HasAnnotation("Relational:MaxIdentifierLength", 128); - - SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder); - - modelBuilder.Entity("Volo.Abp.FeatureManagement.FeatureDefinitionRecord", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uniqueidentifier"); - - b.Property("AllowedProviders") - .HasMaxLength(256) - .HasColumnType("nvarchar(256)"); - - b.Property("DefaultValue") - .HasMaxLength(256) - .HasColumnType("nvarchar(256)"); - - b.Property("Description") - .HasMaxLength(256) - .HasColumnType("nvarchar(256)"); - - b.Property("DisplayName") - .IsRequired() - .HasMaxLength(256) - .HasColumnType("nvarchar(256)"); - - b.Property("ExtraProperties") - .HasColumnType("nvarchar(max)") - .HasColumnName("ExtraProperties"); - - b.Property("GroupName") - .IsRequired() - .HasMaxLength(128) - .HasColumnType("nvarchar(128)"); - - b.Property("IsAvailableToHost") - .HasColumnType("bit"); - - b.Property("IsVisibleToClients") - .HasColumnType("bit"); - - b.Property("Name") - .IsRequired() - .HasMaxLength(128) - .HasColumnType("nvarchar(128)"); - - b.Property("ParentName") - .HasMaxLength(128) - .HasColumnType("nvarchar(128)"); - - b.Property("ValueType") - .HasMaxLength(2048) - .HasColumnType("nvarchar(2048)"); - - b.HasKey("Id"); - - b.HasIndex("GroupName"); - - b.HasIndex("Name") - .IsUnique(); - - b.ToTable("AbpFeatures", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.FeatureManagement.FeatureGroupDefinitionRecord", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uniqueidentifier"); - - b.Property("DisplayName") - .IsRequired() - .HasMaxLength(256) - .HasColumnType("nvarchar(256)"); - - b.Property("ExtraProperties") - .HasColumnType("nvarchar(max)") - .HasColumnName("ExtraProperties"); - - b.Property("Name") - .IsRequired() - .HasMaxLength(128) - .HasColumnType("nvarchar(128)"); - - b.HasKey("Id"); - - b.HasIndex("Name") - .IsUnique(); - - b.ToTable("AbpFeatureGroups", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.FeatureManagement.FeatureValue", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uniqueidentifier"); - - b.Property("Name") - .IsRequired() - .HasMaxLength(128) - .HasColumnType("nvarchar(128)"); - - b.Property("ProviderKey") - .HasMaxLength(64) - .HasColumnType("nvarchar(64)"); - - b.Property("ProviderName") - .HasMaxLength(64) - .HasColumnType("nvarchar(64)"); - - b.Property("Value") - .IsRequired() - .HasMaxLength(128) - .HasColumnType("nvarchar(128)"); - - b.HasKey("Id"); - - b.HasIndex("Name", "ProviderName", "ProviderKey") - .IsUnique() - .HasFilter("[ProviderName] IS NOT NULL AND [ProviderKey] IS NOT NULL"); - - b.ToTable("AbpFeatureValues", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.Identity.IdentityClaimType", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uniqueidentifier"); - - b.Property("ConcurrencyStamp") - .IsConcurrencyToken() - .IsRequired() - .HasMaxLength(40) - .HasColumnType("nvarchar(40)") - .HasColumnName("ConcurrencyStamp"); - - b.Property("Description") - .HasMaxLength(256) - .HasColumnType("nvarchar(256)"); - - b.Property("ExtraProperties") - .IsRequired() - .HasColumnType("nvarchar(max)") - .HasColumnName("ExtraProperties"); - - b.Property("IsStatic") - .HasColumnType("bit"); - - b.Property("Name") - .IsRequired() - .HasMaxLength(256) - .HasColumnType("nvarchar(256)"); - - b.Property("Regex") - .HasMaxLength(512) - .HasColumnType("nvarchar(512)"); - - b.Property("RegexDescription") - .HasMaxLength(128) - .HasColumnType("nvarchar(128)"); - - b.Property("Required") - .HasColumnType("bit"); - - b.Property("ValueType") - .HasColumnType("int"); - - b.HasKey("Id"); - - b.ToTable("AbpClaimTypes", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.Identity.IdentityLinkUser", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uniqueidentifier"); - - b.Property("SourceTenantId") - .HasColumnType("uniqueidentifier"); - - b.Property("SourceUserId") - .HasColumnType("uniqueidentifier"); - - b.Property("TargetTenantId") - .HasColumnType("uniqueidentifier"); - - b.Property("TargetUserId") - .HasColumnType("uniqueidentifier"); - - b.HasKey("Id"); - - b.HasIndex("SourceUserId", "SourceTenantId", "TargetUserId", "TargetTenantId") - .IsUnique() - .HasFilter("[SourceTenantId] IS NOT NULL AND [TargetTenantId] IS NOT NULL"); - - b.ToTable("AbpLinkUsers", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.Identity.IdentityRole", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uniqueidentifier"); - - b.Property("ConcurrencyStamp") - .IsConcurrencyToken() - .IsRequired() - .HasMaxLength(40) - .HasColumnType("nvarchar(40)") - .HasColumnName("ConcurrencyStamp"); - - b.Property("EntityVersion") - .HasColumnType("int"); - - b.Property("ExtraProperties") - .IsRequired() - .HasColumnType("nvarchar(max)") - .HasColumnName("ExtraProperties"); - - b.Property("IsDefault") - .HasColumnType("bit") - .HasColumnName("IsDefault"); - - b.Property("IsPublic") - .HasColumnType("bit") - .HasColumnName("IsPublic"); - - b.Property("IsStatic") - .HasColumnType("bit") - .HasColumnName("IsStatic"); - - b.Property("Name") - .IsRequired() - .HasMaxLength(256) - .HasColumnType("nvarchar(256)"); - - b.Property("NormalizedName") - .IsRequired() - .HasMaxLength(256) - .HasColumnType("nvarchar(256)"); - - b.Property("TenantId") - .HasColumnType("uniqueidentifier") - .HasColumnName("TenantId"); - - b.HasKey("Id"); - - b.HasIndex("NormalizedName"); - - b.ToTable("AbpRoles", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.Identity.IdentityRoleClaim", b => - { - b.Property("Id") - .HasColumnType("uniqueidentifier"); - - b.Property("ClaimType") - .IsRequired() - .HasMaxLength(256) - .HasColumnType("nvarchar(256)"); - - b.Property("ClaimValue") - .HasMaxLength(1024) - .HasColumnType("nvarchar(1024)"); - - b.Property("RoleId") - .HasColumnType("uniqueidentifier"); - - b.Property("TenantId") - .HasColumnType("uniqueidentifier") - .HasColumnName("TenantId"); - - b.HasKey("Id"); - - b.HasIndex("RoleId"); - - b.ToTable("AbpRoleClaims", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.Identity.IdentitySecurityLog", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uniqueidentifier"); - - b.Property("Action") - .HasMaxLength(96) - .HasColumnType("nvarchar(96)"); - - b.Property("ApplicationName") - .HasMaxLength(96) - .HasColumnType("nvarchar(96)"); - - b.Property("BrowserInfo") - .HasMaxLength(512) - .HasColumnType("nvarchar(512)"); - - b.Property("ClientId") - .HasMaxLength(64) - .HasColumnType("nvarchar(64)"); - - b.Property("ClientIpAddress") - .HasMaxLength(64) - .HasColumnType("nvarchar(64)"); - - b.Property("ConcurrencyStamp") - .IsConcurrencyToken() - .IsRequired() - .HasMaxLength(40) - .HasColumnType("nvarchar(40)") - .HasColumnName("ConcurrencyStamp"); - - b.Property("CorrelationId") - .HasMaxLength(64) - .HasColumnType("nvarchar(64)"); - - b.Property("CreationTime") - .HasColumnType("datetime2"); - - b.Property("ExtraProperties") - .IsRequired() - .HasColumnType("nvarchar(max)") - .HasColumnName("ExtraProperties"); - - b.Property("Identity") - .HasMaxLength(96) - .HasColumnType("nvarchar(96)"); - - b.Property("TenantId") - .HasColumnType("uniqueidentifier") - .HasColumnName("TenantId"); - - b.Property("TenantName") - .HasMaxLength(64) - .HasColumnType("nvarchar(64)"); - - b.Property("UserId") - .HasColumnType("uniqueidentifier"); - - b.Property("UserName") - .HasMaxLength(256) - .HasColumnType("nvarchar(256)"); - - b.HasKey("Id"); - - b.HasIndex("TenantId", "Action"); - - b.HasIndex("TenantId", "ApplicationName"); - - b.HasIndex("TenantId", "Identity"); - - b.HasIndex("TenantId", "UserId"); - - b.ToTable("AbpSecurityLogs", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.Identity.IdentityUser", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uniqueidentifier"); - - b.Property("AccessFailedCount") - .ValueGeneratedOnAdd() - .HasColumnType("int") - .HasDefaultValue(0) - .HasColumnName("AccessFailedCount"); - - b.Property("ConcurrencyStamp") - .IsConcurrencyToken() - .IsRequired() - .HasMaxLength(40) - .HasColumnType("nvarchar(40)") - .HasColumnName("ConcurrencyStamp"); - - b.Property("CreationTime") - .HasColumnType("datetime2") - .HasColumnName("CreationTime"); - - b.Property("CreatorId") - .HasColumnType("uniqueidentifier") - .HasColumnName("CreatorId"); - - b.Property("DeleterId") - .HasColumnType("uniqueidentifier") - .HasColumnName("DeleterId"); - - b.Property("DeletionTime") - .HasColumnType("datetime2") - .HasColumnName("DeletionTime"); - - b.Property("Email") - .IsRequired() - .HasMaxLength(256) - .HasColumnType("nvarchar(256)") - .HasColumnName("Email"); - - b.Property("EmailConfirmed") - .ValueGeneratedOnAdd() - .HasColumnType("bit") - .HasDefaultValue(false) - .HasColumnName("EmailConfirmed"); - - b.Property("EntityVersion") - .HasColumnType("int"); - - b.Property("ExtraProperties") - .IsRequired() - .HasColumnType("nvarchar(max)") - .HasColumnName("ExtraProperties"); - - b.Property("IsActive") - .HasColumnType("bit") - .HasColumnName("IsActive"); - - b.Property("IsDeleted") - .ValueGeneratedOnAdd() - .HasColumnType("bit") - .HasDefaultValue(false) - .HasColumnName("IsDeleted"); - - b.Property("IsExternal") - .ValueGeneratedOnAdd() - .HasColumnType("bit") - .HasDefaultValue(false) - .HasColumnName("IsExternal"); - - b.Property("LastModificationTime") - .HasColumnType("datetime2") - .HasColumnName("LastModificationTime"); - - b.Property("LastModifierId") - .HasColumnType("uniqueidentifier") - .HasColumnName("LastModifierId"); - - b.Property("LastPasswordChangeTime") - .HasColumnType("datetimeoffset"); - - b.Property("LockoutEnabled") - .ValueGeneratedOnAdd() - .HasColumnType("bit") - .HasDefaultValue(false) - .HasColumnName("LockoutEnabled"); - - b.Property("LockoutEnd") - .HasColumnType("datetimeoffset"); - - b.Property("Name") - .HasMaxLength(64) - .HasColumnType("nvarchar(64)") - .HasColumnName("Name"); - - b.Property("NormalizedEmail") - .IsRequired() - .HasMaxLength(256) - .HasColumnType("nvarchar(256)") - .HasColumnName("NormalizedEmail"); - - b.Property("NormalizedUserName") - .IsRequired() - .HasMaxLength(256) - .HasColumnType("nvarchar(256)") - .HasColumnName("NormalizedUserName"); - - b.Property("PasswordHash") - .HasMaxLength(256) - .HasColumnType("nvarchar(256)") - .HasColumnName("PasswordHash"); - - b.Property("PhoneNumber") - .HasMaxLength(16) - .HasColumnType("nvarchar(16)") - .HasColumnName("PhoneNumber"); - - b.Property("PhoneNumberConfirmed") - .ValueGeneratedOnAdd() - .HasColumnType("bit") - .HasDefaultValue(false) - .HasColumnName("PhoneNumberConfirmed"); - - b.Property("SecurityStamp") - .IsRequired() - .HasMaxLength(256) - .HasColumnType("nvarchar(256)") - .HasColumnName("SecurityStamp"); - - b.Property("ShouldChangePasswordOnNextLogin") - .HasColumnType("bit"); - - b.Property("Surname") - .HasMaxLength(64) - .HasColumnType("nvarchar(64)") - .HasColumnName("Surname"); - - b.Property("TenantId") - .HasColumnType("uniqueidentifier") - .HasColumnName("TenantId"); - - b.Property("TwoFactorEnabled") - .ValueGeneratedOnAdd() - .HasColumnType("bit") - .HasDefaultValue(false) - .HasColumnName("TwoFactorEnabled"); - - b.Property("UserName") - .IsRequired() - .HasMaxLength(256) - .HasColumnType("nvarchar(256)") - .HasColumnName("UserName"); - - b.HasKey("Id"); - - b.HasIndex("Email"); - - b.HasIndex("NormalizedEmail"); - - b.HasIndex("NormalizedUserName"); - - b.HasIndex("UserName"); - - b.ToTable("AbpUsers", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.Identity.IdentityUserClaim", b => - { - b.Property("Id") - .HasColumnType("uniqueidentifier"); - - b.Property("ClaimType") - .IsRequired() - .HasMaxLength(256) - .HasColumnType("nvarchar(256)"); - - b.Property("ClaimValue") - .HasMaxLength(1024) - .HasColumnType("nvarchar(1024)"); - - b.Property("TenantId") - .HasColumnType("uniqueidentifier") - .HasColumnName("TenantId"); - - b.Property("UserId") - .HasColumnType("uniqueidentifier"); - - b.HasKey("Id"); - - b.HasIndex("UserId"); - - b.ToTable("AbpUserClaims", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.Identity.IdentityUserDelegation", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uniqueidentifier"); - - b.Property("EndTime") - .HasColumnType("datetime2"); - - b.Property("SourceUserId") - .HasColumnType("uniqueidentifier"); - - b.Property("StartTime") - .HasColumnType("datetime2"); - - b.Property("TargetUserId") - .HasColumnType("uniqueidentifier"); - - b.Property("TenantId") - .HasColumnType("uniqueidentifier") - .HasColumnName("TenantId"); - - b.HasKey("Id"); - - b.ToTable("AbpUserDelegations", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.Identity.IdentityUserLogin", b => - { - b.Property("UserId") - .HasColumnType("uniqueidentifier"); - - b.Property("LoginProvider") - .HasMaxLength(64) - .HasColumnType("nvarchar(64)"); - - b.Property("ProviderDisplayName") - .HasMaxLength(128) - .HasColumnType("nvarchar(128)"); - - b.Property("ProviderKey") - .IsRequired() - .HasMaxLength(196) - .HasColumnType("nvarchar(196)"); - - b.Property("TenantId") - .HasColumnType("uniqueidentifier") - .HasColumnName("TenantId"); - - b.HasKey("UserId", "LoginProvider"); - - b.HasIndex("LoginProvider", "ProviderKey"); - - b.ToTable("AbpUserLogins", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.Identity.IdentityUserOrganizationUnit", b => - { - b.Property("OrganizationUnitId") - .HasColumnType("uniqueidentifier"); - - b.Property("UserId") - .HasColumnType("uniqueidentifier"); - - b.Property("CreationTime") - .HasColumnType("datetime2") - .HasColumnName("CreationTime"); - - b.Property("CreatorId") - .HasColumnType("uniqueidentifier") - .HasColumnName("CreatorId"); - - b.Property("TenantId") - .HasColumnType("uniqueidentifier") - .HasColumnName("TenantId"); - - b.HasKey("OrganizationUnitId", "UserId"); - - b.HasIndex("UserId", "OrganizationUnitId"); - - b.ToTable("AbpUserOrganizationUnits", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.Identity.IdentityUserRole", b => - { - b.Property("UserId") - .HasColumnType("uniqueidentifier"); - - b.Property("RoleId") - .HasColumnType("uniqueidentifier"); - - b.Property("TenantId") - .HasColumnType("uniqueidentifier") - .HasColumnName("TenantId"); - - b.HasKey("UserId", "RoleId"); - - b.HasIndex("RoleId", "UserId"); - - b.ToTable("AbpUserRoles", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.Identity.IdentityUserToken", b => - { - b.Property("UserId") - .HasColumnType("uniqueidentifier"); - - b.Property("LoginProvider") - .HasMaxLength(64) - .HasColumnType("nvarchar(64)"); - - b.Property("Name") - .HasMaxLength(128) - .HasColumnType("nvarchar(128)"); - - b.Property("TenantId") - .HasColumnType("uniqueidentifier") - .HasColumnName("TenantId"); - - b.Property("Value") - .HasColumnType("nvarchar(max)"); - - b.HasKey("UserId", "LoginProvider", "Name"); - - b.ToTable("AbpUserTokens", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.Identity.OrganizationUnit", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uniqueidentifier"); - - b.Property("Code") - .IsRequired() - .HasMaxLength(95) - .HasColumnType("nvarchar(95)") - .HasColumnName("Code"); - - b.Property("ConcurrencyStamp") - .IsConcurrencyToken() - .IsRequired() - .HasMaxLength(40) - .HasColumnType("nvarchar(40)") - .HasColumnName("ConcurrencyStamp"); - - b.Property("CreationTime") - .HasColumnType("datetime2") - .HasColumnName("CreationTime"); - - b.Property("CreatorId") - .HasColumnType("uniqueidentifier") - .HasColumnName("CreatorId"); - - b.Property("DeleterId") - .HasColumnType("uniqueidentifier") - .HasColumnName("DeleterId"); - - b.Property("DeletionTime") - .HasColumnType("datetime2") - .HasColumnName("DeletionTime"); - - b.Property("DisplayName") - .IsRequired() - .HasMaxLength(128) - .HasColumnType("nvarchar(128)") - .HasColumnName("DisplayName"); - - b.Property("EntityVersion") - .HasColumnType("int"); - - b.Property("ExtraProperties") - .IsRequired() - .HasColumnType("nvarchar(max)") - .HasColumnName("ExtraProperties"); - - b.Property("IsDeleted") - .ValueGeneratedOnAdd() - .HasColumnType("bit") - .HasDefaultValue(false) - .HasColumnName("IsDeleted"); - - b.Property("LastModificationTime") - .HasColumnType("datetime2") - .HasColumnName("LastModificationTime"); - - b.Property("LastModifierId") - .HasColumnType("uniqueidentifier") - .HasColumnName("LastModifierId"); - - b.Property("ParentId") - .HasColumnType("uniqueidentifier"); - - b.Property("TenantId") - .HasColumnType("uniqueidentifier") - .HasColumnName("TenantId"); - - b.HasKey("Id"); - - b.HasIndex("Code"); - - b.HasIndex("ParentId"); - - b.ToTable("AbpOrganizationUnits", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.Identity.OrganizationUnitRole", b => - { - b.Property("OrganizationUnitId") - .HasColumnType("uniqueidentifier"); - - b.Property("RoleId") - .HasColumnType("uniqueidentifier"); - - b.Property("CreationTime") - .HasColumnType("datetime2") - .HasColumnName("CreationTime"); - - b.Property("CreatorId") - .HasColumnType("uniqueidentifier") - .HasColumnName("CreatorId"); - - b.Property("TenantId") - .HasColumnType("uniqueidentifier") - .HasColumnName("TenantId"); - - b.HasKey("OrganizationUnitId", "RoleId"); - - b.HasIndex("RoleId", "OrganizationUnitId"); - - b.ToTable("AbpOrganizationUnitRoles", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.OpenIddict.Applications.OpenIddictApplication", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uniqueidentifier"); - - b.Property("ClientId") - .HasMaxLength(100) - .HasColumnType("nvarchar(100)"); - - b.Property("ClientSecret") - .HasColumnType("nvarchar(max)"); - - b.Property("ClientUri") - .HasColumnType("nvarchar(max)"); - - b.Property("ConcurrencyStamp") - .IsConcurrencyToken() - .IsRequired() - .HasMaxLength(40) - .HasColumnType("nvarchar(40)") - .HasColumnName("ConcurrencyStamp"); - - b.Property("ConsentType") - .HasMaxLength(50) - .HasColumnType("nvarchar(50)"); - - b.Property("CreationTime") - .HasColumnType("datetime2") - .HasColumnName("CreationTime"); - - b.Property("CreatorId") - .HasColumnType("uniqueidentifier") - .HasColumnName("CreatorId"); - - b.Property("DeleterId") - .HasColumnType("uniqueidentifier") - .HasColumnName("DeleterId"); - - b.Property("DeletionTime") - .HasColumnType("datetime2") - .HasColumnName("DeletionTime"); - - b.Property("DisplayName") - .HasColumnType("nvarchar(max)"); - - b.Property("DisplayNames") - .HasColumnType("nvarchar(max)"); - - b.Property("ExtraProperties") - .IsRequired() - .HasColumnType("nvarchar(max)") - .HasColumnName("ExtraProperties"); - - b.Property("IsDeleted") - .ValueGeneratedOnAdd() - .HasColumnType("bit") - .HasDefaultValue(false) - .HasColumnName("IsDeleted"); - - b.Property("LastModificationTime") - .HasColumnType("datetime2") - .HasColumnName("LastModificationTime"); - - b.Property("LastModifierId") - .HasColumnType("uniqueidentifier") - .HasColumnName("LastModifierId"); - - b.Property("LogoUri") - .HasColumnType("nvarchar(max)"); - - b.Property("Permissions") - .HasColumnType("nvarchar(max)"); - - b.Property("PostLogoutRedirectUris") - .HasColumnType("nvarchar(max)"); - - b.Property("Properties") - .HasColumnType("nvarchar(max)"); - - b.Property("RedirectUris") - .HasColumnType("nvarchar(max)"); - - b.Property("Requirements") - .HasColumnType("nvarchar(max)"); - - b.Property("Type") - .HasMaxLength(50) - .HasColumnType("nvarchar(50)"); - - b.HasKey("Id"); - - b.HasIndex("ClientId"); - - b.ToTable("OpenIddictApplications", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.OpenIddict.Authorizations.OpenIddictAuthorization", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uniqueidentifier"); - - b.Property("ApplicationId") - .HasColumnType("uniqueidentifier"); - - b.Property("ConcurrencyStamp") - .IsConcurrencyToken() - .IsRequired() - .HasMaxLength(40) - .HasColumnType("nvarchar(40)") - .HasColumnName("ConcurrencyStamp"); - - b.Property("CreationDate") - .HasColumnType("datetime2"); - - b.Property("CreationTime") - .HasColumnType("datetime2") - .HasColumnName("CreationTime"); - - b.Property("CreatorId") - .HasColumnType("uniqueidentifier") - .HasColumnName("CreatorId"); - - b.Property("DeleterId") - .HasColumnType("uniqueidentifier") - .HasColumnName("DeleterId"); - - b.Property("DeletionTime") - .HasColumnType("datetime2") - .HasColumnName("DeletionTime"); - - b.Property("ExtraProperties") - .IsRequired() - .HasColumnType("nvarchar(max)") - .HasColumnName("ExtraProperties"); - - b.Property("IsDeleted") - .ValueGeneratedOnAdd() - .HasColumnType("bit") - .HasDefaultValue(false) - .HasColumnName("IsDeleted"); - - b.Property("LastModificationTime") - .HasColumnType("datetime2") - .HasColumnName("LastModificationTime"); - - b.Property("LastModifierId") - .HasColumnType("uniqueidentifier") - .HasColumnName("LastModifierId"); - - b.Property("Properties") - .HasColumnType("nvarchar(max)"); - - b.Property("Scopes") - .HasColumnType("nvarchar(max)"); - - b.Property("Status") - .HasMaxLength(50) - .HasColumnType("nvarchar(50)"); - - b.Property("Subject") - .HasMaxLength(400) - .HasColumnType("nvarchar(400)"); - - b.Property("Type") - .HasMaxLength(50) - .HasColumnType("nvarchar(50)"); - - b.HasKey("Id"); - - b.HasIndex("ApplicationId", "Status", "Subject", "Type"); - - b.ToTable("OpenIddictAuthorizations", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.OpenIddict.Scopes.OpenIddictScope", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uniqueidentifier"); - - b.Property("ConcurrencyStamp") - .IsConcurrencyToken() - .IsRequired() - .HasMaxLength(40) - .HasColumnType("nvarchar(40)") - .HasColumnName("ConcurrencyStamp"); - - b.Property("CreationTime") - .HasColumnType("datetime2") - .HasColumnName("CreationTime"); - - b.Property("CreatorId") - .HasColumnType("uniqueidentifier") - .HasColumnName("CreatorId"); - - b.Property("DeleterId") - .HasColumnType("uniqueidentifier") - .HasColumnName("DeleterId"); - - b.Property("DeletionTime") - .HasColumnType("datetime2") - .HasColumnName("DeletionTime"); - - b.Property("Description") - .HasColumnType("nvarchar(max)"); - - b.Property("Descriptions") - .HasColumnType("nvarchar(max)"); - - b.Property("DisplayName") - .HasColumnType("nvarchar(max)"); - - b.Property("DisplayNames") - .HasColumnType("nvarchar(max)"); - - b.Property("ExtraProperties") - .IsRequired() - .HasColumnType("nvarchar(max)") - .HasColumnName("ExtraProperties"); - - b.Property("IsDeleted") - .ValueGeneratedOnAdd() - .HasColumnType("bit") - .HasDefaultValue(false) - .HasColumnName("IsDeleted"); - - b.Property("LastModificationTime") - .HasColumnType("datetime2") - .HasColumnName("LastModificationTime"); - - b.Property("LastModifierId") - .HasColumnType("uniqueidentifier") - .HasColumnName("LastModifierId"); - - b.Property("Name") - .HasMaxLength(200) - .HasColumnType("nvarchar(200)"); - - b.Property("Properties") - .HasColumnType("nvarchar(max)"); - - b.Property("Resources") - .HasColumnType("nvarchar(max)"); - - b.HasKey("Id"); - - b.HasIndex("Name"); - - b.ToTable("OpenIddictScopes", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.OpenIddict.Tokens.OpenIddictToken", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uniqueidentifier"); - - b.Property("ApplicationId") - .HasColumnType("uniqueidentifier"); - - b.Property("AuthorizationId") - .HasColumnType("uniqueidentifier"); - - b.Property("ConcurrencyStamp") - .IsConcurrencyToken() - .IsRequired() - .HasMaxLength(40) - .HasColumnType("nvarchar(40)") - .HasColumnName("ConcurrencyStamp"); - - b.Property("CreationDate") - .HasColumnType("datetime2"); - - b.Property("CreationTime") - .HasColumnType("datetime2") - .HasColumnName("CreationTime"); - - b.Property("CreatorId") - .HasColumnType("uniqueidentifier") - .HasColumnName("CreatorId"); - - b.Property("DeleterId") - .HasColumnType("uniqueidentifier") - .HasColumnName("DeleterId"); - - b.Property("DeletionTime") - .HasColumnType("datetime2") - .HasColumnName("DeletionTime"); - - b.Property("ExpirationDate") - .HasColumnType("datetime2"); - - b.Property("ExtraProperties") - .IsRequired() - .HasColumnType("nvarchar(max)") - .HasColumnName("ExtraProperties"); - - b.Property("IsDeleted") - .ValueGeneratedOnAdd() - .HasColumnType("bit") - .HasDefaultValue(false) - .HasColumnName("IsDeleted"); - - b.Property("LastModificationTime") - .HasColumnType("datetime2") - .HasColumnName("LastModificationTime"); - - b.Property("LastModifierId") - .HasColumnType("uniqueidentifier") - .HasColumnName("LastModifierId"); - - b.Property("Payload") - .HasColumnType("nvarchar(max)"); - - b.Property("Properties") - .HasColumnType("nvarchar(max)"); - - b.Property("RedemptionDate") - .HasColumnType("datetime2"); - - b.Property("ReferenceId") - .HasMaxLength(100) - .HasColumnType("nvarchar(100)"); - - b.Property("Status") - .HasMaxLength(50) - .HasColumnType("nvarchar(50)"); - - b.Property("Subject") - .HasMaxLength(400) - .HasColumnType("nvarchar(400)"); - - b.Property("Type") - .HasMaxLength(50) - .HasColumnType("nvarchar(50)"); - - b.HasKey("Id"); - - b.HasIndex("AuthorizationId"); - - b.HasIndex("ReferenceId"); - - b.HasIndex("ApplicationId", "Status", "Subject", "Type"); - - b.ToTable("OpenIddictTokens", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.PermissionManagement.PermissionDefinitionRecord", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uniqueidentifier"); - - b.Property("DisplayName") - .IsRequired() - .HasMaxLength(256) - .HasColumnType("nvarchar(256)"); - - b.Property("ExtraProperties") - .HasColumnType("nvarchar(max)") - .HasColumnName("ExtraProperties"); - - b.Property("GroupName") - .IsRequired() - .HasMaxLength(128) - .HasColumnType("nvarchar(128)"); - - b.Property("IsEnabled") - .HasColumnType("bit"); - - b.Property("MultiTenancySide") - .HasColumnType("tinyint"); - - b.Property("Name") - .IsRequired() - .HasMaxLength(128) - .HasColumnType("nvarchar(128)"); - - b.Property("ParentName") - .HasMaxLength(128) - .HasColumnType("nvarchar(128)"); - - b.Property("Providers") - .HasMaxLength(128) - .HasColumnType("nvarchar(128)"); - - b.Property("StateCheckers") - .HasMaxLength(256) - .HasColumnType("nvarchar(256)"); - - b.HasKey("Id"); - - b.HasIndex("GroupName"); - - b.HasIndex("Name") - .IsUnique(); - - b.ToTable("AbpPermissions", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.PermissionManagement.PermissionGrant", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uniqueidentifier"); - - b.Property("Name") - .IsRequired() - .HasMaxLength(128) - .HasColumnType("nvarchar(128)"); - - b.Property("ProviderKey") - .IsRequired() - .HasMaxLength(64) - .HasColumnType("nvarchar(64)"); - - b.Property("ProviderName") - .IsRequired() - .HasMaxLength(64) - .HasColumnType("nvarchar(64)"); - - b.Property("TenantId") - .HasColumnType("uniqueidentifier") - .HasColumnName("TenantId"); - - b.HasKey("Id"); - - b.HasIndex("TenantId", "Name", "ProviderName", "ProviderKey") - .IsUnique() - .HasFilter("[TenantId] IS NOT NULL"); - - b.ToTable("AbpPermissionGrants", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.PermissionManagement.PermissionGroupDefinitionRecord", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uniqueidentifier"); - - b.Property("DisplayName") - .IsRequired() - .HasMaxLength(256) - .HasColumnType("nvarchar(256)"); - - b.Property("ExtraProperties") - .HasColumnType("nvarchar(max)") - .HasColumnName("ExtraProperties"); - - b.Property("Name") - .IsRequired() - .HasMaxLength(128) - .HasColumnType("nvarchar(128)"); - - b.HasKey("Id"); - - b.HasIndex("Name") - .IsUnique(); - - b.ToTable("AbpPermissionGroups", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.SettingManagement.Setting", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uniqueidentifier"); - - b.Property("Name") - .IsRequired() - .HasMaxLength(128) - .HasColumnType("nvarchar(128)"); - - b.Property("ProviderKey") - .HasMaxLength(64) - .HasColumnType("nvarchar(64)"); - - b.Property("ProviderName") - .HasMaxLength(64) - .HasColumnType("nvarchar(64)"); - - b.Property("Value") - .IsRequired() - .HasMaxLength(2048) - .HasColumnType("nvarchar(2048)"); - - b.HasKey("Id"); - - b.HasIndex("Name", "ProviderName", "ProviderKey") - .IsUnique() - .HasFilter("[ProviderName] IS NOT NULL AND [ProviderKey] IS NOT NULL"); - - b.ToTable("AbpSettings", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.SettingManagement.SettingDefinitionRecord", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uniqueidentifier"); - - b.Property("DefaultValue") - .HasMaxLength(256) - .HasColumnType("nvarchar(256)"); - - b.Property("Description") - .HasMaxLength(512) - .HasColumnType("nvarchar(512)"); - - b.Property("DisplayName") - .IsRequired() - .HasMaxLength(256) - .HasColumnType("nvarchar(256)"); - - b.Property("ExtraProperties") - .HasColumnType("nvarchar(max)") - .HasColumnName("ExtraProperties"); - - b.Property("IsEncrypted") - .HasColumnType("bit"); - - b.Property("IsInherited") - .HasColumnType("bit"); - - b.Property("IsVisibleToClients") - .HasColumnType("bit"); - - b.Property("Name") - .IsRequired() - .HasMaxLength(128) - .HasColumnType("nvarchar(128)"); - - b.Property("Providers") - .HasMaxLength(128) - .HasColumnType("nvarchar(128)"); - - b.HasKey("Id"); - - b.HasIndex("Name") - .IsUnique(); - - b.ToTable("AbpSettingDefinitions", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.TenantManagement.Tenant", b => - { - b.Property("Id") - .ValueGeneratedOnAdd() - .HasColumnType("uniqueidentifier"); - - b.Property("ConcurrencyStamp") - .IsConcurrencyToken() - .IsRequired() - .HasMaxLength(40) - .HasColumnType("nvarchar(40)") - .HasColumnName("ConcurrencyStamp"); - - b.Property("CreationTime") - .HasColumnType("datetime2") - .HasColumnName("CreationTime"); - - b.Property("CreatorId") - .HasColumnType("uniqueidentifier") - .HasColumnName("CreatorId"); - - b.Property("DeleterId") - .HasColumnType("uniqueidentifier") - .HasColumnName("DeleterId"); - - b.Property("DeletionTime") - .HasColumnType("datetime2") - .HasColumnName("DeletionTime"); - - b.Property("EntityVersion") - .HasColumnType("int"); - - b.Property("ExtraProperties") - .IsRequired() - .HasColumnType("nvarchar(max)") - .HasColumnName("ExtraProperties"); - - b.Property("IsDeleted") - .ValueGeneratedOnAdd() - .HasColumnType("bit") - .HasDefaultValue(false) - .HasColumnName("IsDeleted"); - - b.Property("LastModificationTime") - .HasColumnType("datetime2") - .HasColumnName("LastModificationTime"); - - b.Property("LastModifierId") - .HasColumnType("uniqueidentifier") - .HasColumnName("LastModifierId"); - - b.Property("Name") - .IsRequired() - .HasMaxLength(64) - .HasColumnType("nvarchar(64)"); - - b.HasKey("Id"); - - b.HasIndex("Name"); - - b.ToTable("AbpTenants", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.TenantManagement.TenantConnectionString", b => - { - b.Property("TenantId") - .HasColumnType("uniqueidentifier"); - - b.Property("Name") - .HasMaxLength(64) - .HasColumnType("nvarchar(64)"); - - b.Property("Value") - .IsRequired() - .HasMaxLength(1024) - .HasColumnType("nvarchar(1024)"); - - b.HasKey("TenantId", "Name"); - - b.ToTable("AbpTenantConnectionStrings", (string)null); - }); - - modelBuilder.Entity("Volo.Abp.Identity.IdentityRoleClaim", b => - { - b.HasOne("Volo.Abp.Identity.IdentityRole", null) - .WithMany("Claims") - .HasForeignKey("RoleId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Volo.Abp.Identity.IdentityUserClaim", b => - { - b.HasOne("Volo.Abp.Identity.IdentityUser", null) - .WithMany("Claims") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Volo.Abp.Identity.IdentityUserLogin", b => - { - b.HasOne("Volo.Abp.Identity.IdentityUser", null) - .WithMany("Logins") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Volo.Abp.Identity.IdentityUserOrganizationUnit", b => - { - b.HasOne("Volo.Abp.Identity.OrganizationUnit", null) - .WithMany() - .HasForeignKey("OrganizationUnitId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.HasOne("Volo.Abp.Identity.IdentityUser", null) - .WithMany("OrganizationUnits") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Volo.Abp.Identity.IdentityUserRole", b => - { - b.HasOne("Volo.Abp.Identity.IdentityRole", null) - .WithMany() - .HasForeignKey("RoleId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.HasOne("Volo.Abp.Identity.IdentityUser", null) - .WithMany("Roles") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Volo.Abp.Identity.IdentityUserToken", b => - { - b.HasOne("Volo.Abp.Identity.IdentityUser", null) - .WithMany("Tokens") - .HasForeignKey("UserId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Volo.Abp.Identity.OrganizationUnit", b => - { - b.HasOne("Volo.Abp.Identity.OrganizationUnit", null) - .WithMany() - .HasForeignKey("ParentId"); - }); - - modelBuilder.Entity("Volo.Abp.Identity.OrganizationUnitRole", b => - { - b.HasOne("Volo.Abp.Identity.OrganizationUnit", null) - .WithMany("Roles") - .HasForeignKey("OrganizationUnitId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - - b.HasOne("Volo.Abp.Identity.IdentityRole", null) - .WithMany() - .HasForeignKey("RoleId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Volo.Abp.OpenIddict.Authorizations.OpenIddictAuthorization", b => - { - b.HasOne("Volo.Abp.OpenIddict.Applications.OpenIddictApplication", null) - .WithMany() - .HasForeignKey("ApplicationId"); - }); - - modelBuilder.Entity("Volo.Abp.OpenIddict.Tokens.OpenIddictToken", b => - { - b.HasOne("Volo.Abp.OpenIddict.Applications.OpenIddictApplication", null) - .WithMany() - .HasForeignKey("ApplicationId"); - - b.HasOne("Volo.Abp.OpenIddict.Authorizations.OpenIddictAuthorization", null) - .WithMany() - .HasForeignKey("AuthorizationId"); - }); - - modelBuilder.Entity("Volo.Abp.TenantManagement.TenantConnectionString", b => - { - b.HasOne("Volo.Abp.TenantManagement.Tenant", null) - .WithMany("ConnectionStrings") - .HasForeignKey("TenantId") - .OnDelete(DeleteBehavior.Cascade) - .IsRequired(); - }); - - modelBuilder.Entity("Volo.Abp.Identity.IdentityRole", b => - { - b.Navigation("Claims"); - }); - - modelBuilder.Entity("Volo.Abp.Identity.IdentityUser", b => - { - b.Navigation("Claims"); - - b.Navigation("Logins"); - - b.Navigation("OrganizationUnits"); - - b.Navigation("Roles"); - - b.Navigation("Tokens"); - }); - - modelBuilder.Entity("Volo.Abp.Identity.OrganizationUnit", b => - { - b.Navigation("Roles"); - }); - - modelBuilder.Entity("Volo.Abp.TenantManagement.Tenant", b => - { - b.Navigation("ConnectionStrings"); - }); -#pragma warning restore 612, 618 - } - } -} diff --git a/modules/openiddict/app/OpenIddict.Demo.Server/Migrations/20231204084517_openiddict5.cs b/modules/openiddict/app/OpenIddict.Demo.Server/Migrations/20231204084517_openiddict5.cs deleted file mode 100644 index 3a6d58fc0f..0000000000 --- a/modules/openiddict/app/OpenIddict.Demo.Server/Migrations/20231204084517_openiddict5.cs +++ /dev/null @@ -1,59 +0,0 @@ -using Microsoft.EntityFrameworkCore.Migrations; - -#nullable disable - -namespace OpenIddict.Demo.Server.Migrations -{ - /// - public partial class openiddict5 : Migration - { - /// - protected override void Up(MigrationBuilder migrationBuilder) - { - migrationBuilder.RenameColumn( - name: "Type", - table: "OpenIddictApplications", - newName: "ClientType"); - - migrationBuilder.AddColumn( - name: "ApplicationType", - table: "OpenIddictApplications", - type: "nvarchar(50)", - maxLength: 50, - nullable: true); - - migrationBuilder.AddColumn( - name: "JsonWebKeySet", - table: "OpenIddictApplications", - type: "nvarchar(max)", - nullable: true); - - migrationBuilder.AddColumn( - name: "Settings", - table: "OpenIddictApplications", - type: "nvarchar(max)", - nullable: true); - } - - /// - protected override void Down(MigrationBuilder migrationBuilder) - { - migrationBuilder.DropColumn( - name: "ApplicationType", - table: "OpenIddictApplications"); - - migrationBuilder.DropColumn( - name: "JsonWebKeySet", - table: "OpenIddictApplications"); - - migrationBuilder.DropColumn( - name: "Settings", - table: "OpenIddictApplications"); - - migrationBuilder.RenameColumn( - name: "ClientType", - table: "OpenIddictApplications", - newName: "Type"); - } - } -} diff --git a/modules/openiddict/app/OpenIddict.Demo.Server/Migrations/20231204084517_openiddict5.Designer.cs b/modules/openiddict/app/OpenIddict.Demo.Server/Migrations/20231207053813_Initial.Designer.cs similarity index 99% rename from modules/openiddict/app/OpenIddict.Demo.Server/Migrations/20231204084517_openiddict5.Designer.cs rename to modules/openiddict/app/OpenIddict.Demo.Server/Migrations/20231207053813_Initial.Designer.cs index c479f89c7c..a7a1b7a5b4 100644 --- a/modules/openiddict/app/OpenIddict.Demo.Server/Migrations/20231204084517_openiddict5.Designer.cs +++ b/modules/openiddict/app/OpenIddict.Demo.Server/Migrations/20231207053813_Initial.Designer.cs @@ -13,8 +13,8 @@ using Volo.Abp.EntityFrameworkCore; namespace OpenIddict.Demo.Server.Migrations { [DbContext(typeof(ServerDbContext))] - [Migration("20231204084517_openiddict5")] - partial class openiddict5 + [Migration("20231207053813_Initial")] + partial class Initial { /// protected override void BuildTargetModel(ModelBuilder modelBuilder) diff --git a/modules/openiddict/app/OpenIddict.Demo.Server/Migrations/20231204054625_Initial.cs b/modules/openiddict/app/OpenIddict.Demo.Server/Migrations/20231207053813_Initial.cs similarity index 99% rename from modules/openiddict/app/OpenIddict.Demo.Server/Migrations/20231204054625_Initial.cs rename to modules/openiddict/app/OpenIddict.Demo.Server/Migrations/20231207053813_Initial.cs index 89de930745..43e69e2d57 100644 --- a/modules/openiddict/app/OpenIddict.Demo.Server/Migrations/20231204054625_Initial.cs +++ b/modules/openiddict/app/OpenIddict.Demo.Server/Migrations/20231207053813_Initial.cs @@ -340,17 +340,20 @@ namespace OpenIddict.Demo.Server.Migrations columns: table => new { Id = table.Column(type: "uniqueidentifier", nullable: false), + ApplicationType = table.Column(type: "nvarchar(50)", maxLength: 50, nullable: true), ClientId = table.Column(type: "nvarchar(100)", maxLength: 100, nullable: true), ClientSecret = table.Column(type: "nvarchar(max)", nullable: true), + ClientType = table.Column(type: "nvarchar(50)", maxLength: 50, nullable: true), ConsentType = table.Column(type: "nvarchar(50)", maxLength: 50, nullable: true), DisplayName = table.Column(type: "nvarchar(max)", nullable: true), DisplayNames = table.Column(type: "nvarchar(max)", nullable: true), + JsonWebKeySet = table.Column(type: "nvarchar(max)", nullable: true), Permissions = table.Column(type: "nvarchar(max)", nullable: true), PostLogoutRedirectUris = table.Column(type: "nvarchar(max)", nullable: true), Properties = table.Column(type: "nvarchar(max)", nullable: true), RedirectUris = table.Column(type: "nvarchar(max)", nullable: true), Requirements = table.Column(type: "nvarchar(max)", nullable: true), - Type = table.Column(type: "nvarchar(50)", maxLength: 50, nullable: true), + Settings = table.Column(type: "nvarchar(max)", nullable: true), ClientUri = table.Column(type: "nvarchar(max)", nullable: true), LogoUri = table.Column(type: "nvarchar(max)", nullable: true), ExtraProperties = table.Column(type: "nvarchar(max)", nullable: false), diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/Migrations/20231115065150_Initial.Designer.cs b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/Migrations/20231207053812_Initial.Designer.cs similarity index 99% rename from templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/Migrations/20231115065150_Initial.Designer.cs rename to templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/Migrations/20231207053812_Initial.Designer.cs index 55e4ed5121..333df53077 100644 --- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/Migrations/20231115065150_Initial.Designer.cs +++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/Migrations/20231207053812_Initial.Designer.cs @@ -13,7 +13,7 @@ using Volo.Abp.EntityFrameworkCore; namespace MyCompanyName.MyProjectName.Blazor.Server.Migrations { [DbContext(typeof(MyProjectNameDbContext))] - [Migration("20231115065150_Initial")] + [Migration("20231207053812_Initial")] partial class Initial { /// @@ -1081,6 +1081,10 @@ namespace MyCompanyName.MyProjectName.Blazor.Server.Migrations .ValueGeneratedOnAdd() .HasColumnType("uniqueidentifier"); + b.Property("ApplicationType") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + b.Property("ClientId") .HasMaxLength(100) .HasColumnType("nvarchar(100)"); @@ -1088,6 +1092,10 @@ namespace MyCompanyName.MyProjectName.Blazor.Server.Migrations b.Property("ClientSecret") .HasColumnType("nvarchar(max)"); + b.Property("ClientType") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + b.Property("ClientUri") .HasColumnType("nvarchar(max)"); @@ -1135,6 +1143,9 @@ namespace MyCompanyName.MyProjectName.Blazor.Server.Migrations .HasDefaultValue(false) .HasColumnName("IsDeleted"); + b.Property("JsonWebKeySet") + .HasColumnType("nvarchar(max)"); + b.Property("LastModificationTime") .HasColumnType("datetime2") .HasColumnName("LastModificationTime"); @@ -1161,9 +1172,8 @@ namespace MyCompanyName.MyProjectName.Blazor.Server.Migrations b.Property("Requirements") .HasColumnType("nvarchar(max)"); - b.Property("Type") - .HasMaxLength(50) - .HasColumnType("nvarchar(50)"); + b.Property("Settings") + .HasColumnType("nvarchar(max)"); b.HasKey("Id"); diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/Migrations/20231115065150_Initial.cs b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/Migrations/20231207053812_Initial.cs similarity index 99% rename from templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/Migrations/20231115065150_Initial.cs rename to templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/Migrations/20231207053812_Initial.cs index 10e01ba747..e993702885 100644 --- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/Migrations/20231115065150_Initial.cs +++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/Migrations/20231207053812_Initial.cs @@ -374,17 +374,20 @@ namespace MyCompanyName.MyProjectName.Blazor.Server.Migrations columns: table => new { Id = table.Column(type: "uniqueidentifier", nullable: false), + ApplicationType = table.Column(type: "nvarchar(50)", maxLength: 50, nullable: true), ClientId = table.Column(type: "nvarchar(100)", maxLength: 100, nullable: true), ClientSecret = table.Column(type: "nvarchar(max)", nullable: true), + ClientType = table.Column(type: "nvarchar(50)", maxLength: 50, nullable: true), ConsentType = table.Column(type: "nvarchar(50)", maxLength: 50, nullable: true), DisplayName = table.Column(type: "nvarchar(max)", nullable: true), DisplayNames = table.Column(type: "nvarchar(max)", nullable: true), + JsonWebKeySet = table.Column(type: "nvarchar(max)", nullable: true), Permissions = table.Column(type: "nvarchar(max)", nullable: true), PostLogoutRedirectUris = table.Column(type: "nvarchar(max)", nullable: true), Properties = table.Column(type: "nvarchar(max)", nullable: true), RedirectUris = table.Column(type: "nvarchar(max)", nullable: true), Requirements = table.Column(type: "nvarchar(max)", nullable: true), - Type = table.Column(type: "nvarchar(50)", maxLength: 50, nullable: true), + Settings = table.Column(type: "nvarchar(max)", nullable: true), ClientUri = table.Column(type: "nvarchar(max)", nullable: true), LogoUri = table.Column(type: "nvarchar(max)", nullable: true), ExtraProperties = table.Column(type: "nvarchar(max)", nullable: false), diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/Migrations/MyProjectNameDbContextModelSnapshot.cs b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/Migrations/MyProjectNameDbContextModelSnapshot.cs index 7e2a18a401..1def4a0ee9 100644 --- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/Migrations/MyProjectNameDbContextModelSnapshot.cs +++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.Server/Migrations/MyProjectNameDbContextModelSnapshot.cs @@ -1078,6 +1078,10 @@ namespace MyCompanyName.MyProjectName.Blazor.Server.Migrations .ValueGeneratedOnAdd() .HasColumnType("uniqueidentifier"); + b.Property("ApplicationType") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + b.Property("ClientId") .HasMaxLength(100) .HasColumnType("nvarchar(100)"); @@ -1085,6 +1089,10 @@ namespace MyCompanyName.MyProjectName.Blazor.Server.Migrations b.Property("ClientSecret") .HasColumnType("nvarchar(max)"); + b.Property("ClientType") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + b.Property("ClientUri") .HasColumnType("nvarchar(max)"); @@ -1132,6 +1140,9 @@ namespace MyCompanyName.MyProjectName.Blazor.Server.Migrations .HasDefaultValue(false) .HasColumnName("IsDeleted"); + b.Property("JsonWebKeySet") + .HasColumnType("nvarchar(max)"); + b.Property("LastModificationTime") .HasColumnType("datetime2") .HasColumnName("LastModificationTime"); @@ -1158,9 +1169,8 @@ namespace MyCompanyName.MyProjectName.Blazor.Server.Migrations b.Property("Requirements") .HasColumnType("nvarchar(max)"); - b.Property("Type") - .HasMaxLength(50) - .HasColumnType("nvarchar(50)"); + b.Property("Settings") + .HasColumnType("nvarchar(max)"); b.HasKey("Id"); diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Server/Migrations/20231115065250_Initial.Designer.cs b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Server/Migrations/20231207053830_Initial.Designer.cs similarity index 99% rename from templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Server/Migrations/20231115065250_Initial.Designer.cs rename to templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Server/Migrations/20231207053830_Initial.Designer.cs index 7cd0e3cb68..ac18b045c6 100644 --- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Server/Migrations/20231115065250_Initial.Designer.cs +++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Server/Migrations/20231207053830_Initial.Designer.cs @@ -13,7 +13,7 @@ using Volo.Abp.EntityFrameworkCore; namespace MyCompanyName.MyProjectName.Migrations { [DbContext(typeof(MyProjectNameDbContext))] - [Migration("20231115065250_Initial")] + [Migration("20231207053830_Initial")] partial class Initial { /// @@ -1081,6 +1081,10 @@ namespace MyCompanyName.MyProjectName.Migrations .ValueGeneratedOnAdd() .HasColumnType("uniqueidentifier"); + b.Property("ApplicationType") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + b.Property("ClientId") .HasMaxLength(100) .HasColumnType("nvarchar(100)"); @@ -1088,6 +1092,10 @@ namespace MyCompanyName.MyProjectName.Migrations b.Property("ClientSecret") .HasColumnType("nvarchar(max)"); + b.Property("ClientType") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + b.Property("ClientUri") .HasColumnType("nvarchar(max)"); @@ -1135,6 +1143,9 @@ namespace MyCompanyName.MyProjectName.Migrations .HasDefaultValue(false) .HasColumnName("IsDeleted"); + b.Property("JsonWebKeySet") + .HasColumnType("nvarchar(max)"); + b.Property("LastModificationTime") .HasColumnType("datetime2") .HasColumnName("LastModificationTime"); @@ -1161,9 +1172,8 @@ namespace MyCompanyName.MyProjectName.Migrations b.Property("Requirements") .HasColumnType("nvarchar(max)"); - b.Property("Type") - .HasMaxLength(50) - .HasColumnType("nvarchar(50)"); + b.Property("Settings") + .HasColumnType("nvarchar(max)"); b.HasKey("Id"); diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.AuthServer/Migrations/20231115065520_Initial.cs b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Server/Migrations/20231207053830_Initial.cs similarity index 99% rename from templates/module/aspnet-core/host/MyCompanyName.MyProjectName.AuthServer/Migrations/20231115065520_Initial.cs rename to templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Server/Migrations/20231207053830_Initial.cs index 193fa0b299..7a0019fbf6 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.AuthServer/Migrations/20231115065520_Initial.cs +++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Server/Migrations/20231207053830_Initial.cs @@ -374,17 +374,20 @@ namespace MyCompanyName.MyProjectName.Migrations columns: table => new { Id = table.Column(type: "uniqueidentifier", nullable: false), + ApplicationType = table.Column(type: "nvarchar(50)", maxLength: 50, nullable: true), ClientId = table.Column(type: "nvarchar(100)", maxLength: 100, nullable: true), ClientSecret = table.Column(type: "nvarchar(max)", nullable: true), + ClientType = table.Column(type: "nvarchar(50)", maxLength: 50, nullable: true), ConsentType = table.Column(type: "nvarchar(50)", maxLength: 50, nullable: true), DisplayName = table.Column(type: "nvarchar(max)", nullable: true), DisplayNames = table.Column(type: "nvarchar(max)", nullable: true), + JsonWebKeySet = table.Column(type: "nvarchar(max)", nullable: true), Permissions = table.Column(type: "nvarchar(max)", nullable: true), PostLogoutRedirectUris = table.Column(type: "nvarchar(max)", nullable: true), Properties = table.Column(type: "nvarchar(max)", nullable: true), RedirectUris = table.Column(type: "nvarchar(max)", nullable: true), Requirements = table.Column(type: "nvarchar(max)", nullable: true), - Type = table.Column(type: "nvarchar(50)", maxLength: 50, nullable: true), + Settings = table.Column(type: "nvarchar(max)", nullable: true), ClientUri = table.Column(type: "nvarchar(max)", nullable: true), LogoUri = table.Column(type: "nvarchar(max)", nullable: true), ExtraProperties = table.Column(type: "nvarchar(max)", nullable: false), diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Server/Migrations/MyProjectNameDbContextModelSnapshot.cs b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Server/Migrations/MyProjectNameDbContextModelSnapshot.cs index 6462a2f8da..20542b282c 100644 --- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Server/Migrations/MyProjectNameDbContextModelSnapshot.cs +++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Server/Migrations/MyProjectNameDbContextModelSnapshot.cs @@ -1078,6 +1078,10 @@ namespace MyCompanyName.MyProjectName.Migrations .ValueGeneratedOnAdd() .HasColumnType("uniqueidentifier"); + b.Property("ApplicationType") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + b.Property("ClientId") .HasMaxLength(100) .HasColumnType("nvarchar(100)"); @@ -1085,6 +1089,10 @@ namespace MyCompanyName.MyProjectName.Migrations b.Property("ClientSecret") .HasColumnType("nvarchar(max)"); + b.Property("ClientType") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + b.Property("ClientUri") .HasColumnType("nvarchar(max)"); @@ -1132,6 +1140,9 @@ namespace MyCompanyName.MyProjectName.Migrations .HasDefaultValue(false) .HasColumnName("IsDeleted"); + b.Property("JsonWebKeySet") + .HasColumnType("nvarchar(max)"); + b.Property("LastModificationTime") .HasColumnType("datetime2") .HasColumnName("LastModificationTime"); @@ -1158,9 +1169,8 @@ namespace MyCompanyName.MyProjectName.Migrations b.Property("Requirements") .HasColumnType("nvarchar(max)"); - b.Property("Type") - .HasMaxLength(50) - .HasColumnType("nvarchar(50)"); + b.Property("Settings") + .HasColumnType("nvarchar(max)"); b.HasKey("Id"); diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/Migrations/20231115065335_Initial.Designer.cs b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/Migrations/20231207053820_Initial.Designer.cs similarity index 99% rename from templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/Migrations/20231115065335_Initial.Designer.cs rename to templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/Migrations/20231207053820_Initial.Designer.cs index bc2858d83c..333258a426 100644 --- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/Migrations/20231115065335_Initial.Designer.cs +++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/Migrations/20231207053820_Initial.Designer.cs @@ -13,7 +13,7 @@ using Volo.Abp.EntityFrameworkCore; namespace MyCompanyName.MyProjectName.Host.Migrations { [DbContext(typeof(MyProjectNameDbContext))] - [Migration("20231115065335_Initial")] + [Migration("20231207053820_Initial")] partial class Initial { /// @@ -1081,6 +1081,10 @@ namespace MyCompanyName.MyProjectName.Host.Migrations .ValueGeneratedOnAdd() .HasColumnType("uniqueidentifier"); + b.Property("ApplicationType") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + b.Property("ClientId") .HasMaxLength(100) .HasColumnType("nvarchar(100)"); @@ -1088,6 +1092,10 @@ namespace MyCompanyName.MyProjectName.Host.Migrations b.Property("ClientSecret") .HasColumnType("nvarchar(max)"); + b.Property("ClientType") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + b.Property("ClientUri") .HasColumnType("nvarchar(max)"); @@ -1135,6 +1143,9 @@ namespace MyCompanyName.MyProjectName.Host.Migrations .HasDefaultValue(false) .HasColumnName("IsDeleted"); + b.Property("JsonWebKeySet") + .HasColumnType("nvarchar(max)"); + b.Property("LastModificationTime") .HasColumnType("datetime2") .HasColumnName("LastModificationTime"); @@ -1161,9 +1172,8 @@ namespace MyCompanyName.MyProjectName.Host.Migrations b.Property("Requirements") .HasColumnType("nvarchar(max)"); - b.Property("Type") - .HasMaxLength(50) - .HasColumnType("nvarchar(50)"); + b.Property("Settings") + .HasColumnType("nvarchar(max)"); b.HasKey("Id"); diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/Migrations/20231115065335_Initial.cs b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/Migrations/20231207053820_Initial.cs similarity index 99% rename from templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/Migrations/20231115065335_Initial.cs rename to templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/Migrations/20231207053820_Initial.cs index 3b285fc029..08eca1feca 100644 --- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/Migrations/20231115065335_Initial.cs +++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/Migrations/20231207053820_Initial.cs @@ -374,17 +374,20 @@ namespace MyCompanyName.MyProjectName.Host.Migrations columns: table => new { Id = table.Column(type: "uniqueidentifier", nullable: false), + ApplicationType = table.Column(type: "nvarchar(50)", maxLength: 50, nullable: true), ClientId = table.Column(type: "nvarchar(100)", maxLength: 100, nullable: true), ClientSecret = table.Column(type: "nvarchar(max)", nullable: true), + ClientType = table.Column(type: "nvarchar(50)", maxLength: 50, nullable: true), ConsentType = table.Column(type: "nvarchar(50)", maxLength: 50, nullable: true), DisplayName = table.Column(type: "nvarchar(max)", nullable: true), DisplayNames = table.Column(type: "nvarchar(max)", nullable: true), + JsonWebKeySet = table.Column(type: "nvarchar(max)", nullable: true), Permissions = table.Column(type: "nvarchar(max)", nullable: true), PostLogoutRedirectUris = table.Column(type: "nvarchar(max)", nullable: true), Properties = table.Column(type: "nvarchar(max)", nullable: true), RedirectUris = table.Column(type: "nvarchar(max)", nullable: true), Requirements = table.Column(type: "nvarchar(max)", nullable: true), - Type = table.Column(type: "nvarchar(50)", maxLength: 50, nullable: true), + Settings = table.Column(type: "nvarchar(max)", nullable: true), ClientUri = table.Column(type: "nvarchar(max)", nullable: true), LogoUri = table.Column(type: "nvarchar(max)", nullable: true), ExtraProperties = table.Column(type: "nvarchar(max)", nullable: false), diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/Migrations/MyProjectNameDbContextModelSnapshot.cs b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/Migrations/MyProjectNameDbContextModelSnapshot.cs index ffd0a7c154..6475d362fa 100644 --- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/Migrations/MyProjectNameDbContextModelSnapshot.cs +++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Host/Migrations/MyProjectNameDbContextModelSnapshot.cs @@ -1078,6 +1078,10 @@ namespace MyCompanyName.MyProjectName.Host.Migrations .ValueGeneratedOnAdd() .HasColumnType("uniqueidentifier"); + b.Property("ApplicationType") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + b.Property("ClientId") .HasMaxLength(100) .HasColumnType("nvarchar(100)"); @@ -1085,6 +1089,10 @@ namespace MyCompanyName.MyProjectName.Host.Migrations b.Property("ClientSecret") .HasColumnType("nvarchar(max)"); + b.Property("ClientType") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + b.Property("ClientUri") .HasColumnType("nvarchar(max)"); @@ -1132,6 +1140,9 @@ namespace MyCompanyName.MyProjectName.Host.Migrations .HasDefaultValue(false) .HasColumnName("IsDeleted"); + b.Property("JsonWebKeySet") + .HasColumnType("nvarchar(max)"); + b.Property("LastModificationTime") .HasColumnType("datetime2") .HasColumnName("LastModificationTime"); @@ -1158,9 +1169,8 @@ namespace MyCompanyName.MyProjectName.Host.Migrations b.Property("Requirements") .HasColumnType("nvarchar(max)"); - b.Property("Type") - .HasMaxLength(50) - .HasColumnType("nvarchar(50)"); + b.Property("Settings") + .HasColumnType("nvarchar(max)"); b.HasKey("Id"); diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/Migrations/20231115065427_Initial.Designer.cs b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/Migrations/20231207053825_Initial.Designer.cs similarity index 99% rename from templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/Migrations/20231115065427_Initial.Designer.cs rename to templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/Migrations/20231207053825_Initial.Designer.cs index 5980cd27ff..11234086f3 100644 --- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/Migrations/20231115065427_Initial.Designer.cs +++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/Migrations/20231207053825_Initial.Designer.cs @@ -13,7 +13,7 @@ using Volo.Abp.EntityFrameworkCore; namespace MyCompanyName.MyProjectName.Mvc.Migrations { [DbContext(typeof(MyProjectNameDbContext))] - [Migration("20231115065427_Initial")] + [Migration("20231207053825_Initial")] partial class Initial { /// @@ -1081,6 +1081,10 @@ namespace MyCompanyName.MyProjectName.Mvc.Migrations .ValueGeneratedOnAdd() .HasColumnType("uniqueidentifier"); + b.Property("ApplicationType") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + b.Property("ClientId") .HasMaxLength(100) .HasColumnType("nvarchar(100)"); @@ -1088,6 +1092,10 @@ namespace MyCompanyName.MyProjectName.Mvc.Migrations b.Property("ClientSecret") .HasColumnType("nvarchar(max)"); + b.Property("ClientType") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + b.Property("ClientUri") .HasColumnType("nvarchar(max)"); @@ -1135,6 +1143,9 @@ namespace MyCompanyName.MyProjectName.Mvc.Migrations .HasDefaultValue(false) .HasColumnName("IsDeleted"); + b.Property("JsonWebKeySet") + .HasColumnType("nvarchar(max)"); + b.Property("LastModificationTime") .HasColumnType("datetime2") .HasColumnName("LastModificationTime"); @@ -1161,9 +1172,8 @@ namespace MyCompanyName.MyProjectName.Mvc.Migrations b.Property("Requirements") .HasColumnType("nvarchar(max)"); - b.Property("Type") - .HasMaxLength(50) - .HasColumnType("nvarchar(50)"); + b.Property("Settings") + .HasColumnType("nvarchar(max)"); b.HasKey("Id"); diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/Migrations/20231115065427_Initial.cs b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/Migrations/20231207053825_Initial.cs similarity index 99% rename from templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/Migrations/20231115065427_Initial.cs rename to templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/Migrations/20231207053825_Initial.cs index 2263582b8a..ef1ec2fdd6 100644 --- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/Migrations/20231115065427_Initial.cs +++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/Migrations/20231207053825_Initial.cs @@ -374,17 +374,20 @@ namespace MyCompanyName.MyProjectName.Mvc.Migrations columns: table => new { Id = table.Column(type: "uniqueidentifier", nullable: false), + ApplicationType = table.Column(type: "nvarchar(50)", maxLength: 50, nullable: true), ClientId = table.Column(type: "nvarchar(100)", maxLength: 100, nullable: true), ClientSecret = table.Column(type: "nvarchar(max)", nullable: true), + ClientType = table.Column(type: "nvarchar(50)", maxLength: 50, nullable: true), ConsentType = table.Column(type: "nvarchar(50)", maxLength: 50, nullable: true), DisplayName = table.Column(type: "nvarchar(max)", nullable: true), DisplayNames = table.Column(type: "nvarchar(max)", nullable: true), + JsonWebKeySet = table.Column(type: "nvarchar(max)", nullable: true), Permissions = table.Column(type: "nvarchar(max)", nullable: true), PostLogoutRedirectUris = table.Column(type: "nvarchar(max)", nullable: true), Properties = table.Column(type: "nvarchar(max)", nullable: true), RedirectUris = table.Column(type: "nvarchar(max)", nullable: true), Requirements = table.Column(type: "nvarchar(max)", nullable: true), - Type = table.Column(type: "nvarchar(50)", maxLength: 50, nullable: true), + Settings = table.Column(type: "nvarchar(max)", nullable: true), ClientUri = table.Column(type: "nvarchar(max)", nullable: true), LogoUri = table.Column(type: "nvarchar(max)", nullable: true), ExtraProperties = table.Column(type: "nvarchar(max)", nullable: false), diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/Migrations/MyProjectNameDbContextModelSnapshot.cs b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/Migrations/MyProjectNameDbContextModelSnapshot.cs index d2df918898..1e8916ad04 100644 --- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/Migrations/MyProjectNameDbContextModelSnapshot.cs +++ b/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Mvc/Migrations/MyProjectNameDbContextModelSnapshot.cs @@ -1078,6 +1078,10 @@ namespace MyCompanyName.MyProjectName.Mvc.Migrations .ValueGeneratedOnAdd() .HasColumnType("uniqueidentifier"); + b.Property("ApplicationType") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + b.Property("ClientId") .HasMaxLength(100) .HasColumnType("nvarchar(100)"); @@ -1085,6 +1089,10 @@ namespace MyCompanyName.MyProjectName.Mvc.Migrations b.Property("ClientSecret") .HasColumnType("nvarchar(max)"); + b.Property("ClientType") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + b.Property("ClientUri") .HasColumnType("nvarchar(max)"); @@ -1132,6 +1140,9 @@ namespace MyCompanyName.MyProjectName.Mvc.Migrations .HasDefaultValue(false) .HasColumnName("IsDeleted"); + b.Property("JsonWebKeySet") + .HasColumnType("nvarchar(max)"); + b.Property("LastModificationTime") .HasColumnType("datetime2") .HasColumnName("LastModificationTime"); @@ -1158,9 +1169,8 @@ namespace MyCompanyName.MyProjectName.Mvc.Migrations b.Property("Requirements") .HasColumnType("nvarchar(max)"); - b.Property("Type") - .HasMaxLength(50) - .HasColumnType("nvarchar(50)"); + b.Property("Settings") + .HasColumnType("nvarchar(max)"); b.HasKey("Id"); diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/Migrations/20231115065038_Initial.Designer.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/Migrations/20231207053523_Initial.Designer.cs similarity index 99% rename from templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/Migrations/20231115065038_Initial.Designer.cs rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/Migrations/20231207053523_Initial.Designer.cs index 5310a4a849..c52403afd3 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/Migrations/20231115065038_Initial.Designer.cs +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/Migrations/20231207053523_Initial.Designer.cs @@ -13,7 +13,7 @@ using Volo.Abp.EntityFrameworkCore; namespace MyCompanyName.MyProjectName.Migrations { [DbContext(typeof(MyProjectNameDbContext))] - [Migration("20231115065038_Initial")] + [Migration("20231207053523_Initial")] partial class Initial { /// @@ -1134,6 +1134,10 @@ namespace MyCompanyName.MyProjectName.Migrations .ValueGeneratedOnAdd() .HasColumnType("uniqueidentifier"); + b.Property("ApplicationType") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + b.Property("ClientId") .HasMaxLength(100) .HasColumnType("nvarchar(100)"); @@ -1141,6 +1145,10 @@ namespace MyCompanyName.MyProjectName.Migrations b.Property("ClientSecret") .HasColumnType("nvarchar(max)"); + b.Property("ClientType") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + b.Property("ClientUri") .HasColumnType("nvarchar(max)"); @@ -1188,6 +1196,9 @@ namespace MyCompanyName.MyProjectName.Migrations .HasDefaultValue(false) .HasColumnName("IsDeleted"); + b.Property("JsonWebKeySet") + .HasColumnType("nvarchar(max)"); + b.Property("LastModificationTime") .HasColumnType("datetime2") .HasColumnName("LastModificationTime"); @@ -1214,9 +1225,8 @@ namespace MyCompanyName.MyProjectName.Migrations b.Property("Requirements") .HasColumnType("nvarchar(max)"); - b.Property("Type") - .HasMaxLength(50) - .HasColumnType("nvarchar(50)"); + b.Property("Settings") + .HasColumnType("nvarchar(max)"); b.HasKey("Id"); diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/Migrations/20231115065038_Initial.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/Migrations/20231207053523_Initial.cs similarity index 99% rename from templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/Migrations/20231115065038_Initial.cs rename to templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/Migrations/20231207053523_Initial.cs index bef0c6b97d..a5027f58de 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/Migrations/20231115065038_Initial.cs +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/Migrations/20231207053523_Initial.cs @@ -395,17 +395,20 @@ namespace MyCompanyName.MyProjectName.Migrations columns: table => new { Id = table.Column(type: "uniqueidentifier", nullable: false), + ApplicationType = table.Column(type: "nvarchar(50)", maxLength: 50, nullable: true), ClientId = table.Column(type: "nvarchar(100)", maxLength: 100, nullable: true), ClientSecret = table.Column(type: "nvarchar(max)", nullable: true), + ClientType = table.Column(type: "nvarchar(50)", maxLength: 50, nullable: true), ConsentType = table.Column(type: "nvarchar(50)", maxLength: 50, nullable: true), DisplayName = table.Column(type: "nvarchar(max)", nullable: true), DisplayNames = table.Column(type: "nvarchar(max)", nullable: true), + JsonWebKeySet = table.Column(type: "nvarchar(max)", nullable: true), Permissions = table.Column(type: "nvarchar(max)", nullable: true), PostLogoutRedirectUris = table.Column(type: "nvarchar(max)", nullable: true), Properties = table.Column(type: "nvarchar(max)", nullable: true), RedirectUris = table.Column(type: "nvarchar(max)", nullable: true), Requirements = table.Column(type: "nvarchar(max)", nullable: true), - Type = table.Column(type: "nvarchar(50)", maxLength: 50, nullable: true), + Settings = table.Column(type: "nvarchar(max)", nullable: true), ClientUri = table.Column(type: "nvarchar(max)", nullable: true), LogoUri = table.Column(type: "nvarchar(max)", nullable: true), ExtraProperties = table.Column(type: "nvarchar(max)", nullable: false), diff --git a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/Migrations/MyProjectNameDbContextModelSnapshot.cs b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/Migrations/MyProjectNameDbContextModelSnapshot.cs index 5c670f0bf3..8a0febed15 100644 --- a/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/Migrations/MyProjectNameDbContextModelSnapshot.cs +++ b/templates/app/aspnet-core/src/MyCompanyName.MyProjectName.EntityFrameworkCore/Migrations/MyProjectNameDbContextModelSnapshot.cs @@ -1131,6 +1131,10 @@ namespace MyCompanyName.MyProjectName.Migrations .ValueGeneratedOnAdd() .HasColumnType("uniqueidentifier"); + b.Property("ApplicationType") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + b.Property("ClientId") .HasMaxLength(100) .HasColumnType("nvarchar(100)"); @@ -1138,6 +1142,10 @@ namespace MyCompanyName.MyProjectName.Migrations b.Property("ClientSecret") .HasColumnType("nvarchar(max)"); + b.Property("ClientType") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + b.Property("ClientUri") .HasColumnType("nvarchar(max)"); @@ -1185,6 +1193,9 @@ namespace MyCompanyName.MyProjectName.Migrations .HasDefaultValue(false) .HasColumnName("IsDeleted"); + b.Property("JsonWebKeySet") + .HasColumnType("nvarchar(max)"); + b.Property("LastModificationTime") .HasColumnType("datetime2") .HasColumnName("LastModificationTime"); @@ -1211,9 +1222,8 @@ namespace MyCompanyName.MyProjectName.Migrations b.Property("Requirements") .HasColumnType("nvarchar(max)"); - b.Property("Type") - .HasMaxLength(50) - .HasColumnType("nvarchar(50)"); + b.Property("Settings") + .HasColumnType("nvarchar(max)"); b.HasKey("Id"); diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.AuthServer/Migrations/20231115065520_Initial.Designer.cs b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.AuthServer/Migrations/20231207053828_Initial.Designer.cs similarity index 99% rename from templates/module/aspnet-core/host/MyCompanyName.MyProjectName.AuthServer/Migrations/20231115065520_Initial.Designer.cs rename to templates/module/aspnet-core/host/MyCompanyName.MyProjectName.AuthServer/Migrations/20231207053828_Initial.Designer.cs index 27271c1515..389a2a8cc3 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.AuthServer/Migrations/20231115065520_Initial.Designer.cs +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.AuthServer/Migrations/20231207053828_Initial.Designer.cs @@ -13,7 +13,7 @@ using Volo.Abp.EntityFrameworkCore; namespace MyCompanyName.MyProjectName.Migrations { [DbContext(typeof(AuthServerDbContext))] - [Migration("20231115065520_Initial")] + [Migration("20231207053828_Initial")] partial class Initial { /// @@ -1081,6 +1081,10 @@ namespace MyCompanyName.MyProjectName.Migrations .ValueGeneratedOnAdd() .HasColumnType("uniqueidentifier"); + b.Property("ApplicationType") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + b.Property("ClientId") .HasMaxLength(100) .HasColumnType("nvarchar(100)"); @@ -1088,6 +1092,10 @@ namespace MyCompanyName.MyProjectName.Migrations b.Property("ClientSecret") .HasColumnType("nvarchar(max)"); + b.Property("ClientType") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + b.Property("ClientUri") .HasColumnType("nvarchar(max)"); @@ -1135,6 +1143,9 @@ namespace MyCompanyName.MyProjectName.Migrations .HasDefaultValue(false) .HasColumnName("IsDeleted"); + b.Property("JsonWebKeySet") + .HasColumnType("nvarchar(max)"); + b.Property("LastModificationTime") .HasColumnType("datetime2") .HasColumnName("LastModificationTime"); @@ -1161,9 +1172,8 @@ namespace MyCompanyName.MyProjectName.Migrations b.Property("Requirements") .HasColumnType("nvarchar(max)"); - b.Property("Type") - .HasMaxLength(50) - .HasColumnType("nvarchar(50)"); + b.Property("Settings") + .HasColumnType("nvarchar(max)"); b.HasKey("Id"); diff --git a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Server/Migrations/20231115065250_Initial.cs b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.AuthServer/Migrations/20231207053828_Initial.cs similarity index 99% rename from templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Server/Migrations/20231115065250_Initial.cs rename to templates/module/aspnet-core/host/MyCompanyName.MyProjectName.AuthServer/Migrations/20231207053828_Initial.cs index 193fa0b299..7a0019fbf6 100644 --- a/templates/app-nolayers/aspnet-core/MyCompanyName.MyProjectName.Blazor.WebAssembly/Server/Migrations/20231115065250_Initial.cs +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.AuthServer/Migrations/20231207053828_Initial.cs @@ -374,17 +374,20 @@ namespace MyCompanyName.MyProjectName.Migrations columns: table => new { Id = table.Column(type: "uniqueidentifier", nullable: false), + ApplicationType = table.Column(type: "nvarchar(50)", maxLength: 50, nullable: true), ClientId = table.Column(type: "nvarchar(100)", maxLength: 100, nullable: true), ClientSecret = table.Column(type: "nvarchar(max)", nullable: true), + ClientType = table.Column(type: "nvarchar(50)", maxLength: 50, nullable: true), ConsentType = table.Column(type: "nvarchar(50)", maxLength: 50, nullable: true), DisplayName = table.Column(type: "nvarchar(max)", nullable: true), DisplayNames = table.Column(type: "nvarchar(max)", nullable: true), + JsonWebKeySet = table.Column(type: "nvarchar(max)", nullable: true), Permissions = table.Column(type: "nvarchar(max)", nullable: true), PostLogoutRedirectUris = table.Column(type: "nvarchar(max)", nullable: true), Properties = table.Column(type: "nvarchar(max)", nullable: true), RedirectUris = table.Column(type: "nvarchar(max)", nullable: true), Requirements = table.Column(type: "nvarchar(max)", nullable: true), - Type = table.Column(type: "nvarchar(50)", maxLength: 50, nullable: true), + Settings = table.Column(type: "nvarchar(max)", nullable: true), ClientUri = table.Column(type: "nvarchar(max)", nullable: true), LogoUri = table.Column(type: "nvarchar(max)", nullable: true), ExtraProperties = table.Column(type: "nvarchar(max)", nullable: false), diff --git a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.AuthServer/Migrations/AuthServerDbContextModelSnapshot.cs b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.AuthServer/Migrations/AuthServerDbContextModelSnapshot.cs index 49d4b8b408..c63e7d13e1 100644 --- a/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.AuthServer/Migrations/AuthServerDbContextModelSnapshot.cs +++ b/templates/module/aspnet-core/host/MyCompanyName.MyProjectName.AuthServer/Migrations/AuthServerDbContextModelSnapshot.cs @@ -1078,6 +1078,10 @@ namespace MyCompanyName.MyProjectName.Migrations .ValueGeneratedOnAdd() .HasColumnType("uniqueidentifier"); + b.Property("ApplicationType") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + b.Property("ClientId") .HasMaxLength(100) .HasColumnType("nvarchar(100)"); @@ -1085,6 +1089,10 @@ namespace MyCompanyName.MyProjectName.Migrations b.Property("ClientSecret") .HasColumnType("nvarchar(max)"); + b.Property("ClientType") + .HasMaxLength(50) + .HasColumnType("nvarchar(50)"); + b.Property("ClientUri") .HasColumnType("nvarchar(max)"); @@ -1132,6 +1140,9 @@ namespace MyCompanyName.MyProjectName.Migrations .HasDefaultValue(false) .HasColumnName("IsDeleted"); + b.Property("JsonWebKeySet") + .HasColumnType("nvarchar(max)"); + b.Property("LastModificationTime") .HasColumnType("datetime2") .HasColumnName("LastModificationTime"); @@ -1158,9 +1169,8 @@ namespace MyCompanyName.MyProjectName.Migrations b.Property("Requirements") .HasColumnType("nvarchar(max)"); - b.Property("Type") - .HasMaxLength(50) - .HasColumnType("nvarchar(50)"); + b.Property("Settings") + .HasColumnType("nvarchar(max)"); b.HasKey("Id"); From 294547132947633a56c8fca184f9b9fc3420c512 Mon Sep 17 00:00:00 2001 From: maliming Date: Thu, 7 Dec 2023 16:16:29 +0800 Subject: [PATCH 7/8] Add `virtual` keyword to all methods in OpenIddict. --- ...oveClaimsFromClientCredentialsGrantType.cs | 2 +- .../Abp/OpenIddict/Scopes/AttachScopes.cs | 2 +- .../AbpOpenIddictApplicationStore.cs | 54 +++++++++---------- .../AbpOpenIddictAuthorizationCache.cs | 16 +++--- 4 files changed, 37 insertions(+), 37 deletions(-) diff --git a/modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/RemoveClaimsFromClientCredentialsGrantType.cs b/modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/RemoveClaimsFromClientCredentialsGrantType.cs index 8ac866283b..08fdddbaa9 100644 --- a/modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/RemoveClaimsFromClientCredentialsGrantType.cs +++ b/modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/RemoveClaimsFromClientCredentialsGrantType.cs @@ -14,7 +14,7 @@ public class RemoveClaimsFromClientCredentialsGrantType : IOpenIddictServerHandl .SetType(OpenIddictServerHandlerType.Custom) .Build(); - public ValueTask HandleAsync(OpenIddictServerEvents.ProcessSignInContext context) + public virtual ValueTask HandleAsync(OpenIddictServerEvents.ProcessSignInContext context) { if (context.Request.IsClientCredentialsGrantType()) { diff --git a/modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/Scopes/AttachScopes.cs b/modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/Scopes/AttachScopes.cs index 75401ada2b..d3636b6b1a 100644 --- a/modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/Scopes/AttachScopes.cs +++ b/modules/openiddict/src/Volo.Abp.OpenIddict.AspNetCore/Volo/Abp/OpenIddict/Scopes/AttachScopes.cs @@ -21,7 +21,7 @@ public class AttachScopes : IOpenIddictServerHandler CountAsync(CancellationToken cancellationToken) + public virtual async ValueTask CountAsync(CancellationToken cancellationToken) { return await Repository.GetCountAsync(cancellationToken); } - public ValueTask CountAsync(Func, IQueryable> query, CancellationToken cancellationToken) + public virtual ValueTask CountAsync(Func, IQueryable> query, CancellationToken cancellationToken) { throw new NotSupportedException(); } - public async ValueTask CreateAsync(OpenIddictApplicationModel application, CancellationToken cancellationToken) + public virtual async ValueTask CreateAsync(OpenIddictApplicationModel application, CancellationToken cancellationToken) { Check.NotNull(application, nameof(application)); @@ -53,7 +53,7 @@ public class AbpOpenIddictApplicationStore : AbpOpenIddictStoreBase FindByIdAsync(string identifier, CancellationToken cancellationToken) + public virtual async ValueTask FindByIdAsync(string identifier, CancellationToken cancellationToken) { Check.NotNullOrEmpty(identifier, nameof(identifier)); return (await Repository.FindAsync(ConvertIdentifierFromString(identifier), cancellationToken: cancellationToken)).ToModel(); } - public async ValueTask FindByClientIdAsync(string identifier, CancellationToken cancellationToken) + public virtual async ValueTask FindByClientIdAsync(string identifier, CancellationToken cancellationToken) { Check.NotNullOrEmpty(identifier, nameof(identifier)); return (await Repository.FindByClientIdAsync(identifier, cancellationToken: cancellationToken)).ToModel(); } - public async IAsyncEnumerable FindByPostLogoutRedirectUriAsync(string uris, [EnumeratorCancellation] CancellationToken cancellationToken) + public virtual async IAsyncEnumerable FindByPostLogoutRedirectUriAsync(string uris, [EnumeratorCancellation] CancellationToken cancellationToken) { Check.NotNullOrEmpty(uris, nameof(uris)); @@ -106,7 +106,7 @@ public class AbpOpenIddictApplicationStore : AbpOpenIddictStoreBase FindByRedirectUriAsync(string uri, [EnumeratorCancellation] CancellationToken cancellationToken) + public virtual async IAsyncEnumerable FindByRedirectUriAsync(string uri, [EnumeratorCancellation] CancellationToken cancellationToken) { Check.NotNullOrEmpty(uri, nameof(uri)); @@ -121,53 +121,53 @@ public class AbpOpenIddictApplicationStore : AbpOpenIddictStoreBase GetApplicationTypeAsync(OpenIddictApplicationModel application, CancellationToken cancellationToken) + public virtual ValueTask GetApplicationTypeAsync(OpenIddictApplicationModel application, CancellationToken cancellationToken) { Check.NotNull(application, nameof(application)); return new ValueTask(application.ApplicationType); } - public ValueTask GetAsync(Func, TState, IQueryable> query, TState state, CancellationToken cancellationToken) + public virtual ValueTask GetAsync(Func, TState, IQueryable> query, TState state, CancellationToken cancellationToken) { throw new NotSupportedException(); } - public ValueTask GetClientIdAsync(OpenIddictApplicationModel application, CancellationToken cancellationToken) + public virtual ValueTask GetClientIdAsync(OpenIddictApplicationModel application, CancellationToken cancellationToken) { Check.NotNull(application, nameof(application)); return new ValueTask(application.ClientId); } - public ValueTask GetClientSecretAsync(OpenIddictApplicationModel application, CancellationToken cancellationToken) + public virtual ValueTask GetClientSecretAsync(OpenIddictApplicationModel application, CancellationToken cancellationToken) { Check.NotNull(application, nameof(application)); return new ValueTask(application.ClientSecret); } - public ValueTask GetClientTypeAsync(OpenIddictApplicationModel application, CancellationToken cancellationToken) + public virtual ValueTask GetClientTypeAsync(OpenIddictApplicationModel application, CancellationToken cancellationToken) { Check.NotNull(application, nameof(application)); return new ValueTask(application.ClientType); } - public ValueTask GetConsentTypeAsync(OpenIddictApplicationModel application, CancellationToken cancellationToken) + public virtual ValueTask GetConsentTypeAsync(OpenIddictApplicationModel application, CancellationToken cancellationToken) { Check.NotNull(application, nameof(application)); return new ValueTask(application.ConsentType); } - public ValueTask GetDisplayNameAsync(OpenIddictApplicationModel application, CancellationToken cancellationToken) + public virtual ValueTask GetDisplayNameAsync(OpenIddictApplicationModel application, CancellationToken cancellationToken) { Check.NotNull(application, nameof(application)); return new ValueTask(application.DisplayName); } - public ValueTask> GetDisplayNamesAsync(OpenIddictApplicationModel application, CancellationToken cancellationToken) + public virtual ValueTask> GetDisplayNamesAsync(OpenIddictApplicationModel application, CancellationToken cancellationToken) { Check.NotNull(application, nameof(application)); @@ -195,21 +195,21 @@ public class AbpOpenIddictApplicationStore : AbpOpenIddictStoreBase GetIdAsync(OpenIddictApplicationModel application, CancellationToken cancellationToken) + public virtual ValueTask GetIdAsync(OpenIddictApplicationModel application, CancellationToken cancellationToken) { Check.NotNull(application, nameof(application)); return new ValueTask(ConvertIdentifierToString(application.Id)); } - public ValueTask GetJsonWebKeySetAsync(OpenIddictApplicationModel application, CancellationToken cancellationToken) + public virtual ValueTask GetJsonWebKeySetAsync(OpenIddictApplicationModel application, CancellationToken cancellationToken) { Check.NotNull(application, nameof(application)); return new ValueTask(application.JsonWebKeySet); } - public ValueTask> GetPermissionsAsync(OpenIddictApplicationModel application, CancellationToken cancellationToken) + public virtual ValueTask> GetPermissionsAsync(OpenIddictApplicationModel application, CancellationToken cancellationToken) { Check.NotNull(application, nameof(application)); @@ -237,7 +237,7 @@ public class AbpOpenIddictApplicationStore : AbpOpenIddictStoreBase> GetPostLogoutRedirectUrisAsync(OpenIddictApplicationModel application, CancellationToken cancellationToken) + public virtual ValueTask> GetPostLogoutRedirectUrisAsync(OpenIddictApplicationModel application, CancellationToken cancellationToken) { Check.NotNull(application, nameof(application)); @@ -265,7 +265,7 @@ public class AbpOpenIddictApplicationStore : AbpOpenIddictStoreBase> GetPropertiesAsync(OpenIddictApplicationModel application, CancellationToken cancellationToken) + public virtual ValueTask> GetPropertiesAsync(OpenIddictApplicationModel application, CancellationToken cancellationToken) { Check.NotNull(application, nameof(application)); @@ -286,7 +286,7 @@ public class AbpOpenIddictApplicationStore : AbpOpenIddictStoreBase> GetRedirectUrisAsync(OpenIddictApplicationModel application, CancellationToken cancellationToken) + public virtual ValueTask> GetRedirectUrisAsync(OpenIddictApplicationModel application, CancellationToken cancellationToken) { Check.NotNull(application, nameof(application)); @@ -314,7 +314,7 @@ public class AbpOpenIddictApplicationStore : AbpOpenIddictStoreBase> GetRequirementsAsync(OpenIddictApplicationModel application, CancellationToken cancellationToken) + public virtual ValueTask> GetRequirementsAsync(OpenIddictApplicationModel application, CancellationToken cancellationToken) { Check.NotNull(application, nameof(application)); @@ -342,7 +342,7 @@ public class AbpOpenIddictApplicationStore : AbpOpenIddictStoreBase> GetSettingsAsync(OpenIddictApplicationModel application, CancellationToken cancellationToken) + public virtual ValueTask> GetSettingsAsync(OpenIddictApplicationModel application, CancellationToken cancellationToken) { Check.NotNull(application, nameof(application)); @@ -370,7 +370,7 @@ public class AbpOpenIddictApplicationStore : AbpOpenIddictStoreBase InstantiateAsync(CancellationToken cancellationToken) + public virtual ValueTask InstantiateAsync(CancellationToken cancellationToken) { return new ValueTask(new OpenIddictApplicationModel { @@ -378,7 +378,7 @@ public class AbpOpenIddictApplicationStore : AbpOpenIddictStoreBase ListAsync(int? count, int? offset, [EnumeratorCancellation] CancellationToken cancellationToken) + public virtual async IAsyncEnumerable ListAsync(int? count, int? offset, [EnumeratorCancellation] CancellationToken cancellationToken) { var applications = await Repository.ListAsync(count, offset, cancellationToken); foreach (var application in applications) @@ -387,7 +387,7 @@ public class AbpOpenIddictApplicationStore : AbpOpenIddictStoreBase ListAsync(Func, TState, IQueryable> query, TState state, CancellationToken cancellationToken) + public virtual IAsyncEnumerable ListAsync(Func, TState, IQueryable> query, TState state, CancellationToken cancellationToken) { throw new NotSupportedException(); } diff --git a/modules/openiddict/src/Volo.Abp.OpenIddict.Domain/Volo/Abp/OpenIddict/Authorizations/AbpOpenIddictAuthorizationCache.cs b/modules/openiddict/src/Volo.Abp.OpenIddict.Domain/Volo/Abp/OpenIddict/Authorizations/AbpOpenIddictAuthorizationCache.cs index 95c1a59526..5149d26c75 100644 --- a/modules/openiddict/src/Volo.Abp.OpenIddict.Domain/Volo/Abp/OpenIddict/Authorizations/AbpOpenIddictAuthorizationCache.cs +++ b/modules/openiddict/src/Volo.Abp.OpenIddict.Domain/Volo/Abp/OpenIddict/Authorizations/AbpOpenIddictAuthorizationCache.cs @@ -21,7 +21,7 @@ public class AbpOpenIddictAuthorizationCache : AbpOpenIddictCacheBase FindAsync(string subject, string client, [EnumeratorCancellation] CancellationToken cancellationToken) + public virtual async IAsyncEnumerable FindAsync(string subject, string client, [EnumeratorCancellation] CancellationToken cancellationToken) { Check.NotNullOrEmpty(subject, nameof(subject)); Check.NotNullOrEmpty(client, nameof(client)); @@ -52,7 +52,7 @@ public class AbpOpenIddictAuthorizationCache : AbpOpenIddictCacheBase FindAsync(string subject, string client, string status, [EnumeratorCancellation] CancellationToken cancellationToken) + public virtual async IAsyncEnumerable FindAsync(string subject, string client, string status, [EnumeratorCancellation] CancellationToken cancellationToken) { Check.NotNullOrEmpty(subject, nameof(subject)); Check.NotNullOrEmpty(client, nameof(client)); @@ -75,7 +75,7 @@ public class AbpOpenIddictAuthorizationCache : AbpOpenIddictCacheBase FindAsync(string subject, string client, string status, string type, [EnumeratorCancellation] CancellationToken cancellationToken) + public virtual async IAsyncEnumerable FindAsync(string subject, string client, string status, string type, [EnumeratorCancellation] CancellationToken cancellationToken) { Check.NotNullOrEmpty(subject, nameof(subject)); Check.NotNullOrEmpty(client, nameof(client)); @@ -99,7 +99,7 @@ public class AbpOpenIddictAuthorizationCache : AbpOpenIddictCacheBase FindAsync(string subject, string client, string status, string type, ImmutableArray scopes, [EnumeratorCancellation] CancellationToken cancellationToken) + public virtual async IAsyncEnumerable FindAsync(string subject, string client, string status, string type, ImmutableArray scopes, [EnumeratorCancellation] CancellationToken cancellationToken) { Check.NotNullOrEmpty(subject, nameof(subject)); Check.NotNullOrEmpty(client, nameof(client)); @@ -114,7 +114,7 @@ public class AbpOpenIddictAuthorizationCache : AbpOpenIddictCacheBase FindByApplicationIdAsync(string applicationId, [EnumeratorCancellation] CancellationToken cancellationToken) + public virtual async IAsyncEnumerable FindByApplicationIdAsync(string applicationId, [EnumeratorCancellation] CancellationToken cancellationToken) { Check.NotNullOrEmpty(applicationId, nameof(applicationId)); @@ -135,7 +135,7 @@ public class AbpOpenIddictAuthorizationCache : AbpOpenIddictCacheBase FindByIdAsync(string id, CancellationToken cancellationToken) + public virtual async ValueTask FindByIdAsync(string id, CancellationToken cancellationToken) { Check.NotNullOrEmpty(id, nameof(id)); @@ -143,7 +143,7 @@ public class AbpOpenIddictAuthorizationCache : AbpOpenIddictCacheBase await Store.FindByIdAsync(id, cancellationToken), token: cancellationToken); } - public async IAsyncEnumerable FindBySubjectAsync(string subject, [EnumeratorCancellation] CancellationToken cancellationToken) + public virtual async IAsyncEnumerable FindBySubjectAsync(string subject, [EnumeratorCancellation] CancellationToken cancellationToken) { Check.NotNullOrEmpty(subject, nameof(subject)); From e2a0cd4a37b08710db10b2af4efb6323b5f430bd Mon Sep 17 00:00:00 2001 From: maliming Date: Fri, 15 Dec 2023 09:00:06 +0800 Subject: [PATCH 8/8] Upgrade OpenIddict to 5.0.0-rc1. --- Directory.Packages.props | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Directory.Packages.props b/Directory.Packages.props index f8865d9906..6957d06804 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -113,11 +113,11 @@ - - - - - + + + + +