committed by
GitHub
795 changed files with 706125 additions and 688318 deletions
@ -1,360 +1,367 @@ |
|||
<Project> |
|||
<PropertyGroup> |
|||
<DotNetCoreCAPPackageVersion>8.3.5</DotNetCoreCAPPackageVersion> |
|||
<ElsaPackageVersion>2.15.2</ElsaPackageVersion> |
|||
<ElsaNextPackageVersion>3.3.5</ElsaNextPackageVersion> |
|||
<VoloAbpPackageVersion>9.3.6</VoloAbpPackageVersion> |
|||
<LINGYUNAbpPackageVersion>9.3.6</LINGYUNAbpPackageVersion> |
|||
<MicrosoftExtensionsPackageVersion>9.0.5</MicrosoftExtensionsPackageVersion> |
|||
<MicrosoftAspNetCorePackageVersion>9.0.5</MicrosoftAspNetCorePackageVersion> |
|||
<MicrosoftEntityFrameworkCorePackageVersion>9.0.5</MicrosoftEntityFrameworkCorePackageVersion> |
|||
<AspirePackageVersion>13.1.0</AspirePackageVersion> |
|||
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally> |
|||
</PropertyGroup> |
|||
<!-- Abp Framework --> |
|||
<ItemGroup> |
|||
<PackageVersion Include="Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonXLite" Version="4.3.6" /> |
|||
<PackageVersion Include="Volo.Abp.Core" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.Account.Application" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.Account.Application.Contracts" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.Account.Domain" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.Account.Domain.Shared" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.Account.EntityFrameworkCore" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.Account.HttpApi" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.Account.HttpApi.Client" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.Account.Web" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.Account.Web.IdentityServer" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.Account.Web.OpenIddict" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.AspNetCore" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.AspNetCore.Authentication.JwtBearer" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.AspNetCore.MultiTenancy" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.AspNetCore.Mvc" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.AspNetCore.Mvc.Client.Common" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.AspNetCore.Mvc.Contracts" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.AspNetCore.Mvc.NewtonsoftJson" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.AspNetCore.Mvc.UI.MultiTenancy" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.AspNetCore.Serilog" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.AspNetCore.SignalR" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.AspNetCore.TestBase" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.Auditing" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.Auditing.Contracts" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.AuditLogging.Domain.Shared" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.AuditLogging.EntityFrameworkCore" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.Authorization" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.Authorization.Abstractions" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.Autofac" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.AutoMapper" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.BackgroundJobs" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.BackgroundJobs.Abstractions" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.BackgroundWorkers" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.BlobStoring" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.BlobStoring.FileSystem" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.BlobStoring.Minio" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.Caching" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.Caching.StackExchangeRedis" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.Cli.Core" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.Data" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.Dapper" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.Ddd.Application" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.Ddd.Application.Contracts" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.Ddd.Domain" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.Ddd.Domain.Shared" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.DistributedLocking.Abstractions" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.DistributedLocking" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.EntityFrameworkCore" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.EntityFrameworkCore.MySQL" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.EntityFrameworkCore.MySQL.Pomelo" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.EntityFrameworkCore.SqlServer" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.EntityFrameworkCore.PostgreSql" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.Features" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.FeatureManagement.Application" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.FeatureManagement.Application.Contracts" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.FeatureManagement.Domain" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.FeatureManagement.Domain.Shared" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.FeatureManagement.EntityFrameworkCore" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.FeatureManagement.HttpApi" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.FeatureManagement.Web" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.Emailing" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.EventBus" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.EventBus.Abstractions" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.ExceptionHandling" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.Guids" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.Gdpr.Abstractions" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.GlobalFeatures" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.HangFire" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.Http.Client" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.Http.Client.IdentityModel.Web" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.Identity.AspNetCore" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.Identity.Application" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.Identity.Application.Contracts" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.Identity.Domain" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.Identity.Domain.Shared" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.Identity.EntityFrameworkCore" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.Identity.HttpApi" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.Identity.HttpApi.Client" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.Identity.Web" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.IdentityServer.Application" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.IdentityServer.Application.Contracts" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.IdentityServer.Domain" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.IdentityServer.Domain.Shared" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.IdentityServer.EntityFrameworkCore" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.IdentityServer.HttpApi" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.Imaging.Abstractions" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.Imaging.ImageSharp" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.Json" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.Json.Abstractions" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.Localization" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.MailKit" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.MultiTenancy" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.MultiTenancy.Abstractions" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.ObjectExtending" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.OpenIddict.Application" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.OpenIddict.Application.Contracts" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.OpenIddict.AspNetCore" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.OpenIddict.Domain" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.OpenIddict.Domain.Shared" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.OpenIddict.EntityFrameworkCore" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.OpenIddict.HttpApi" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.PermissionManagement.Application" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.PermissionManagement.Application.Contracts" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.PermissionManagement.Domain" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.PermissionManagement.Domain.Identity" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.PermissionManagement.Domain.IdentityServer" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.PermissionManagement.Domain.OpenIddict" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.PermissionManagement.Domain.Shared" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.PermissionManagement.EntityFrameworkCore" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.PermissionManagement.HttpApi" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.PermissionManagement.Web" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.Quartz" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.Security" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.Settings" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.SettingManagement.Application" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.SettingManagement.Application.Contracts" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.SettingManagement.Domain" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.SettingManagement.Domain.Shared" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.SettingManagement.EntityFrameworkCore" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.SettingManagement.HttpApi" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.SettingManagement.Web" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.Swashbuckle" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.Sms" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.TestBase" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.TextTemplating.Core" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.TextTemplating.Scriban" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.Timing" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.Threading" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.UI.Navigation" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.Users.Abstractions" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.Users.Domain.Shared" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.Validation" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.VirtualFileSystem" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.VirtualFileExplorer.Web" Version="$(VoloAbpPackageVersion)" /> |
|||
</ItemGroup> |
|||
<!-- .NET --> |
|||
<ItemGroup> |
|||
<PackageVersion Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="$(MicrosoftAspNetCorePackageVersion)" /> |
|||
<PackageVersion Include="Microsoft.AspNetCore.Authentication.OpenIdConnect" Version="$(MicrosoftAspNetCorePackageVersion)" /> |
|||
<PackageVersion Include="Microsoft.AspNetCore.DataProtection.StackExchangeRedis" Version="$(MicrosoftAspNetCorePackageVersion)" /> |
|||
<PackageVersion Include="Microsoft.AspNetCore.SignalR.Protocols.Json" Version="$(MicrosoftAspNetCorePackageVersion)" /> |
|||
<PackageVersion Include="Microsoft.AspNetCore.SignalR.StackExchangeRedis" Version="$(MicrosoftAspNetCorePackageVersion)" /> |
|||
<PackageVersion Include="Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation" Version="$(MicrosoftAspNetCorePackageVersion)" /> |
|||
<PackageVersion Include="Microsoft.Bcl.AsyncInterfaces" Version="9.0.5" /> |
|||
<PackageVersion Include="Microsoft.CSharp" Version="4.7.0" /> |
|||
<PackageVersion Include="Microsoft.EntityFrameworkCore.Design" Version="$(MicrosoftEntityFrameworkCorePackageVersion)" /> |
|||
<PackageVersion Include="Microsoft.EntityFrameworkCore.InMemory" Version="$(MicrosoftEntityFrameworkCorePackageVersion)" /> |
|||
<PackageVersion Include="Microsoft.EntityFrameworkCore.Tools" Version="$(MicrosoftEntityFrameworkCorePackageVersion)" /> |
|||
<PackageVersion Include="Microsoft.EntityFrameworkCore.Relational" Version="$(MicrosoftEntityFrameworkCorePackageVersion)" /> |
|||
<PackageVersion Include="Microsoft.Extensions.Caching.Memory" Version="$(MicrosoftExtensionsPackageVersion)" /> |
|||
<PackageVersion Include="Microsoft.Extensions.Configuration.UserSecrets" Version="$(MicrosoftExtensionsPackageVersion)" /> |
|||
<PackageVersion Include="Microsoft.Extensions.Configuration.Binder" Version="$(MicrosoftExtensionsPackageVersion)" /> |
|||
<PackageVersion Include="Microsoft.Extensions.FileProviders.Embedded" Version="$(MicrosoftExtensionsPackageVersion)" /> |
|||
<PackageVersion Include="Microsoft.Extensions.FileProviders.Physical" Version="$(MicrosoftExtensionsPackageVersion)" /> |
|||
<PackageVersion Include="Microsoft.Extensions.Http" Version="$(MicrosoftExtensionsPackageVersion)" /> |
|||
<PackageVersion Include="Microsoft.Extensions.Http.Polly" Version="$(MicrosoftExtensionsPackageVersion)" /> |
|||
<PackageVersion Include="Microsoft.Extensions.Http.Resilience" Version="$(MicrosoftExtensionsPackageVersion)" /> |
|||
<PackageVersion Include="Microsoft.Extensions.Hosting" Version="$(MicrosoftExtensionsPackageVersion)" /> |
|||
<PackageVersion Include="Microsoft.Extensions.Options" Version="$(MicrosoftExtensionsPackageVersion)" /> |
|||
<PackageVersion Include="Microsoft.Extensions.ServiceDiscovery" Version="$(MicrosoftExtensionsPackageVersion)" /> |
|||
<PackageVersion Include="Microsoft.CodeAnalysis.Common" Version="4.5.0" /> |
|||
<PackageVersion Include="Microsoft.CodeAnalysis.CSharp" Version="4.5.0" /> |
|||
<PackageVersion Include="MySql.EntityFrameworkCore" Version="9.0.6" /> |
|||
<PackageVersion Include="Pomelo.EntityFrameworkCore.MySql" Version="9.0.0" /> |
|||
<PackageVersion Include="Pomelo.EntityFrameworkCore.MySql.Json.Microsoft" Version="9.0.0" /> |
|||
</ItemGroup> |
|||
<!-- Aspire --> |
|||
<ItemGroup> |
|||
<PackageVersion Include="Aspire.Hosting.Elasticsearch" Version="13.0.0" /> |
|||
<PackageVersion Include="Aspire.Hosting.JavaScript" Version="$(AspirePackageVersion)" /> |
|||
<PackageVersion Include="Aspire.Hosting.MySql" Version="$(AspirePackageVersion)" /> |
|||
<PackageVersion Include="Aspire.Hosting.PostgreSQL" Version="$(AspirePackageVersion)" /> |
|||
<PackageVersion Include="Aspire.Hosting.RabbitMQ" Version="$(AspirePackageVersion)" /> |
|||
<PackageVersion Include="Aspire.Hosting.Redis" Version="$(AspirePackageVersion)" /> |
|||
<PackageVersion Include="Aspire.MySqlConnector" Version="$(AspirePackageVersion)" /> |
|||
<PackageVersion Include="Aspire.Pomelo.EntityFrameworkCore.MySql" Version="$(AspirePackageVersion)" /> |
|||
<PackageVersion Include="Aspire.StackExchange.Redis" Version="$(AspirePackageVersion)" /> |
|||
<PackageVersion Include="Aspire.RabbitMQ.Client" Version="$(AspirePackageVersion)" /> |
|||
<PackageVersion Include="Aspire.Elastic.Clients.Elasticsearch" Version="13.0.0" /> |
|||
</ItemGroup> |
|||
<!-- Elsa --> |
|||
<ItemGroup> |
|||
<PackageVersion Include="Elsa" Version="$(ElsaPackageVersion)" /> |
|||
<PackageVersion Include="Elsa.Activities.Email" Version="$(ElsaPackageVersion)" /> |
|||
<PackageVersion Include="Elsa.Activities.Http" Version="$(ElsaPackageVersion)" /> |
|||
<PackageVersion Include="Elsa.Activities.UserTask" Version="$(ElsaPackageVersion)" /> |
|||
<PackageVersion Include="Elsa.Activities.Temporal.Quartz" Version="$(ElsaPackageVersion)" /> |
|||
<PackageVersion Include="Elsa.Core" Version="$(ElsaPackageVersion)" /> |
|||
<PackageVersion Include="Elsa.Designer.Components.Web" Version="$(ElsaPackageVersion)" /> |
|||
<PackageVersion Include="Elsa.Rebus.RabbitMq" Version="$(ElsaPackageVersion)" /> |
|||
<PackageVersion Include="Elsa.Server.Api" Version="$(ElsaPackageVersion)" /> |
|||
<PackageVersion Include="Elsa.Server.Authentication" Version="$(ElsaPackageVersion)" /> |
|||
<PackageVersion Include="Elsa.Webhooks.Api" Version="$(ElsaPackageVersion)" /> |
|||
<PackageVersion Include="Elsa.Webhooks.Persistence.EntityFramework.Core" Version="$(ElsaPackageVersion)" /> |
|||
<PackageVersion Include="Elsa.WorkflowSettings.Persistence.EntityFramework.Core" Version="$(ElsaPackageVersion)" /> |
|||
<PackageVersion Include="Elsa.Webhooks.Persistence.EntityFramework.MySql" Version="$(ElsaPackageVersion)" /> |
|||
<PackageVersion Include="Elsa.WorkflowSettings.Persistence.EntityFramework.MySql" Version="$(ElsaPackageVersion)" /> |
|||
<PackageVersion Include="Elsa.Webhooks.Persistence.EntityFramework.PostgreSql" Version="$(ElsaPackageVersion)" /> |
|||
<PackageVersion Include="Elsa.WorkflowSettings.Persistence.EntityFramework.PostgreSql" Version="$(ElsaPackageVersion)" /> |
|||
<PackageVersion Include="Elsa.Webhooks.Persistence.EntityFramework.SqlServer" Version="$(ElsaPackageVersion)" /> |
|||
<PackageVersion Include="Elsa.WorkflowSettings.Persistence.EntityFramework.SqlServer" Version="$(ElsaPackageVersion)" /> |
|||
</ItemGroup> |
|||
<!-- Elsa Next--> |
|||
<ItemGroup> |
|||
<PackageVersion Include="Elsa.Api.Client" Version="$(ElsaNextPackageVersion)" /> |
|||
<PackageVersion Include="Elsa.Studio" Version="$(ElsaNextPackageVersion)" /> |
|||
<PackageVersion Include="Elsa.Studio.Core.BlazorServer" Version="$(ElsaNextPackageVersion)" /> |
|||
<PackageVersion Include="Elsa.Studio.Login.BlazorServer" Version="$(ElsaNextPackageVersion)" /> |
|||
<PackageVersion Include="Elsa.Studio.Localization.BlazorServer" Version="$(ElsaNextPackageVersion)" /> |
|||
<PackageVersion Include="Elsa.Studio.Core.BlazorWasm" Version="$(ElsaNextPackageVersion)" /> |
|||
<PackageVersion Include="Elsa.Studio.Login.BlazorWasm" Version="$(ElsaNextPackageVersion)" /> |
|||
<PackageVersion Include="Elsa.Studio.Translations" Version="$(ElsaNextPackageVersion)" /> |
|||
<PackageVersion Include="Elsa.Studio.Agents" Version="$(ElsaNextPackageVersion)" /> |
|||
<PackageVersion Include="Microsoft.AspNetCore.Components.WebAssembly" Version="$(MicrosoftAspNetCorePackageVersion)" /> |
|||
<PackageVersion Include="Microsoft.AspNetCore.Components.WebAssembly.DevServer" Version="$(MicrosoftAspNetCorePackageVersion)" /> |
|||
<PackageVersion Include="Microsoft.AspNetCore.Components.WebAssembly.Server" Version="$(MicrosoftAspNetCorePackageVersion)" /> |
|||
</ItemGroup> |
|||
<!-- DotNetCore.CAP --> |
|||
<ItemGroup> |
|||
<PackageVersion Include="DotNetCore.CAP" Version="$(DotNetCoreCAPPackageVersion)" /> |
|||
<PackageVersion Include="DotNetCore.CAP.Dashboard" Version="$(DotNetCoreCAPPackageVersion)" /> |
|||
<PackageVersion Include="DotNetCore.CAP.MySql" Version="$(DotNetCoreCAPPackageVersion)" /> |
|||
<PackageVersion Include="DotNetCore.CAP.SqlServer" Version="$(DotNetCoreCAPPackageVersion)" /> |
|||
<PackageVersion Include="DotNetCore.CAP.PostgreSql" Version="$(DotNetCoreCAPPackageVersion)" /> |
|||
<PackageVersion Include="DotNetCore.CAP.OpenTelemetry" Version="$(DotNetCoreCAPPackageVersion)" /> |
|||
<PackageVersion Include="DotNetCore.CAP.RabbitMQ" Version="$(DotNetCoreCAPPackageVersion)" /> |
|||
<PackageVersion Include="DotNetCore.CAP.InMemoryStorage" Version="$(DotNetCoreCAPPackageVersion)" /> |
|||
<PackageVersion Include="DotNetCore.CAP.RedisStreams" Version="$(DotNetCoreCAPPackageVersion)" /> |
|||
<PackageVersion Include="Savorboard.CAP.InMemoryMessageQueue" Version="$(DotNetCoreCAPPackageVersion)" /> |
|||
</ItemGroup> |
|||
<!-- Serilog --> |
|||
<ItemGroup> |
|||
<PackageVersion Include="Serilog" Version="4.2.0" /> |
|||
<PackageVersion Include="Serilog.AspNetCore" Version="9.0.0" /> |
|||
<PackageVersion Include="Serilog.Enrichers.Environment" Version="3.0.1" /> |
|||
<PackageVersion Include="Serilog.Enrichers.Assembly" Version="2.0.0" /> |
|||
<PackageVersion Include="Serilog.Enrichers.Process" Version="3.0.0" /> |
|||
<PackageVersion Include="Serilog.Enrichers.Thread" Version="4.0.0" /> |
|||
<PackageVersion Include="Serilog.Extensions.Hosting" Version="9.0.0" /> |
|||
<PackageVersion Include="Serilog.Extensions.Logging" Version="9.0.1" /> |
|||
<PackageVersion Include="Serilog.Settings.Configuration" Version="9.0.0" /> |
|||
<PackageVersion Include="Serilog.Sinks.Async" Version="2.1.0" /> |
|||
<PackageVersion Include="Serilog.Sinks.Console" Version="6.0.0" /> |
|||
<PackageVersion Include="Serilog.Sinks.Elasticsearch" Version="9.0.3" /> |
|||
<PackageVersion Include="Serilog.Sinks.File" Version="7.0.0" /> |
|||
<PackageVersion Include="Serilog.Sinks.OpenTelemetry" Version="4.0.0-dev-00313" /> |
|||
</ItemGroup> |
|||
<!-- OpenTelemetry --> |
|||
<ItemGroup> |
|||
<PackageVersion Include="OpenTelemetry.Extensions.Hosting" Version="1.14.0" /> |
|||
<PackageVersion Include="OpenTelemetry.Exporter.Console" Version="1.14.0" /> |
|||
<PackageVersion Include="OpenTelemetry.Exporter.OpenTelemetryProtocol" Version="1.14.0" /> |
|||
<PackageVersion Include="OpenTelemetry.Exporter.Zipkin" Version="1.14.0" /> |
|||
<PackageVersion Include="OpenTelemetry.Instrumentation.AspNetCore" Version="1.14.0" /> |
|||
<PackageVersion Include="OpenTelemetry.Instrumentation.Http" Version="1.14.0" /> |
|||
<PackageVersion Include="OpenTelemetry.Instrumentation.EntityFrameworkCore" Version="1.14.0-beta.2" /> |
|||
<PackageVersion Include="OpenTelemetry.Instrumentation.Quartz" Version="1.14.0-beta.2" /> |
|||
<PackageVersion Include="OpenTelemetry.Instrumentation.Runtime" Version="1.14.0" /> |
|||
<PackageVersion Include="OpenTelemetry.Instrumentation.SqlClient" Version="1.14.0-beta.1" /> |
|||
</ItemGroup> |
|||
<!-- Test --> |
|||
<ItemGroup> |
|||
<PackageVersion Include="coverlet.collector" Version="6.0.4" /> |
|||
<PackageVersion Include="Microsoft.NET.Test.Sdk" Version="17.13.0" /> |
|||
<PackageVersion Include="Moq.AutoMock" Version="3.5.0" /> |
|||
<PackageVersion Include="NSubstitute" Version="5.3.0" /> |
|||
<PackageVersion Include="Shouldly" Version="4.3.0" /> |
|||
<PackageVersion Include="xunit" Version="2.9.3" /> |
|||
<PackageVersion Include="xunit.extensibility.execution" Version="2.9.3" /> |
|||
<PackageVersion Include="xunit.runner.visualstudio" Version="3.0.2" /> |
|||
</ItemGroup> |
|||
<!-- Fody --> |
|||
<ItemGroup> |
|||
<PackageVersion Include="ConfigureAwait.Fody" Version="3.3.2" /> |
|||
<PackageVersion Include="Fody" Version="6.9.2" /> |
|||
</ItemGroup> |
|||
<!-- DataBase --> |
|||
<ItemGroup> |
|||
<PackageVersion Include="MySqlConnector" Version="2.4.0" /> |
|||
<PackageVersion Include="Oracle.ManagedDataAccess.Core" Version="23.6.1" /> |
|||
<PackageVersion Include="Npgsql" Version="9.0.3" /> |
|||
<PackageVersion Include="Microsoft.Data.SqlClient" Version="5.1.6" /> |
|||
<PackageVersion Include="Microsoft.Data.Sqlite.Core" Version="9.0.5" /> |
|||
</ItemGroup> |
|||
<!-- Other --> |
|||
<ItemGroup> |
|||
<PackageVersion Include="AspNet.Security.OAuth.Bilibili" Version="9.4.0" /> |
|||
<PackageVersion Include="AspNet.Security.OAuth.GitHub" Version="9.4.0" /> |
|||
<PackageVersion Include="AspNet.Security.OAuth.QQ" Version="9.4.0" /> |
|||
<PackageVersion Include="AspNet.Security.OAuth.Weixin" Version="9.4.0" /> |
|||
<PackageVersion Include="AspNet.Security.OAuth.WorkWeixin" Version="9.4.0" /> |
|||
<PackageVersion Include="Microsoft.AspNetCore.Authentication.Google" Version="$(MicrosoftAspNetCorePackageVersion)" /> |
|||
<PackageVersion Include="Microsoft.AspNetCore.Authentication.MicrosoftAccount" Version="$(MicrosoftAspNetCorePackageVersion)" /> |
|||
<PackageVersion Include="Microsoft.AspNetCore.Authentication.Twitter" Version="$(MicrosoftAspNetCorePackageVersion)" /> |
|||
<PackageVersion Include="Microsoft.IdentityModel.Tokens" Version="8.12.0" /> |
|||
<PackageVersion Include="aliyun-net-sdk-core" Version="1.5.10" /> |
|||
<PackageVersion Include="Aliyun.OSS.SDK.NetCore" Version="2.14.1" /> |
|||
<PackageVersion Include="AgileConfig.Client" Version="1.6.9" /> |
|||
<PackageVersion Include="CommonMark.NET" Version="0.15.1" /> |
|||
<PackageVersion Include="Elastic.Apm.NetCoreAll" Version="1.31.0" /> |
|||
<PackageVersion Include="BouncyCastle.Cryptography" Version="2.5.0" /> |
|||
<PackageVersion Include="Dapr.Client" Version="1.15.4" /> |
|||
<PackageVersion Include="Dapr.Actors" Version="1.15.4" /> |
|||
<PackageVersion Include="Dapr.Actors.AspNetCore" Version="1.15.4" /> |
|||
<PackageVersion Include="DistributedLock.Core" Version="1.0.8" /> |
|||
<PackageVersion Include="DistributedLock.Redis" Version="1.0.3" /> |
|||
<PackageVersion Include="Hangfire.MySqlStorage" Version="2.0.3" /> |
|||
<PackageVersion Include="HangFire.SqlServer" Version="1.8.18" /> |
|||
<PackageVersion Include="IdentityModel" Version="7.0.0" /> |
|||
<PackageVersion Include="IP2Region.Net" Version="2.0.2" /> |
|||
<PackageVersion Include="JetBrains.Annotations" Version="2024.3.0" /> |
|||
<PackageVersion Include="Magicodes.IE.Excel" Version="2.7.5.2" /> |
|||
<PackageVersion Include="Markdig" Version="0.34.0" /> |
|||
<PackageVersion Include="MiniExcel" Version="1.34.2" /> |
|||
<PackageVersion Include="Newtonsoft.Json" Version="13.0.3" /> |
|||
<PackageVersion Include="NEST" Version="7.17.5" /> |
|||
<PackageVersion Include="NRules" Version="0.9.2" /> |
|||
<PackageVersion Include="Ocelot.Provider.Polly" Version="20.0.0" /> |
|||
<PackageVersion Include="OpenIddict.Server.DataProtection" Version="6.4.0" /> |
|||
<PackageVersion Include="OpenIddict.Validation.DataProtection" Version="6.4.0" /> |
|||
<PackageVersion Include="Polly" Version="8.5.2" /> |
|||
<PackageVersion Include="QRCoder" Version="1.5.1" /> |
|||
<PackageVersion Include="Quartz.Serialization.Json" Version="3.14.0" /> |
|||
<PackageVersion Include="Rebus.RabbitMq" Version="10.0.1" /> |
|||
<PackageVersion Include="RulesEngine" Version="5.0.5" /> |
|||
<PackageVersion Include="Scriban" Version="6.2.1" /> |
|||
<PackageVersion Include="Senparc.Weixin.MP" Version="16.18.9" /> |
|||
<PackageVersion Include="SkyApm.Agent.Hosting" Version="2.2.0" /> |
|||
<PackageVersion Include="SkyApm.Diagnostics.AspNetCore" Version="2.2.0" /> |
|||
<PackageVersion Include="SkyAPM.Diagnostics.CAP" Version="2.2.0" /> |
|||
<PackageVersion Include="SixLabors.ImageSharp" Version="3.1.8" /> |
|||
<PackageVersion Include="SixLabors.ImageSharp.Drawing" Version="2.1.6" /> |
|||
<PackageVersion Include="StackExchange.Redis" Version="2.8.31" /> |
|||
<PackageVersion Include="Spire.XLS" Version="15.5.1" /> |
|||
<PackageVersion Include="Swashbuckle.AspNetCore" Version="8.1.1" /> |
|||
<PackageVersion Include="System.ComponentModel.Annotations" Version="5.0.0" /> |
|||
<PackageVersion Include="Tencent.QCloud.Cos.Sdk" Version="5.4.37" /> |
|||
<PackageVersion Include="TencentCloudSDK" Version="3.0.712" /> |
|||
<PackageVersion Include="Yarp.ReverseProxy" Version="2.1.0" /> |
|||
<PackageVersion Include="Yarp.Telemetry.Consumption" Version="2.1.0" /> |
|||
</ItemGroup> |
|||
</Project> |
|||
<PropertyGroup> |
|||
<DotNetCoreCAPPackageVersion>10.0.0</DotNetCoreCAPPackageVersion> |
|||
<ElsaPackageVersion>2.15.2</ElsaPackageVersion> |
|||
<ElsaNextPackageVersion>3.3.5</ElsaNextPackageVersion> |
|||
<VoloAbpPackageVersion>10.0.2</VoloAbpPackageVersion> |
|||
<LINGYUNAbpPackageVersion>10.0.2</LINGYUNAbpPackageVersion> |
|||
<MicrosoftExtensionsPackageVersion>10.0.0</MicrosoftExtensionsPackageVersion> |
|||
<MicrosoftAspNetCorePackageVersion>10.0.0</MicrosoftAspNetCorePackageVersion> |
|||
<MicrosoftEntityFrameworkCorePackageVersion>10.0.0</MicrosoftEntityFrameworkCorePackageVersion> |
|||
<AspirePackageVersion>13.1.0</AspirePackageVersion> |
|||
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally> |
|||
</PropertyGroup> |
|||
<!-- Abp Framework --> |
|||
<ItemGroup> |
|||
<PackageVersion Include="Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonXLite" Version="5.0.2" /> |
|||
<PackageVersion Include="Volo.Abp.Core" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.Account.Application" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.Account.Application.Contracts" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.Account.Domain" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.Account.Domain.Shared" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.Account.EntityFrameworkCore" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.Account.HttpApi" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.Account.HttpApi.Client" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.Account.Web" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.Account.Web.IdentityServer" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.Account.Web.OpenIddict" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.AspNetCore" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.AspNetCore.Authentication.JwtBearer" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.AspNetCore.MultiTenancy" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.AspNetCore.Mvc" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.AspNetCore.Mvc.Client.Common" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.AspNetCore.Mvc.Contracts" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.AspNetCore.Mvc.NewtonsoftJson" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.AspNetCore.Mvc.UI.MultiTenancy" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.AspNetCore.Mvc.UI.Theme.Basic" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.AspNetCore.Serilog" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.AspNetCore.SignalR" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.AspNetCore.TestBase" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.Auditing" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.Auditing.Contracts" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.AuditLogging.Domain.Shared" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.AuditLogging.EntityFrameworkCore" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.Authorization" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.Authorization.Abstractions" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.Autofac" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.AutoMapper" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.BackgroundJobs" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.BackgroundJobs.Abstractions" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.BackgroundWorkers" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.BlobStoring" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.BlobStoring.FileSystem" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.BlobStoring.Minio" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.Caching" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.Caching.StackExchangeRedis" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.Cli.Core" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.Data" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.Dapper" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.Ddd.Application" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.Ddd.Application.Contracts" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.Ddd.Domain" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.Ddd.Domain.Shared" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.DistributedLocking.Abstractions" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.DistributedLocking" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.EntityFrameworkCore" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.EntityFrameworkCore.MySQL" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.EntityFrameworkCore.MySQL.Pomelo" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.EntityFrameworkCore.SqlServer" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.EntityFrameworkCore.PostgreSql" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.Features" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.FeatureManagement.Application" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.FeatureManagement.Application.Contracts" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.FeatureManagement.Domain" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.FeatureManagement.Domain.Shared" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.FeatureManagement.EntityFrameworkCore" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.FeatureManagement.HttpApi" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.FeatureManagement.Web" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.Emailing" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.EventBus" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.EventBus.Abstractions" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.ExceptionHandling" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.Guids" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.Gdpr.Abstractions" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.GlobalFeatures" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.HangFire" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.Http.Client" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.Http.Client.IdentityModel.Web" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.Identity.AspNetCore" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.Identity.Application" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.Identity.Application.Contracts" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.Identity.Domain" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.Identity.Domain.Shared" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.Identity.EntityFrameworkCore" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.Identity.HttpApi" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.Identity.HttpApi.Client" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.Identity.Web" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.IdentityServer.Application" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.IdentityServer.Application.Contracts" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.IdentityServer.Domain" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.IdentityServer.Domain.Shared" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.IdentityServer.EntityFrameworkCore" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.IdentityServer.HttpApi" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.Imaging.Abstractions" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.Imaging.ImageSharp" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.Json" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.Json.Abstractions" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.Localization" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.MailKit" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.Mapperly" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.MultiTenancy" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.MultiTenancy.Abstractions" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.ObjectExtending" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.OpenIddict.Application" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.OpenIddict.Application.Contracts" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.OpenIddict.AspNetCore" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.OpenIddict.Domain" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.OpenIddict.Domain.Shared" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.OpenIddict.EntityFrameworkCore" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.OpenIddict.HttpApi" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.PermissionManagement.Application" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.PermissionManagement.Application.Contracts" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.PermissionManagement.Domain" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.PermissionManagement.Domain.Identity" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.PermissionManagement.Domain.IdentityServer" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.PermissionManagement.Domain.OpenIddict" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.PermissionManagement.Domain.Shared" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.PermissionManagement.EntityFrameworkCore" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.PermissionManagement.HttpApi" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.PermissionManagement.Web" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.Quartz" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.Security" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.Settings" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.SettingManagement.Application" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.SettingManagement.Application.Contracts" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.SettingManagement.Domain" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.SettingManagement.Domain.Shared" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.SettingManagement.EntityFrameworkCore" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.SettingManagement.HttpApi" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.SettingManagement.Web" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.Swashbuckle" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.Sms" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.TestBase" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.TextTemplating.Core" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.TextTemplating.Scriban" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.Timing" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.Threading" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.UI.Navigation" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.Users.Abstractions" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.Users.Domain.Shared" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.Validation" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.VirtualFileSystem" Version="$(VoloAbpPackageVersion)" /> |
|||
<PackageVersion Include="Volo.Abp.VirtualFileExplorer.Web" Version="$(VoloAbpPackageVersion)" /> |
|||
</ItemGroup> |
|||
<!-- .NET --> |
|||
<ItemGroup> |
|||
<PackageVersion Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="$(MicrosoftAspNetCorePackageVersion)" /> |
|||
<PackageVersion Include="Microsoft.AspNetCore.Authentication.OpenIdConnect" Version="$(MicrosoftAspNetCorePackageVersion)" /> |
|||
<PackageVersion Include="Microsoft.AspNetCore.DataProtection.StackExchangeRedis" Version="$(MicrosoftAspNetCorePackageVersion)" /> |
|||
<PackageVersion Include="Microsoft.AspNetCore.SignalR.Protocols.Json" Version="$(MicrosoftAspNetCorePackageVersion)" /> |
|||
<PackageVersion Include="Microsoft.AspNetCore.SignalR.StackExchangeRedis" Version="$(MicrosoftAspNetCorePackageVersion)" /> |
|||
<PackageVersion Include="Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation" Version="$(MicrosoftAspNetCorePackageVersion)" /> |
|||
<PackageVersion Include="Microsoft.Bcl.AsyncInterfaces" Version="10.0.0" /> |
|||
<PackageVersion Include="Microsoft.CSharp" Version="4.7.0" /> |
|||
<PackageVersion Include="Microsoft.EntityFrameworkCore.Design" Version="$(MicrosoftEntityFrameworkCorePackageVersion)" /> |
|||
<PackageVersion Include="Microsoft.EntityFrameworkCore.InMemory" Version="$(MicrosoftEntityFrameworkCorePackageVersion)" /> |
|||
<PackageVersion Include="Microsoft.EntityFrameworkCore.Tools" Version="$(MicrosoftEntityFrameworkCorePackageVersion)" /> |
|||
<PackageVersion Include="Microsoft.EntityFrameworkCore.Relational" Version="$(MicrosoftEntityFrameworkCorePackageVersion)" /> |
|||
<PackageVersion Include="Microsoft.Extensions.Caching.Memory" Version="$(MicrosoftExtensionsPackageVersion)" /> |
|||
<PackageVersion Include="Microsoft.Extensions.Configuration.UserSecrets" Version="$(MicrosoftExtensionsPackageVersion)" /> |
|||
<PackageVersion Include="Microsoft.Extensions.Configuration.Binder" Version="$(MicrosoftExtensionsPackageVersion)" /> |
|||
<PackageVersion Include="Microsoft.Extensions.FileProviders.Embedded" Version="$(MicrosoftExtensionsPackageVersion)" /> |
|||
<PackageVersion Include="Microsoft.Extensions.FileProviders.Physical" Version="$(MicrosoftExtensionsPackageVersion)" /> |
|||
<PackageVersion Include="Microsoft.Extensions.Http" Version="$(MicrosoftExtensionsPackageVersion)" /> |
|||
<PackageVersion Include="Microsoft.Extensions.Http.Polly" Version="$(MicrosoftExtensionsPackageVersion)" /> |
|||
<PackageVersion Include="Microsoft.Extensions.Http.Resilience" Version="$(MicrosoftExtensionsPackageVersion)" /> |
|||
<PackageVersion Include="Microsoft.Extensions.Hosting" Version="$(MicrosoftExtensionsPackageVersion)" /> |
|||
<PackageVersion Include="Microsoft.Extensions.Options" Version="$(MicrosoftExtensionsPackageVersion)" /> |
|||
<PackageVersion Include="Microsoft.Extensions.ServiceDiscovery" Version="$(MicrosoftExtensionsPackageVersion)" /> |
|||
<PackageVersion Include="Microsoft.CodeAnalysis.Common" Version="4.5.0" /> |
|||
<PackageVersion Include="Microsoft.CodeAnalysis.CSharp" Version="4.5.0" /> |
|||
<PackageVersion Include="MySql.EntityFrameworkCore" Version="10.0.0-rc" /> |
|||
<PackageVersion Include="Pomelo.EntityFrameworkCore.MySql" Version="9.0.0" /> |
|||
<PackageVersion Include="Pomelo.EntityFrameworkCore.MySql.Json.Microsoft" Version="9.0.0" /> |
|||
</ItemGroup> |
|||
<!-- Aspire --> |
|||
<ItemGroup> |
|||
<PackageVersion Include="Aspire.Hosting.Elasticsearch" Version="13.0.0" /> |
|||
<PackageVersion Include="Aspire.Hosting.JavaScript" Version="$(AspirePackageVersion)" /> |
|||
<PackageVersion Include="Aspire.Hosting.MySql" Version="$(AspirePackageVersion)" /> |
|||
<PackageVersion Include="Aspire.Hosting.PostgreSQL" Version="$(AspirePackageVersion)" /> |
|||
<PackageVersion Include="Aspire.Hosting.RabbitMQ" Version="$(AspirePackageVersion)" /> |
|||
<PackageVersion Include="Aspire.Hosting.Redis" Version="$(AspirePackageVersion)" /> |
|||
<PackageVersion Include="Aspire.MySqlConnector" Version="$(AspirePackageVersion)" /> |
|||
<PackageVersion Include="Aspire.Pomelo.EntityFrameworkCore.MySql" Version="$(AspirePackageVersion)" /> |
|||
<PackageVersion Include="Aspire.StackExchange.Redis" Version="$(AspirePackageVersion)" /> |
|||
<PackageVersion Include="Aspire.RabbitMQ.Client" Version="$(AspirePackageVersion)" /> |
|||
<PackageVersion Include="Aspire.Elastic.Clients.Elasticsearch" Version="13.0.0" /> |
|||
</ItemGroup> |
|||
<!-- Elsa --> |
|||
<ItemGroup> |
|||
<PackageVersion Include="Elsa" Version="$(ElsaPackageVersion)" /> |
|||
<PackageVersion Include="Elsa.Activities.Email" Version="$(ElsaPackageVersion)" /> |
|||
<PackageVersion Include="Elsa.Activities.Http" Version="$(ElsaPackageVersion)" /> |
|||
<PackageVersion Include="Elsa.Activities.UserTask" Version="$(ElsaPackageVersion)" /> |
|||
<PackageVersion Include="Elsa.Activities.Temporal.Quartz" Version="$(ElsaPackageVersion)" /> |
|||
<PackageVersion Include="Elsa.Core" Version="$(ElsaPackageVersion)" /> |
|||
<PackageVersion Include="Elsa.Designer.Components.Web" Version="$(ElsaPackageVersion)" /> |
|||
<PackageVersion Include="Elsa.Rebus.RabbitMq" Version="$(ElsaPackageVersion)" /> |
|||
<PackageVersion Include="Elsa.Server.Api" Version="$(ElsaPackageVersion)" /> |
|||
<PackageVersion Include="Elsa.Server.Authentication" Version="$(ElsaPackageVersion)" /> |
|||
<PackageVersion Include="Elsa.Webhooks.Api" Version="$(ElsaPackageVersion)" /> |
|||
<PackageVersion Include="Elsa.Webhooks.Persistence.EntityFramework.Core" Version="$(ElsaPackageVersion)" /> |
|||
<PackageVersion Include="Elsa.WorkflowSettings.Persistence.EntityFramework.Core" Version="$(ElsaPackageVersion)" /> |
|||
<PackageVersion Include="Elsa.Webhooks.Persistence.EntityFramework.MySql" Version="$(ElsaPackageVersion)" /> |
|||
<PackageVersion Include="Elsa.WorkflowSettings.Persistence.EntityFramework.MySql" Version="$(ElsaPackageVersion)" /> |
|||
<PackageVersion Include="Elsa.Webhooks.Persistence.EntityFramework.PostgreSql" Version="$(ElsaPackageVersion)" /> |
|||
<PackageVersion Include="Elsa.WorkflowSettings.Persistence.EntityFramework.PostgreSql" Version="$(ElsaPackageVersion)" /> |
|||
<PackageVersion Include="Elsa.Webhooks.Persistence.EntityFramework.SqlServer" Version="$(ElsaPackageVersion)" /> |
|||
<PackageVersion Include="Elsa.WorkflowSettings.Persistence.EntityFramework.SqlServer" Version="$(ElsaPackageVersion)" /> |
|||
</ItemGroup> |
|||
<!-- Elsa Next--> |
|||
<ItemGroup> |
|||
<PackageVersion Include="Elsa.Api.Client" Version="$(ElsaNextPackageVersion)" /> |
|||
<PackageVersion Include="Elsa.Studio" Version="$(ElsaNextPackageVersion)" /> |
|||
<PackageVersion Include="Elsa.Studio.Core.BlazorServer" Version="$(ElsaNextPackageVersion)" /> |
|||
<PackageVersion Include="Elsa.Studio.Login.BlazorServer" Version="$(ElsaNextPackageVersion)" /> |
|||
<PackageVersion Include="Elsa.Studio.Localization.BlazorServer" Version="$(ElsaNextPackageVersion)" /> |
|||
<PackageVersion Include="Elsa.Studio.Core.BlazorWasm" Version="$(ElsaNextPackageVersion)" /> |
|||
<PackageVersion Include="Elsa.Studio.Login.BlazorWasm" Version="$(ElsaNextPackageVersion)" /> |
|||
<PackageVersion Include="Elsa.Studio.Translations" Version="$(ElsaNextPackageVersion)" /> |
|||
<PackageVersion Include="Elsa.Studio.Agents" Version="$(ElsaNextPackageVersion)" /> |
|||
<PackageVersion Include="Microsoft.AspNetCore.Components.WebAssembly" Version="$(MicrosoftAspNetCorePackageVersion)" /> |
|||
<PackageVersion Include="Microsoft.AspNetCore.Components.WebAssembly.DevServer" Version="$(MicrosoftAspNetCorePackageVersion)" /> |
|||
<PackageVersion Include="Microsoft.AspNetCore.Components.WebAssembly.Server" Version="$(MicrosoftAspNetCorePackageVersion)" /> |
|||
</ItemGroup> |
|||
<!-- DotNetCore.CAP --> |
|||
<ItemGroup> |
|||
<PackageVersion Include="DotNetCore.CAP" Version="$(DotNetCoreCAPPackageVersion)" /> |
|||
<PackageVersion Include="DotNetCore.CAP.Dashboard" Version="$(DotNetCoreCAPPackageVersion)" /> |
|||
<PackageVersion Include="DotNetCore.CAP.MySql" Version="$(DotNetCoreCAPPackageVersion)" /> |
|||
<PackageVersion Include="DotNetCore.CAP.SqlServer" Version="$(DotNetCoreCAPPackageVersion)" /> |
|||
<PackageVersion Include="DotNetCore.CAP.PostgreSql" Version="$(DotNetCoreCAPPackageVersion)" /> |
|||
<PackageVersion Include="DotNetCore.CAP.OpenTelemetry" Version="$(DotNetCoreCAPPackageVersion)" /> |
|||
<PackageVersion Include="DotNetCore.CAP.RabbitMQ" Version="$(DotNetCoreCAPPackageVersion)" /> |
|||
<PackageVersion Include="DotNetCore.CAP.InMemoryStorage" Version="$(DotNetCoreCAPPackageVersion)" /> |
|||
<PackageVersion Include="DotNetCore.CAP.RedisStreams" Version="$(DotNetCoreCAPPackageVersion)" /> |
|||
<PackageVersion Include="Savorboard.CAP.InMemoryMessageQueue" Version="$(DotNetCoreCAPPackageVersion)" /> |
|||
</ItemGroup> |
|||
<!-- Serilog --> |
|||
<ItemGroup> |
|||
<PackageVersion Include="Serilog" Version="4.3.0" /> |
|||
<PackageVersion Include="Serilog.AspNetCore" Version="9.0.0" /> |
|||
<PackageVersion Include="Serilog.Enrichers.Environment" Version="3.0.1" /> |
|||
<PackageVersion Include="Serilog.Enrichers.Assembly" Version="2.0.0" /> |
|||
<PackageVersion Include="Serilog.Enrichers.Process" Version="3.0.0" /> |
|||
<PackageVersion Include="Serilog.Enrichers.Thread" Version="4.0.0" /> |
|||
<PackageVersion Include="Serilog.Extensions.Hosting" Version="9.0.0" /> |
|||
<PackageVersion Include="Serilog.Extensions.Logging" Version="9.0.1" /> |
|||
<PackageVersion Include="Serilog.Settings.Configuration" Version="9.0.0" /> |
|||
<PackageVersion Include="Serilog.Sinks.Async" Version="2.1.0" /> |
|||
<PackageVersion Include="Serilog.Sinks.Console" Version="6.0.0" /> |
|||
<PackageVersion Include="Serilog.Sinks.Elasticsearch" Version="9.0.3" /> |
|||
<PackageVersion Include="Serilog.Sinks.File" Version="7.0.0" /> |
|||
<PackageVersion Include="Serilog.Sinks.OpenTelemetry" Version="4.0.0-dev-00313" /> |
|||
</ItemGroup> |
|||
<!-- OpenTelemetry --> |
|||
<ItemGroup> |
|||
<PackageVersion Include="OpenTelemetry.Extensions.Hosting" Version="1.14.0" /> |
|||
<PackageVersion Include="OpenTelemetry.Exporter.Console" Version="1.14.0" /> |
|||
<PackageVersion Include="OpenTelemetry.Exporter.OpenTelemetryProtocol" Version="1.14.0" /> |
|||
<PackageVersion Include="OpenTelemetry.Exporter.Zipkin" Version="1.14.0" /> |
|||
<PackageVersion Include="OpenTelemetry.Instrumentation.AspNetCore" Version="1.14.0" /> |
|||
<PackageVersion Include="OpenTelemetry.Instrumentation.Http" Version="1.14.0" /> |
|||
<PackageVersion Include="OpenTelemetry.Instrumentation.EntityFrameworkCore" Version="1.14.0-beta.2" /> |
|||
<PackageVersion Include="OpenTelemetry.Instrumentation.Quartz" Version="1.14.0-beta.2" /> |
|||
<PackageVersion Include="OpenTelemetry.Instrumentation.Runtime" Version="1.14.0" /> |
|||
<PackageVersion Include="OpenTelemetry.Instrumentation.SqlClient" Version="1.14.0-beta.1" /> |
|||
</ItemGroup> |
|||
<!-- Rebus--> |
|||
<ItemGroup> |
|||
<PackageVersion Include="Rebus.Microsoft.Extensions.Logging" Version="5.2.0" /> |
|||
<PackageVersion Include="Rebus.ServiceProvider" Version="10.7.1" /> |
|||
</ItemGroup> |
|||
<!-- Test --> |
|||
<ItemGroup> |
|||
<PackageVersion Include="coverlet.collector" Version="6.0.4" /> |
|||
<PackageVersion Include="Microsoft.NET.Test.Sdk" Version="17.14.1" /> |
|||
<PackageVersion Include="Moq.AutoMock" Version="3.5.0" /> |
|||
<PackageVersion Include="NSubstitute" Version="5.3.0" /> |
|||
<PackageVersion Include="Shouldly" Version="4.3.0" /> |
|||
<PackageVersion Include="xunit" Version="2.9.3" /> |
|||
<PackageVersion Include="xunit.extensibility.execution" Version="2.9.3" /> |
|||
<PackageVersion Include="xunit.runner.visualstudio" Version="3.1.4" /> |
|||
</ItemGroup> |
|||
<!-- Fody --> |
|||
<ItemGroup> |
|||
<PackageVersion Include="ConfigureAwait.Fody" Version="3.3.2" /> |
|||
<PackageVersion Include="Fody" Version="6.9.3" /> |
|||
</ItemGroup> |
|||
<!-- DataBase --> |
|||
<ItemGroup> |
|||
<PackageVersion Include="MySqlConnector" Version="2.4.0" /> |
|||
<PackageVersion Include="Oracle.ManagedDataAccess.Core" Version="23.6.1" /> |
|||
<PackageVersion Include="Npgsql" Version="10.0.0" /> |
|||
<PackageVersion Include="Microsoft.Data.SqlClient" Version="6.1.1" /> |
|||
<PackageVersion Include="Microsoft.Data.Sqlite.Core" Version="10.0.0" /> |
|||
</ItemGroup> |
|||
<!-- Other --> |
|||
<ItemGroup> |
|||
<PackageVersion Include="AspNet.Security.OAuth.Bilibili" Version="10.0.0" /> |
|||
<PackageVersion Include="AspNet.Security.OAuth.GitHub" Version="10.0.0" /> |
|||
<PackageVersion Include="AspNet.Security.OAuth.QQ" Version="10.0.0" /> |
|||
<PackageVersion Include="AspNet.Security.OAuth.Weixin" Version="10.0.0" /> |
|||
<PackageVersion Include="AspNet.Security.OAuth.WorkWeixin" Version="10.0.0" /> |
|||
<PackageVersion Include="Microsoft.AspNetCore.Authentication.Google" Version="$(MicrosoftAspNetCorePackageVersion)" /> |
|||
<PackageVersion Include="Microsoft.AspNetCore.Authentication.MicrosoftAccount" Version="$(MicrosoftAspNetCorePackageVersion)" /> |
|||
<PackageVersion Include="Microsoft.AspNetCore.Authentication.Twitter" Version="$(MicrosoftAspNetCorePackageVersion)" /> |
|||
<PackageVersion Include="Microsoft.IdentityModel.Tokens" Version="8.14.0" /> |
|||
<PackageVersion Include="aliyun-net-sdk-core" Version="1.6.2" /> |
|||
<PackageVersion Include="Aliyun.OSS.SDK.NetCore" Version="2.14.1" /> |
|||
<PackageVersion Include="AgileConfig.Client" Version="1.8.0" /> |
|||
<PackageVersion Include="CommonMark.NET" Version="0.15.1" /> |
|||
<PackageVersion Include="Elastic.Apm.NetCoreAll" Version="1.34.1" /> |
|||
<PackageVersion Include="BouncyCastle.Cryptography" Version="2.6.2" /> |
|||
<PackageVersion Include="Dapr.Client" Version="1.16.0" /> |
|||
<PackageVersion Include="Dapr.Actors" Version="1.16.0" /> |
|||
<PackageVersion Include="Dapr.Actors.AspNetCore" Version="1.16.0" /> |
|||
<PackageVersion Include="DistributedLock.Core" Version="1.0.8" /> |
|||
<PackageVersion Include="DistributedLock.Redis" Version="1.1.0" /> |
|||
<PackageVersion Include="Hangfire.MySqlStorage" Version="2.0.3" /> |
|||
<PackageVersion Include="HangFire.SqlServer" Version="1.8.21" /> |
|||
<PackageVersion Include="IdentityModel" Version="7.0.0" /> |
|||
<PackageVersion Include="IP2Region.Net" Version="3.0.0" /> |
|||
<PackageVersion Include="JetBrains.Annotations" Version="2025.2.2" /> |
|||
<PackageVersion Include="Magicodes.IE.Excel" Version="2.8.2" /> |
|||
<PackageVersion Include="Markdig" Version="0.44.0" /> |
|||
<PackageVersion Include="MiniExcel" Version="1.42.0" /> |
|||
<PackageVersion Include="Newtonsoft.Json" Version="13.0.4" /> |
|||
<PackageVersion Include="NEST" Version="7.17.5" /> |
|||
<PackageVersion Include="Elastic.Clients.Elasticsearch" Version="8.19.4" /> |
|||
<PackageVersion Include="NRules" Version="0.9.2" /> |
|||
<PackageVersion Include="Ocelot.Provider.Polly" Version="20.0.0" /> |
|||
<PackageVersion Include="OpenIddict.Server.DataProtection" Version="7.2.0" /> |
|||
<PackageVersion Include="OpenIddict.Validation.DataProtection" Version="7.2.0" /> |
|||
<PackageVersion Include="Polly" Version="8.6.3" /> |
|||
<PackageVersion Include="QRCoder" Version="1.5.1" /> |
|||
<PackageVersion Include="Quartz.Serialization.Json" Version="3.15.0" /> |
|||
<PackageVersion Include="Rebus.RabbitMq" Version="10.0.1" /> |
|||
<PackageVersion Include="RulesEngine" Version="5.0.5" /> |
|||
<PackageVersion Include="Scriban" Version="6.3.0" /> |
|||
<PackageVersion Include="Senparc.Weixin.MP" Version="16.18.9" /> |
|||
<PackageVersion Include="SkyApm.Agent.Hosting" Version="2.2.0" /> |
|||
<PackageVersion Include="SkyApm.Diagnostics.AspNetCore" Version="2.2.0" /> |
|||
<PackageVersion Include="SkyAPM.Diagnostics.CAP" Version="2.2.0" /> |
|||
<PackageVersion Include="SixLabors.ImageSharp" Version="3.1.11" /> |
|||
<PackageVersion Include="SixLabors.ImageSharp.Drawing" Version="2.1.7" /> |
|||
<PackageVersion Include="StackExchange.Redis" Version="2.9.17" /> |
|||
<PackageVersion Include="Spire.XLS" Version="15.12.0" /> |
|||
<PackageVersion Include="Swashbuckle.AspNetCore" Version="9.0.4" /> |
|||
<PackageVersion Include="System.ComponentModel.Annotations" Version="5.0.0" /> |
|||
<PackageVersion Include="Tencent.QCloud.Cos.Sdk" Version="5.4.37" /> |
|||
<PackageVersion Include="TencentCloudSDK" Version="3.0.1273" /> |
|||
<PackageVersion Include="Yarp.ReverseProxy" Version="2.3.0" /> |
|||
<PackageVersion Include="Yarp.Telemetry.Consumption" Version="2.3.0" /> |
|||
</ItemGroup> |
|||
</Project> |
|||
@ -0,0 +1,59 @@ |
|||
using Microsoft.Extensions.Logging; |
|||
using Microsoft.Extensions.Logging.Abstractions; |
|||
using System.Linq; |
|||
using System.Threading.Tasks; |
|||
using Volo.Abp.Authorization.Permissions; |
|||
using Volo.Abp.Data; |
|||
using Volo.Abp.DependencyInjection; |
|||
using Volo.Abp.MultiTenancy; |
|||
using Volo.Abp.PermissionManagement; |
|||
|
|||
namespace LINGYUN.Abp.MicroService.AdminService; |
|||
public class AdminServiceDataSeeder : ITransientDependency |
|||
{ |
|||
protected ILogger<AdminServiceDataSeeder> Logger { get; } |
|||
protected ICurrentTenant CurrentTenant { get; } |
|||
protected IPermissionDefinitionManager PermissionDefinitionManager { get; } |
|||
protected IPermissionDataSeeder PermissionDataSeeder { get; } |
|||
|
|||
public AdminServiceDataSeeder( |
|||
IPermissionDefinitionManager permissionDefinitionManager, |
|||
IPermissionDataSeeder permissionDataSeeder, |
|||
ICurrentTenant currentTenant) |
|||
{ |
|||
PermissionDefinitionManager = permissionDefinitionManager; |
|||
PermissionDataSeeder = permissionDataSeeder; |
|||
CurrentTenant = currentTenant; |
|||
|
|||
Logger = NullLogger<AdminServiceDataSeeder>.Instance; |
|||
} |
|||
|
|||
public virtual async Task SeedAsync(DataSeedContext context) |
|||
{ |
|||
using (CurrentTenant.Change(context.TenantId)) |
|||
{ |
|||
await SeedAdminRolePermissionsAsync(context); |
|||
} |
|||
} |
|||
|
|||
private async Task SeedAdminRolePermissionsAsync(DataSeedContext context) |
|||
{ |
|||
Logger.LogInformation("Seeding the default role permissions..."); |
|||
|
|||
var multiTenancySide = CurrentTenant.GetMultiTenancySide(); |
|||
var permissionNames = (await PermissionDefinitionManager.GetPermissionsAsync()) |
|||
.Where(p => p.MultiTenancySide.HasFlag(multiTenancySide)) |
|||
.Where(p => !p.Providers.Any() || p.Providers.Contains(RolePermissionValueProvider.ProviderName)) |
|||
.Select(p => p.Name) |
|||
.ToArray(); |
|||
|
|||
await PermissionDataSeeder.SeedAsync( |
|||
RolePermissionValueProvider.ProviderName, |
|||
"admin", |
|||
permissionNames, |
|||
context?.TenantId |
|||
); |
|||
|
|||
Logger.LogInformation("Seed default role permissions completed."); |
|||
} |
|||
} |
|||
@ -1,5 +1,34 @@ |
|||
{ |
|||
"ConnectionStrings": { |
|||
"Default": "Host=127.0.0.1;Database=abp;Username=postgres;Password=123456" |
|||
}, |
|||
"OpenIddict": { |
|||
"Applications": { |
|||
"VueAdmin": { |
|||
"ClientId": "vue-admin-client", |
|||
"ClientSecret": "1q2w3e*", |
|||
"RootUrls": [ "http://localhost:5666" ] |
|||
}, |
|||
"InternalService": { |
|||
"ClientId": "InternalServiceClient", |
|||
"ClientSecret": "1q2w3e*" |
|||
}, |
|||
"VueOAuthClient": { |
|||
"ClientId": "vue-oauth-client", |
|||
"RootUrls": [ |
|||
"http://localhost:5666", |
|||
"http://localhost:30000", |
|||
"http://localhost:30010", |
|||
"http://localhost:30015", |
|||
"http://localhost:30020", |
|||
"http://localhost:30025", |
|||
"http://localhost:30030", |
|||
"http://localhost:30040", |
|||
"http://localhost:30045", |
|||
"http://localhost:30050", |
|||
"http://localhost:30060" |
|||
] |
|||
} |
|||
} |
|||
} |
|||
} |
|||
|
|||
@ -0,0 +1,35 @@ |
|||
using LINGYUN.Abp.MicroService.AuthServer.DataSeeds; |
|||
using System.Threading.Tasks; |
|||
using Volo.Abp.Data; |
|||
using Volo.Abp.DependencyInjection; |
|||
using Volo.Abp.MultiTenancy; |
|||
|
|||
namespace LINGYUN.Abp.MicroService.AuthServer; |
|||
public class AuthServerDataSeeder : ITransientDependency |
|||
{ |
|||
protected ICurrentTenant CurrentTenant { get; } |
|||
protected OpenIddictDataSeeder OpenIddictDataSeeder { get; } |
|||
protected IdentityClaimTypeDataSeeder IdentityClaimTypeDataSeeder { get; } |
|||
protected IdentityUserRoleDataSeeder IdentityUserRoleDataSeeder { get; } |
|||
public AuthServerDataSeeder( |
|||
ICurrentTenant currentTenant, |
|||
OpenIddictDataSeeder openIddictDataSeeder, |
|||
IdentityClaimTypeDataSeeder identityClaimTypeDataSeeder, |
|||
IdentityUserRoleDataSeeder identityUserRoleDataSeeder) |
|||
{ |
|||
CurrentTenant = currentTenant; |
|||
OpenIddictDataSeeder = openIddictDataSeeder; |
|||
IdentityClaimTypeDataSeeder = identityClaimTypeDataSeeder; |
|||
IdentityUserRoleDataSeeder = identityUserRoleDataSeeder; |
|||
} |
|||
|
|||
public virtual async Task SeedAsync(DataSeedContext context) |
|||
{ |
|||
using (CurrentTenant.Change(context.TenantId)) |
|||
{ |
|||
await OpenIddictDataSeeder.SeedAsync(context); |
|||
await IdentityClaimTypeDataSeeder.SeedAsync(context); |
|||
await IdentityUserRoleDataSeeder.SeedAsync(context); |
|||
} |
|||
} |
|||
} |
|||
@ -0,0 +1,89 @@ |
|||
using JetBrains.Annotations; |
|||
using Microsoft.Extensions.Logging; |
|||
using OpenIddict.Abstractions; |
|||
using System.Threading.Tasks; |
|||
using Volo.Abp.Data; |
|||
using Volo.Abp.DependencyInjection; |
|||
using Volo.Abp.Guids; |
|||
using Volo.Abp.Identity; |
|||
|
|||
namespace LINGYUN.Abp.MicroService.AuthServer.DataSeeds; |
|||
public class IdentityClaimTypeDataSeeder : ITransientDependency |
|||
{ |
|||
public ILogger<IdentityClaimTypeDataSeeder> Logger { protected get; set; } |
|||
|
|||
protected IGuidGenerator GuidGenerator { get; } |
|||
protected IdentityClaimTypeManager IdentityClaimTypeManager { get; } |
|||
protected IIdentityClaimTypeRepository IdentityClaimTypeRepository { get; } |
|||
public IdentityClaimTypeDataSeeder( |
|||
IGuidGenerator guidGenerator, |
|||
IdentityClaimTypeManager identityClaimTypeManager, |
|||
IIdentityClaimTypeRepository identityClaimTypeRepository) |
|||
{ |
|||
GuidGenerator = guidGenerator; |
|||
IdentityClaimTypeManager = identityClaimTypeManager; |
|||
IdentityClaimTypeRepository = identityClaimTypeRepository; |
|||
} |
|||
|
|||
public async virtual Task SeedAsync(DataSeedContext context) |
|||
{ |
|||
if (context.TenantId.HasValue) |
|||
{ |
|||
return; |
|||
} |
|||
|
|||
Logger.LogInformation("Seeding the default identity claim types..."); |
|||
|
|||
await CreateIdentityClaimTypeAsync(OpenIddictConstants.Claims.Address); |
|||
await CreateIdentityClaimTypeAsync(OpenIddictConstants.Claims.Birthdate, valueType: IdentityClaimValueType.DateTime); |
|||
await CreateIdentityClaimTypeAsync(OpenIddictConstants.Claims.Country); |
|||
await CreateIdentityClaimTypeAsync(OpenIddictConstants.Claims.Email); |
|||
await CreateIdentityClaimTypeAsync(OpenIddictConstants.Claims.EmailVerified, valueType: IdentityClaimValueType.Boolean); |
|||
await CreateIdentityClaimTypeAsync(OpenIddictConstants.Claims.FamilyName); |
|||
await CreateIdentityClaimTypeAsync(OpenIddictConstants.Claims.Gender); |
|||
await CreateIdentityClaimTypeAsync(OpenIddictConstants.Claims.GivenName); |
|||
await CreateIdentityClaimTypeAsync(OpenIddictConstants.Claims.Locale); |
|||
await CreateIdentityClaimTypeAsync(OpenIddictConstants.Claims.Locality); |
|||
await CreateIdentityClaimTypeAsync(OpenIddictConstants.Claims.MiddleName); |
|||
await CreateIdentityClaimTypeAsync(OpenIddictConstants.Claims.Name); |
|||
await CreateIdentityClaimTypeAsync(OpenIddictConstants.Claims.Nickname); |
|||
await CreateIdentityClaimTypeAsync(OpenIddictConstants.Claims.PhoneNumber); |
|||
await CreateIdentityClaimTypeAsync(OpenIddictConstants.Claims.PhoneNumberVerified, valueType: IdentityClaimValueType.Boolean); |
|||
await CreateIdentityClaimTypeAsync(OpenIddictConstants.Claims.Picture); |
|||
await CreateIdentityClaimTypeAsync(OpenIddictConstants.Claims.PostalCode); |
|||
await CreateIdentityClaimTypeAsync(OpenIddictConstants.Claims.PreferredUsername); |
|||
await CreateIdentityClaimTypeAsync(OpenIddictConstants.Claims.Profile); |
|||
await CreateIdentityClaimTypeAsync(OpenIddictConstants.Claims.Region); |
|||
await CreateIdentityClaimTypeAsync(OpenIddictConstants.Claims.Role); |
|||
await CreateIdentityClaimTypeAsync(OpenIddictConstants.Claims.StreetAddress); |
|||
await CreateIdentityClaimTypeAsync(OpenIddictConstants.Claims.Username); |
|||
await CreateIdentityClaimTypeAsync(OpenIddictConstants.Claims.Website); |
|||
await CreateIdentityClaimTypeAsync(OpenIddictConstants.Claims.Zoneinfo); |
|||
|
|||
Logger.LogInformation("Seeding default identity claim types completed."); |
|||
} |
|||
|
|||
private async Task CreateIdentityClaimTypeAsync( |
|||
[NotNull] string name, |
|||
bool required = false, |
|||
bool isStatic = false, |
|||
[CanBeNull] string regex = null, |
|||
[CanBeNull] string regexDescription = null, |
|||
[CanBeNull] string description = null, |
|||
IdentityClaimValueType valueType = IdentityClaimValueType.String) |
|||
{ |
|||
if (!await IdentityClaimTypeRepository.AnyAsync(name)) |
|||
{ |
|||
await IdentityClaimTypeManager.CreateAsync( |
|||
new IdentityClaimType( |
|||
GuidGenerator.Create(), |
|||
name, |
|||
required, |
|||
isStatic, |
|||
regex, |
|||
regexDescription, |
|||
description, |
|||
valueType)); |
|||
} |
|||
} |
|||
} |
|||
@ -0,0 +1,124 @@ |
|||
using Microsoft.AspNetCore.Identity; |
|||
using Microsoft.Extensions.Options; |
|||
using System; |
|||
using System.Threading.Tasks; |
|||
using Volo.Abp.Data; |
|||
using Volo.Abp.DependencyInjection; |
|||
using Volo.Abp.Guids; |
|||
using Volo.Abp.Identity; |
|||
|
|||
namespace LINGYUN.Abp.MicroService.AuthServer.DataSeeds; |
|||
public class IdentityUserRoleDataSeeder : ITransientDependency |
|||
{ |
|||
public const string AdminUserIdPropertyName = "AdminUserId"; |
|||
public const string AdminEmailPropertyName = "AdminEmail"; |
|||
public const string AdminEmailDefaultValue = "admin@abp.io"; |
|||
public const string AdminUserNamePropertyName = "AdminUserName"; |
|||
public const string AdminUserNameDefaultValue = "admin"; |
|||
public const string AdminPasswordPropertyName = "AdminPassword"; |
|||
public const string AdminPasswordDefaultValue = "1q2w3E*"; |
|||
|
|||
protected IGuidGenerator GuidGenerator { get; } |
|||
protected IIdentityRoleRepository RoleRepository { get; } |
|||
protected IIdentityUserRepository UserRepository { get; } |
|||
protected ILookupNormalizer LookupNormalizer { get; } |
|||
protected IdentityUserManager UserManager { get; } |
|||
protected IdentityRoleManager RoleManager { get; } |
|||
protected IOptions<IdentityOptions> IdentityOptions { get; } |
|||
|
|||
public IdentityUserRoleDataSeeder( |
|||
IGuidGenerator guidGenerator, |
|||
IIdentityRoleRepository roleRepository, |
|||
IIdentityUserRepository userRepository, |
|||
ILookupNormalizer lookupNormalizer, |
|||
IdentityUserManager userManager, |
|||
IdentityRoleManager roleManager, |
|||
IOptions<IdentityOptions> identityOptions) |
|||
{ |
|||
GuidGenerator = guidGenerator; |
|||
RoleRepository = roleRepository; |
|||
UserRepository = userRepository; |
|||
LookupNormalizer = lookupNormalizer; |
|||
UserManager = userManager; |
|||
RoleManager = roleManager; |
|||
IdentityOptions = identityOptions; |
|||
} |
|||
|
|||
public virtual async Task SeedAsync(DataSeedContext context) |
|||
{ |
|||
await SeedAdminUserAsync(context); |
|||
await SeedDefaultRoleAsync(context); |
|||
} |
|||
|
|||
private async Task SeedAdminUserAsync(DataSeedContext context) |
|||
{ |
|||
await IdentityOptions.SetAsync(); |
|||
|
|||
const string adminRoleName = "admin"; |
|||
var adminUserName = context?[AdminUserNamePropertyName] as string ?? AdminUserNameDefaultValue; |
|||
|
|||
Guid adminRoleId; |
|||
if (!await RoleManager.RoleExistsAsync(adminRoleName)) |
|||
{ |
|||
adminRoleId = GuidGenerator.Create(); |
|||
var adminRole = new IdentityRole( |
|||
adminRoleId, |
|||
adminRoleName, |
|||
context.TenantId) |
|||
{ |
|||
IsStatic = true, |
|||
IsPublic = true |
|||
}; |
|||
(await RoleManager.CreateAsync(adminRole)).CheckErrors(); |
|||
} |
|||
else |
|||
{ |
|||
var adminRole = await RoleManager.FindByNameAsync(adminRoleName); |
|||
adminRoleId = adminRole.Id; |
|||
} |
|||
|
|||
var adminUserId = GuidGenerator.Create(); |
|||
if (context.Properties.TryGetValue(AdminUserIdPropertyName, out var userIdString) && |
|||
Guid.TryParse(userIdString?.ToString(), out var adminUserGuid)) |
|||
{ |
|||
adminUserId = adminUserGuid; |
|||
} |
|||
var adminEmailAddress = context?[AdminEmailPropertyName] as string ?? AdminEmailDefaultValue; |
|||
var adminPassword = context?[AdminPasswordPropertyName] as string ?? AdminPasswordDefaultValue; |
|||
|
|||
var adminUser = await UserManager.FindByNameAsync(adminUserName); |
|||
if (adminUser == null) |
|||
{ |
|||
adminUser = new IdentityUser( |
|||
adminUserId, |
|||
adminUserName, |
|||
adminEmailAddress, |
|||
context.TenantId); |
|||
|
|||
adminUser.AddRole(adminRoleId); |
|||
|
|||
// 创建租户管理用户
|
|||
(await UserManager.CreateAsync(adminUser)).CheckErrors(); |
|||
(await UserManager.AddPasswordAsync(adminUser, adminPassword)).CheckErrors(); |
|||
} |
|||
} |
|||
|
|||
private async Task SeedDefaultRoleAsync(DataSeedContext context) |
|||
{ |
|||
const string defaultRoleName = "Users"; |
|||
if (await RoleManager.FindByNameAsync(defaultRoleName) != null) |
|||
{ |
|||
var roleId = GuidGenerator.Create(); |
|||
var defaultRole = new IdentityRole( |
|||
roleId, |
|||
defaultRoleName, |
|||
context.TenantId) |
|||
{ |
|||
IsStatic = true, |
|||
IsPublic = true, |
|||
IsDefault = true, |
|||
}; |
|||
(await RoleManager.CreateAsync(defaultRole)).CheckErrors(); |
|||
} |
|||
} |
|||
} |
|||
@ -0,0 +1,551 @@ |
|||
using Microsoft.Extensions.Configuration; |
|||
using Microsoft.Extensions.Logging; |
|||
using Microsoft.Extensions.Logging.Abstractions; |
|||
using OpenIddict.Abstractions; |
|||
using System; |
|||
using System.Collections.Generic; |
|||
using System.Globalization; |
|||
using System.Threading.Tasks; |
|||
using Volo.Abp.Authorization.Permissions; |
|||
using Volo.Abp.Data; |
|||
using Volo.Abp.DependencyInjection; |
|||
using Volo.Abp.OpenIddict; |
|||
using Volo.Abp.OpenIddict.Applications; |
|||
using Volo.Abp.OpenIddict.Scopes; |
|||
using Volo.Abp.PermissionManagement; |
|||
|
|||
namespace LINGYUN.Abp.MicroService.AuthServer.DataSeeds; |
|||
public class OpenIddictDataSeeder : OpenIddictDataSeedContributorBase, ITransientDependency |
|||
{ |
|||
public ILogger<OpenIddictDataSeeder> Logger { protected get; set; } |
|||
protected IPermissionDataSeeder PermissionDataSeeder { get; } |
|||
public OpenIddictDataSeeder( |
|||
IConfiguration configuration, |
|||
IOpenIddictApplicationRepository openIddictApplicationRepository, |
|||
IAbpApplicationManager applicationManager, |
|||
IOpenIddictScopeRepository openIddictScopeRepository, |
|||
IOpenIddictScopeManager scopeManager, |
|||
IPermissionDataSeeder permissionDataSeeder) |
|||
: base(configuration, openIddictApplicationRepository, applicationManager, openIddictScopeRepository, scopeManager) |
|||
{ |
|||
PermissionDataSeeder = permissionDataSeeder; |
|||
|
|||
Logger = NullLogger<OpenIddictDataSeeder>.Instance; |
|||
} |
|||
|
|||
public async virtual Task SeedAsync(DataSeedContext context) |
|||
{ |
|||
if (context.TenantId.HasValue) |
|||
{ |
|||
return; |
|||
} |
|||
var scope = "lingyun-abp-application"; |
|||
|
|||
Logger.LogInformation("Seeding the default scope..."); |
|||
await CreateDefaultScopeAsync(); |
|||
await CreateApiScopeAsync(scope); |
|||
|
|||
Logger.LogInformation("Seeding the default applications..."); |
|||
await CreateApplicationAsync(scope); |
|||
|
|||
Logger.LogInformation("Seeding default applications completed."); |
|||
} |
|||
|
|||
private async Task CreateDefaultScopeAsync() |
|||
{ |
|||
// OpenId Connect
|
|||
await CreateScopesAsync(new OpenIddictScopeDescriptor |
|||
{ |
|||
Name = OpenIddictConstants.Scopes.OpenId, |
|||
DisplayName = "OpenId Connect", |
|||
DisplayNames = |
|||
{ |
|||
[CultureInfo.GetCultureInfo("zh-Hans")] = "身份认证", |
|||
[CultureInfo.GetCultureInfo("en")] = "OpenId Connect" |
|||
}, |
|||
Description = "OpenId Connect协议进行身份验证", |
|||
Descriptions = |
|||
{ |
|||
[CultureInfo.GetCultureInfo("zh-Hans")] = "允许应用程序使用您的身份信息进行登录", |
|||
[CultureInfo.GetCultureInfo("en")] = "Allow the application to authenticate you using OpenID Connect" |
|||
} |
|||
}); |
|||
|
|||
// Profile
|
|||
await CreateScopesAsync(new OpenIddictScopeDescriptor |
|||
{ |
|||
Name = OpenIddictConstants.Scopes.Profile, |
|||
DisplayName = "个人资料", |
|||
DisplayNames = |
|||
{ |
|||
[CultureInfo.GetCultureInfo("zh-Hans")] = "个人资料", |
|||
[CultureInfo.GetCultureInfo("en")] = "Profile" |
|||
}, |
|||
Description = "访问您的基本个人资料信息", |
|||
Descriptions = |
|||
{ |
|||
[CultureInfo.GetCultureInfo("zh-Hans")] = "允许应用程序访问您的姓名、头像等基本信息", |
|||
[CultureInfo.GetCultureInfo("en")] = "Allow the application to access your basic profile information like name and picture" |
|||
} |
|||
}); |
|||
|
|||
// Email
|
|||
await CreateScopesAsync(new OpenIddictScopeDescriptor |
|||
{ |
|||
Name = OpenIddictConstants.Scopes.Email, |
|||
DisplayName = "电子邮件", |
|||
DisplayNames = |
|||
{ |
|||
[CultureInfo.GetCultureInfo("zh-Hans")] = "电子邮件", |
|||
[CultureInfo.GetCultureInfo("en")] = "Email" |
|||
}, |
|||
Description = "访问您的电子邮件地址", |
|||
Descriptions = |
|||
{ |
|||
[CultureInfo.GetCultureInfo("zh-Hans")] = "允许应用程序访问您的电子邮件地址", |
|||
[CultureInfo.GetCultureInfo("en")] = "Allow the application to access your email address" |
|||
} |
|||
}); |
|||
|
|||
// Phone
|
|||
await CreateScopesAsync(new OpenIddictScopeDescriptor |
|||
{ |
|||
Name = OpenIddictConstants.Scopes.Phone, |
|||
DisplayName = "电话号码", |
|||
DisplayNames = |
|||
{ |
|||
[CultureInfo.GetCultureInfo("zh-Hans")] = "电话号码", |
|||
[CultureInfo.GetCultureInfo("en")] = "Phone" |
|||
}, |
|||
Description = "访问您的电话号码", |
|||
Descriptions = |
|||
{ |
|||
[CultureInfo.GetCultureInfo("zh-Hans")] = "允许应用程序访问您的电话号码", |
|||
[CultureInfo.GetCultureInfo("en")] = "Allow the application to access your phone number" |
|||
} |
|||
}); |
|||
|
|||
// Address
|
|||
await CreateScopesAsync(new OpenIddictScopeDescriptor |
|||
{ |
|||
Name = OpenIddictConstants.Scopes.Address, |
|||
DisplayName = "地址信息", |
|||
DisplayNames = |
|||
{ |
|||
[CultureInfo.GetCultureInfo("zh-Hans")] = "地址信息", |
|||
[CultureInfo.GetCultureInfo("en")] = "Address" |
|||
}, |
|||
Description = "访问您的地址信息", |
|||
Descriptions = |
|||
{ |
|||
[CultureInfo.GetCultureInfo("zh-Hans")] = "允许应用程序访问您的地址信息", |
|||
[CultureInfo.GetCultureInfo("en")] = "Allow the application to access your address information" |
|||
} |
|||
}); |
|||
|
|||
// Roles
|
|||
await CreateScopesAsync(new OpenIddictScopeDescriptor |
|||
{ |
|||
Name = OpenIddictConstants.Scopes.Roles, |
|||
DisplayName = "角色信息", |
|||
DisplayNames = |
|||
{ |
|||
[CultureInfo.GetCultureInfo("zh-Hans")] = "角色信息", |
|||
[CultureInfo.GetCultureInfo("en")] = "Roles" |
|||
}, |
|||
Description = "访问您的角色信息", |
|||
Descriptions = |
|||
{ |
|||
[CultureInfo.GetCultureInfo("zh-Hans")] = "允许应用程序访问您的角色和权限信息", |
|||
[CultureInfo.GetCultureInfo("en")] = "Allow the application to access your roles and permissions" |
|||
} |
|||
}); |
|||
|
|||
// OfflineAccess
|
|||
await CreateScopesAsync(new OpenIddictScopeDescriptor |
|||
{ |
|||
Name = OpenIddictConstants.Scopes.OfflineAccess, |
|||
DisplayName = "离线访问", |
|||
DisplayNames = |
|||
{ |
|||
[CultureInfo.GetCultureInfo("zh-Hans")] = "离线访问", |
|||
[CultureInfo.GetCultureInfo("en")] = "Offline Access" |
|||
}, |
|||
Description = "在您未登录时访问您的信息", |
|||
Descriptions = |
|||
{ |
|||
[CultureInfo.GetCultureInfo("zh-Hans")] = "允许应用程序在您未登录时访问您的信息", |
|||
[CultureInfo.GetCultureInfo("en")] = "Allow the application to access your information while you are offline" |
|||
} |
|||
}); |
|||
} |
|||
|
|||
private async Task CreateApiScopeAsync(string scope) |
|||
{ |
|||
// 前端汇总授权范围
|
|||
await CreateScopesAsync(new OpenIddictScopeDescriptor |
|||
{ |
|||
Name = scope, |
|||
DisplayName = "微服务访问授权", |
|||
DisplayNames = |
|||
{ |
|||
[CultureInfo.GetCultureInfo("zh-Hans")] = "微服务访问授权", |
|||
[CultureInfo.GetCultureInfo("en")] = "Single Applications" |
|||
}, |
|||
Description = "适用于微服务体系的接口授权", |
|||
Descriptions = |
|||
{ |
|||
[CultureInfo.GetCultureInfo("zh-Hans")] = "允许应用程序使用各微服务模块的接口", |
|||
[CultureInfo.GetCultureInfo("en")] = "Allow the application to use the interfaces of each microservice module" |
|||
}, |
|||
Resources = |
|||
{ |
|||
"api-gateway", |
|||
"auth-server", |
|||
"admin-service", |
|||
"identity-service", |
|||
"localization-service", |
|||
"message-service", |
|||
"platform-service", |
|||
"task-service", |
|||
"webhook-service", |
|||
"wechat-service", |
|||
"workflow-service", |
|||
} |
|||
}); |
|||
// ApiGateway Swagger
|
|||
await CreateScopesAsync(new OpenIddictScopeDescriptor |
|||
{ |
|||
Name = "api-gateway", |
|||
DisplayName = "Api Gateway", |
|||
DisplayNames = |
|||
{ |
|||
[CultureInfo.GetCultureInfo("zh-Hans")] = "应用程序接口网关", |
|||
[CultureInfo.GetCultureInfo("en")] = "Api Gateway" |
|||
}, |
|||
Description = "适用于应用程序接口网关Swagger授权", |
|||
Descriptions = |
|||
{ |
|||
[CultureInfo.GetCultureInfo("zh-Hans")] = "适用于应用程序接口网关Swagger授权", |
|||
[CultureInfo.GetCultureInfo("en")] = "Applicable to application Programming interface gateway Swagger authorization" |
|||
}, |
|||
Resources = |
|||
{ |
|||
"api-gateway", |
|||
} |
|||
}); |
|||
// Admin Service
|
|||
await CreateScopesAsync(new OpenIddictScopeDescriptor |
|||
{ |
|||
Name = "admin-service", |
|||
DisplayName = "Admin Service", |
|||
DisplayNames = |
|||
{ |
|||
[CultureInfo.GetCultureInfo("zh-Hans")] = "后台管理服务", |
|||
[CultureInfo.GetCultureInfo("en")] = "Admin Service" |
|||
}, |
|||
Description = "适用于后台管理服务Swagger授权", |
|||
Descriptions = |
|||
{ |
|||
[CultureInfo.GetCultureInfo("zh-Hans")] = "适用于后台管理服务Swagger授权", |
|||
[CultureInfo.GetCultureInfo("en")] = "Applicable to the back-end management service Swagger authorization" |
|||
}, |
|||
Resources = |
|||
{ |
|||
"admin-service", |
|||
} |
|||
}); |
|||
// Identity Service
|
|||
await CreateScopesAsync(new OpenIddictScopeDescriptor |
|||
{ |
|||
Name = "identity-service", |
|||
DisplayName = "Identity Service", |
|||
DisplayNames = |
|||
{ |
|||
[CultureInfo.GetCultureInfo("zh-Hans")] = "身份认证服务", |
|||
[CultureInfo.GetCultureInfo("en")] = "Identity Service" |
|||
}, |
|||
Description = "适用于身份认证服务Swagger授权", |
|||
Descriptions = |
|||
{ |
|||
[CultureInfo.GetCultureInfo("zh-Hans")] = "适用于身份认证服务Swagger授权", |
|||
[CultureInfo.GetCultureInfo("en")] = "Applicable to the identity service Swagger authorization" |
|||
}, |
|||
Resources = |
|||
{ |
|||
"identity-service", |
|||
} |
|||
}); |
|||
// Localization Service
|
|||
await CreateScopesAsync(new OpenIddictScopeDescriptor |
|||
{ |
|||
Name = "localization-service", |
|||
DisplayName = "Localization Service", |
|||
DisplayNames = |
|||
{ |
|||
[CultureInfo.GetCultureInfo("zh-Hans")] = "本地化管理服务", |
|||
[CultureInfo.GetCultureInfo("en")] = "Localization Service" |
|||
}, |
|||
Description = "适用于本地化管理服务Swagger授权", |
|||
Descriptions = |
|||
{ |
|||
[CultureInfo.GetCultureInfo("zh-Hans")] = "适用于本地化管理服务Swagger授权", |
|||
[CultureInfo.GetCultureInfo("en")] = "Applicable to the Localization service Swagger authorization" |
|||
}, |
|||
Resources = |
|||
{ |
|||
"localization-service", |
|||
} |
|||
}); |
|||
// Message Service
|
|||
await CreateScopesAsync(new OpenIddictScopeDescriptor |
|||
{ |
|||
Name = "message-service", |
|||
DisplayName = "Message Service", |
|||
DisplayNames = |
|||
{ |
|||
[CultureInfo.GetCultureInfo("zh-Hans")] = "消息管理服务", |
|||
[CultureInfo.GetCultureInfo("en")] = "Message Service" |
|||
}, |
|||
Description = "适用于消息管理服务Swagger授权", |
|||
Descriptions = |
|||
{ |
|||
[CultureInfo.GetCultureInfo("zh-Hans")] = "适用于消息管理服务Swagger授权", |
|||
[CultureInfo.GetCultureInfo("en")] = "Applicable to the Message service Swagger authorization" |
|||
}, |
|||
Resources = |
|||
{ |
|||
"message-service", |
|||
} |
|||
}); |
|||
// Platform Service
|
|||
await CreateScopesAsync(new OpenIddictScopeDescriptor |
|||
{ |
|||
Name = "platform-service", |
|||
DisplayName = "Platform Service", |
|||
DisplayNames = |
|||
{ |
|||
[CultureInfo.GetCultureInfo("zh-Hans")] = "平台管理服务", |
|||
[CultureInfo.GetCultureInfo("en")] = "Platform Service" |
|||
}, |
|||
Description = "适用于平台管理服务Swagger授权", |
|||
Descriptions = |
|||
{ |
|||
[CultureInfo.GetCultureInfo("zh-Hans")] = "适用于平台管理服务Swagger授权", |
|||
[CultureInfo.GetCultureInfo("en")] = "Applicable to the Platform service Swagger authorization" |
|||
}, |
|||
Resources = |
|||
{ |
|||
"platform-service", |
|||
} |
|||
}); |
|||
// Task Service
|
|||
await CreateScopesAsync(new OpenIddictScopeDescriptor |
|||
{ |
|||
Name = "task-service", |
|||
DisplayName = "Task Service", |
|||
DisplayNames = |
|||
{ |
|||
[CultureInfo.GetCultureInfo("zh-Hans")] = "任务管理服务", |
|||
[CultureInfo.GetCultureInfo("en")] = "Task Service" |
|||
}, |
|||
Description = "适用于任务管理服务Swagger授权", |
|||
Descriptions = |
|||
{ |
|||
[CultureInfo.GetCultureInfo("zh-Hans")] = "适用于任务管理服务Swagger授权", |
|||
[CultureInfo.GetCultureInfo("en")] = "Applicable to the Task service Swagger authorization" |
|||
}, |
|||
Resources = |
|||
{ |
|||
"task-service", |
|||
} |
|||
}); |
|||
// Webhook Service
|
|||
await CreateScopesAsync(new OpenIddictScopeDescriptor |
|||
{ |
|||
Name = "webhook-service", |
|||
DisplayName = "Webhook Service", |
|||
DisplayNames = |
|||
{ |
|||
[CultureInfo.GetCultureInfo("zh-Hans")] = "Webhook管理服务", |
|||
[CultureInfo.GetCultureInfo("en")] = "Webhook Service" |
|||
}, |
|||
Description = "适用于Webhook管理服务Swagger授权", |
|||
Descriptions = |
|||
{ |
|||
[CultureInfo.GetCultureInfo("zh-Hans")] = "适用于Webhook管理服务Swagger授权", |
|||
[CultureInfo.GetCultureInfo("en")] = "Applicable to the Webhook service Swagger authorization" |
|||
}, |
|||
Resources = |
|||
{ |
|||
"webhook-service", |
|||
} |
|||
}); |
|||
// Wechat Service
|
|||
await CreateScopesAsync(new OpenIddictScopeDescriptor |
|||
{ |
|||
Name = "wechat-service", |
|||
DisplayName = "Wechat Service", |
|||
DisplayNames = |
|||
{ |
|||
[CultureInfo.GetCultureInfo("zh-Hans")] = "微信管理服务", |
|||
[CultureInfo.GetCultureInfo("en")] = "Wechat Service" |
|||
}, |
|||
Description = "适用于微信管理服务Swagger授权", |
|||
Descriptions = |
|||
{ |
|||
[CultureInfo.GetCultureInfo("zh-Hans")] = "适用于微信管理服务Swagger授权", |
|||
[CultureInfo.GetCultureInfo("en")] = "Applicable to the Wechat service Swagger authorization" |
|||
}, |
|||
Resources = |
|||
{ |
|||
"wechat-service", |
|||
} |
|||
}); |
|||
// Workflow Service
|
|||
await CreateScopesAsync(new OpenIddictScopeDescriptor |
|||
{ |
|||
Name = "workflow-service", |
|||
DisplayName = "Workflow Service", |
|||
DisplayNames = |
|||
{ |
|||
[CultureInfo.GetCultureInfo("zh-Hans")] = "工作流管理服务", |
|||
[CultureInfo.GetCultureInfo("en")] = "Workflow Service" |
|||
}, |
|||
Description = "适用于工作流管理服务Swagger授权", |
|||
Descriptions = |
|||
{ |
|||
[CultureInfo.GetCultureInfo("zh-Hans")] = "适用于工作流管理服务Swagger授权", |
|||
[CultureInfo.GetCultureInfo("en")] = "Applicable to the Workflow service Swagger authorization" |
|||
}, |
|||
Resources = |
|||
{ |
|||
"workflow-service", |
|||
} |
|||
}); |
|||
} |
|||
|
|||
private async Task CreateApplicationAsync(string scope) |
|||
{ |
|||
var configurationSection = Configuration.GetSection("OpenIddict:Applications"); |
|||
var vueClientId = configurationSection["VueAdmin:ClientId"]; |
|||
if (!vueClientId.IsNullOrWhiteSpace()) |
|||
{ |
|||
Logger.LogInformation("Seeding application {vueClientId}...", vueClientId); |
|||
|
|||
var vueClientRootUrls = configurationSection.GetSection("VueAdmin:RootUrls").Get<List<string>>() ?? []; |
|||
|
|||
var vueClientRedirectUrls = new List<string>(); |
|||
var vueClientPostLogoutRedirectUrls = new List<string>(); |
|||
vueClientRootUrls.ForEach(url => |
|||
{ |
|||
vueClientRedirectUrls.Add(url.EnsureEndsWith('/')); |
|||
vueClientRedirectUrls.Add(url.EnsureEndsWith('/') + "signin-callback"); |
|||
|
|||
vueClientPostLogoutRedirectUrls.Add(url.EnsureEndsWith('/')); |
|||
vueClientPostLogoutRedirectUrls.Add(url.EnsureEndsWith('/') + "signout-callback"); |
|||
}); |
|||
|
|||
await CreateOrUpdateApplicationAsync( |
|||
OpenIddictConstants.ApplicationTypes.Web, |
|||
vueClientId, |
|||
OpenIddictConstants.ClientTypes.Confidential, |
|||
OpenIddictConstants.ConsentTypes.Explicit, |
|||
"Abp Vue Admin Client", |
|||
configurationSection["VueAdmin:ClientSecret"] ?? "1q2w3e*", |
|||
[OpenIddictConstants.GrantTypes.AuthorizationCode, |
|||
OpenIddictConstants.GrantTypes.Implicit, |
|||
OpenIddictConstants.GrantTypes.Password, |
|||
OpenIddictConstants.GrantTypes.RefreshToken], |
|||
[OpenIddictConstants.Scopes.OpenId, |
|||
OpenIddictConstants.Scopes.Email, |
|||
OpenIddictConstants.Scopes.Roles, |
|||
OpenIddictConstants.Scopes.Address, |
|||
OpenIddictConstants.Scopes.Phone, |
|||
OpenIddictConstants.Scopes.Profile, |
|||
OpenIddictConstants.Scopes.OfflineAccess, |
|||
scope], |
|||
vueClientRedirectUrls, |
|||
vueClientPostLogoutRedirectUrls); |
|||
|
|||
var vueClientPermissions = new string[1] |
|||
{ |
|||
"AbpIdentity.UserLookup" |
|||
}; |
|||
await PermissionDataSeeder.SeedAsync(ClientPermissionValueProvider.ProviderName, vueClientId, vueClientPermissions); |
|||
} |
|||
|
|||
var internalServiceClientId = configurationSection["InternalService:ClientId"]; |
|||
if (!internalServiceClientId.IsNullOrWhiteSpace()) |
|||
{ |
|||
Logger.LogInformation("Seeding application {internalServiceClientId}...", internalServiceClientId); |
|||
|
|||
await CreateOrUpdateApplicationAsync( |
|||
OpenIddictConstants.ApplicationTypes.Native, |
|||
internalServiceClientId, |
|||
OpenIddictConstants.ClientTypes.Confidential, |
|||
OpenIddictConstants.ConsentTypes.Explicit, |
|||
"Abp Internal Service Client", |
|||
configurationSection["InternalService:ClientSecret"] ?? "1q2w3e*", |
|||
[OpenIddictConstants.GrantTypes.ClientCredentials], |
|||
[OpenIddictConstants.ResponseTypes.Token, scope]); |
|||
} |
|||
|
|||
var oauthClientId = configurationSection["VueOAuthClient:ClientId"]; |
|||
if (!oauthClientId.IsNullOrWhiteSpace()) |
|||
{ |
|||
Logger.LogInformation("Seeding application {oauthClientId}...", oauthClientId); |
|||
|
|||
var oauthClientRootUrls = configurationSection.GetSection("VueOAuthClient:RootUrls").Get<List<string>>() ?? []; |
|||
|
|||
var oauthClientRedirectUrls = new List<string>(); |
|||
var oauthClientPostLogoutRedirectUrls = new List<string>(); |
|||
oauthClientRootUrls.ForEach(url => |
|||
{ |
|||
oauthClientRedirectUrls.Add(url.EnsureEndsWith('/')); |
|||
oauthClientRedirectUrls.Add(url.EnsureEndsWith('/') + "signin-callback"); |
|||
oauthClientRedirectUrls.Add(url.EnsureEndsWith('/') + "swagger/oauth2-redirect.html"); |
|||
|
|||
oauthClientPostLogoutRedirectUrls.Add(url.EnsureEndsWith('/')); |
|||
oauthClientPostLogoutRedirectUrls.Add(url.EnsureEndsWith('/') + "signout-callback"); |
|||
}); |
|||
|
|||
await CreateOrUpdateApplicationAsync( |
|||
OpenIddictConstants.ApplicationTypes.Web, |
|||
oauthClientId, |
|||
OpenIddictConstants.ClientTypes.Public, |
|||
OpenIddictConstants.ConsentTypes.Implicit, |
|||
"Abp OAuth Client", |
|||
null, |
|||
[OpenIddictConstants.GrantTypes.AuthorizationCode, |
|||
OpenIddictConstants.GrantTypes.RefreshToken], |
|||
[OpenIddictConstants.Scopes.OpenId, |
|||
OpenIddictConstants.Scopes.Email, |
|||
OpenIddictConstants.Scopes.Roles, |
|||
OpenIddictConstants.Scopes.Address, |
|||
OpenIddictConstants.Scopes.Phone, |
|||
OpenIddictConstants.Scopes.Profile, |
|||
OpenIddictConstants.Scopes.OfflineAccess, |
|||
scope, |
|||
"api-gateway", |
|||
"auth-server", |
|||
"admin-service", |
|||
"identity-service", |
|||
"localization-service", |
|||
"message-service", |
|||
"platform-service", |
|||
"task-service", |
|||
"webhook-service", |
|||
"wechat-service", |
|||
"workflow-service"], |
|||
oauthClientRedirectUrls, |
|||
oauthClientPostLogoutRedirectUrls); |
|||
|
|||
var oauthClientPermissions = new string[1] |
|||
{ |
|||
"AbpIdentity.UserLookup" |
|||
}; |
|||
await PermissionDataSeeder.SeedAsync(ClientPermissionValueProvider.ProviderName, oauthClientId, oauthClientPermissions); |
|||
} |
|||
} |
|||
} |
|||
File diff suppressed because it is too large
@ -0,0 +1,72 @@ |
|||
using Microsoft.EntityFrameworkCore.Migrations; |
|||
|
|||
#nullable disable |
|||
|
|||
namespace LINGYUN.Abp.MicroService.AuthServer.Migrations |
|||
{ |
|||
/// <inheritdoc />
|
|||
public partial class UpgradeAbpFrameworkTo1002 : Migration |
|||
{ |
|||
/// <inheritdoc />
|
|||
protected override void Up(MigrationBuilder migrationBuilder) |
|||
{ |
|||
migrationBuilder.AlterColumn<string>( |
|||
name: "Type", |
|||
table: "OpenIddictTokens", |
|||
type: "character varying(150)", |
|||
maxLength: 150, |
|||
nullable: true, |
|||
oldClrType: typeof(string), |
|||
oldType: "character varying(50)", |
|||
oldMaxLength: 50, |
|||
oldNullable: true); |
|||
|
|||
migrationBuilder.AddColumn<string>( |
|||
name: "FrontChannelLogoutUri", |
|||
table: "OpenIddictApplications", |
|||
type: "text", |
|||
nullable: true); |
|||
|
|||
migrationBuilder.AlterColumn<string>( |
|||
name: "DeviceInfo", |
|||
table: "AbpSessions", |
|||
type: "character varying(256)", |
|||
maxLength: 256, |
|||
nullable: true, |
|||
oldClrType: typeof(string), |
|||
oldType: "character varying(64)", |
|||
oldMaxLength: 64, |
|||
oldNullable: true); |
|||
} |
|||
|
|||
/// <inheritdoc />
|
|||
protected override void Down(MigrationBuilder migrationBuilder) |
|||
{ |
|||
migrationBuilder.DropColumn( |
|||
name: "FrontChannelLogoutUri", |
|||
table: "OpenIddictApplications"); |
|||
|
|||
migrationBuilder.AlterColumn<string>( |
|||
name: "Type", |
|||
table: "OpenIddictTokens", |
|||
type: "character varying(50)", |
|||
maxLength: 50, |
|||
nullable: true, |
|||
oldClrType: typeof(string), |
|||
oldType: "character varying(150)", |
|||
oldMaxLength: 150, |
|||
oldNullable: true); |
|||
|
|||
migrationBuilder.AlterColumn<string>( |
|||
name: "DeviceInfo", |
|||
table: "AbpSessions", |
|||
type: "character varying(64)", |
|||
maxLength: 64, |
|||
nullable: true, |
|||
oldClrType: typeof(string), |
|||
oldType: "character varying(256)", |
|||
oldMaxLength: 256, |
|||
oldNullable: true); |
|||
} |
|||
} |
|||
} |
|||
@ -1,309 +0,0 @@ |
|||
using Microsoft.Extensions.Configuration; |
|||
using OpenIddict.Abstractions; |
|||
using System; |
|||
using System.Collections.Generic; |
|||
using System.Globalization; |
|||
using System.Threading.Tasks; |
|||
using Volo.Abp.Authorization.Permissions; |
|||
using Volo.Abp.Data; |
|||
using Volo.Abp.DependencyInjection; |
|||
using Volo.Abp.MultiTenancy; |
|||
using Volo.Abp.OpenIddict.Applications; |
|||
using Volo.Abp.OpenIddict.Scopes; |
|||
using Volo.Abp.PermissionManagement; |
|||
|
|||
namespace LINGYUN.Abp.MicroService.AuthServer.DataSeeder; |
|||
|
|||
public class AuthServerDataSeedContributor : IDataSeedContributor, ITransientDependency |
|||
{ |
|||
public static HashSet<string> InitializeScopes = new HashSet<string> |
|||
{ |
|||
// obsolete! microservice should be allocated separately
|
|||
"lingyun-abp-application", |
|||
// admin service
|
|||
"ams", |
|||
// identity service
|
|||
"ids", |
|||
// localization service
|
|||
"lts", |
|||
// platform service
|
|||
"pts", |
|||
// message service
|
|||
"mgs", |
|||
// task service
|
|||
"tks", |
|||
// webhook service
|
|||
"wks", |
|||
// workflow service
|
|||
"wfs", |
|||
// wechat service
|
|||
"was" |
|||
}; |
|||
|
|||
private readonly IConfiguration _configuration; |
|||
private readonly ICurrentTenant _currentTenant; |
|||
private readonly IOpenIddictApplicationManager _applicationManager; |
|||
private readonly IOpenIddictApplicationRepository _applicationRepository; |
|||
|
|||
private readonly IPermissionDataSeeder _permissionDataSeeder; |
|||
|
|||
private readonly IOpenIddictScopeManager _scopeManager; |
|||
private readonly IOpenIddictScopeRepository _scopeRepository; |
|||
|
|||
public AuthServerDataSeedContributor( |
|||
IConfiguration configuration, |
|||
ICurrentTenant currentTenant, |
|||
IOpenIddictScopeManager scopeManager, |
|||
IOpenIddictScopeRepository scopeRepository, |
|||
IPermissionDataSeeder permissionDataSeeder, |
|||
IOpenIddictApplicationManager applicationManager, |
|||
IOpenIddictApplicationRepository applicationRepository) |
|||
{ |
|||
_configuration = configuration; |
|||
_currentTenant = currentTenant; |
|||
_scopeManager = scopeManager; |
|||
_scopeRepository = scopeRepository; |
|||
_permissionDataSeeder = permissionDataSeeder; |
|||
_applicationManager = applicationManager; |
|||
_applicationRepository = applicationRepository; |
|||
} |
|||
|
|||
public async Task SeedAsync(DataSeedContext context) |
|||
{ |
|||
using (_currentTenant.Change(context.TenantId)) |
|||
{ |
|||
await CreateScopeAsync(InitializeScopes); |
|||
|
|||
await CreateApplicationAsync(InitializeScopes); |
|||
} |
|||
} |
|||
|
|||
private async Task CreateScopeAsync(IEnumerable<string> scopes) |
|||
{ |
|||
foreach (var scope in scopes) |
|||
{ |
|||
if (await _scopeRepository.FindByNameAsync(scope) == null) |
|||
{ |
|||
await _scopeManager.CreateAsync(new OpenIddictScopeDescriptor() |
|||
{ |
|||
Name = scope, |
|||
DisplayName = scope + " access", |
|||
DisplayNames = |
|||
{ |
|||
[CultureInfo.GetCultureInfo("zh-Hans")] = "Abp API 应用程序访问", |
|||
[CultureInfo.GetCultureInfo("en")] = "Abp API Application Access" |
|||
}, |
|||
Resources = |
|||
{ |
|||
scope |
|||
} |
|||
}); |
|||
} |
|||
} |
|||
} |
|||
|
|||
private async Task CreateApplicationAsync(IEnumerable<string> scopes) |
|||
{ |
|||
var configurationSection = _configuration.GetSection("OpenIddict:Applications"); |
|||
|
|||
var vueClientId = configurationSection["VueAdmin:ClientId"]; |
|||
if (!vueClientId.IsNullOrWhiteSpace()) |
|||
{ |
|||
var vueClientRootUrl = configurationSection["VueAdmin:RootUrl"].EnsureEndsWith('/'); |
|||
|
|||
if (await _applicationRepository.FindByClientIdAsync(vueClientId) == null) |
|||
{ |
|||
var application = new OpenIddictApplicationDescriptor |
|||
{ |
|||
ClientId = vueClientId, |
|||
ClientSecret = configurationSection["VueAdmin:ClientSecret"], |
|||
ApplicationType = OpenIddictConstants.ApplicationTypes.Web, |
|||
ConsentType = OpenIddictConstants.ConsentTypes.Explicit, |
|||
DisplayName = "Abp Vue Admin Client", |
|||
PostLogoutRedirectUris = |
|||
{ |
|||
new Uri(vueClientRootUrl + "signout-callback"), |
|||
new Uri(vueClientRootUrl) |
|||
}, |
|||
RedirectUris = |
|||
{ |
|||
new Uri(vueClientRootUrl + "signin-callback"), |
|||
new Uri(vueClientRootUrl) |
|||
}, |
|||
Permissions = |
|||
{ |
|||
OpenIddictConstants.Permissions.Endpoints.Authorization, |
|||
OpenIddictConstants.Permissions.Endpoints.Token, |
|||
OpenIddictConstants.Permissions.Endpoints.DeviceAuthorization, |
|||
OpenIddictConstants.Permissions.Endpoints.Introspection, |
|||
OpenIddictConstants.Permissions.Endpoints.Revocation, |
|||
OpenIddictConstants.Permissions.Endpoints.EndSession, |
|||
|
|||
OpenIddictConstants.Permissions.GrantTypes.AuthorizationCode, |
|||
OpenIddictConstants.Permissions.GrantTypes.Implicit, |
|||
OpenIddictConstants.Permissions.GrantTypes.Password, |
|||
OpenIddictConstants.Permissions.GrantTypes.RefreshToken, |
|||
OpenIddictConstants.Permissions.GrantTypes.DeviceCode, |
|||
OpenIddictConstants.Permissions.GrantTypes.ClientCredentials, |
|||
|
|||
OpenIddictConstants.Permissions.ResponseTypes.Code, |
|||
OpenIddictConstants.Permissions.ResponseTypes.CodeIdToken, |
|||
OpenIddictConstants.Permissions.ResponseTypes.CodeIdTokenToken, |
|||
OpenIddictConstants.Permissions.ResponseTypes.CodeToken, |
|||
OpenIddictConstants.Permissions.ResponseTypes.IdToken, |
|||
OpenIddictConstants.Permissions.ResponseTypes.IdTokenToken, |
|||
OpenIddictConstants.Permissions.ResponseTypes.None, |
|||
OpenIddictConstants.Permissions.ResponseTypes.Token, |
|||
|
|||
OpenIddictConstants.Permissions.Scopes.Roles, |
|||
OpenIddictConstants.Permissions.Scopes.Profile, |
|||
OpenIddictConstants.Permissions.Scopes.Email, |
|||
OpenIddictConstants.Permissions.Scopes.Address, |
|||
OpenIddictConstants.Permissions.Scopes.Phone, |
|||
} |
|||
}; |
|||
foreach (var scope in scopes) |
|||
{ |
|||
application.Permissions.AddIfNotContains(OpenIddictConstants.Permissions.Prefixes.Scope + scope); |
|||
} |
|||
|
|||
await _applicationManager.CreateAsync(application); |
|||
|
|||
var vueClientPermissions = new string[1] |
|||
{ |
|||
"AbpIdentity.UserLookup" |
|||
}; |
|||
await _permissionDataSeeder.SeedAsync(ClientPermissionValueProvider.ProviderName, vueClientId, vueClientPermissions); |
|||
} |
|||
} |
|||
|
|||
var internalServiceClientId = configurationSection["InternalService:ClientId"]; |
|||
if (!internalServiceClientId.IsNullOrWhiteSpace()) |
|||
{ |
|||
if (await _applicationRepository.FindByClientIdAsync(internalServiceClientId) == null) |
|||
{ |
|||
var application = new OpenIddictApplicationDescriptor |
|||
{ |
|||
ClientId = internalServiceClientId, |
|||
ClientSecret = configurationSection["InternalService:ClientSecret"], |
|||
ClientType = OpenIddictConstants.ClientTypes.Confidential, |
|||
ConsentType = OpenIddictConstants.ConsentTypes.Explicit, |
|||
ApplicationType = OpenIddictConstants.ApplicationTypes.Native, |
|||
DisplayName = "Abp Vue Admin Client", |
|||
Permissions = |
|||
{ |
|||
OpenIddictConstants.Permissions.Endpoints.Authorization, |
|||
OpenIddictConstants.Permissions.Endpoints.Token, |
|||
OpenIddictConstants.Permissions.Endpoints.DeviceAuthorization, |
|||
OpenIddictConstants.Permissions.Endpoints.Introspection, |
|||
OpenIddictConstants.Permissions.Endpoints.Revocation, |
|||
OpenIddictConstants.Permissions.Endpoints.EndSession, |
|||
|
|||
OpenIddictConstants.Permissions.GrantTypes.AuthorizationCode, |
|||
OpenIddictConstants.Permissions.GrantTypes.Implicit, |
|||
OpenIddictConstants.Permissions.GrantTypes.Password, |
|||
OpenIddictConstants.Permissions.GrantTypes.RefreshToken, |
|||
OpenIddictConstants.Permissions.GrantTypes.DeviceCode, |
|||
OpenIddictConstants.Permissions.GrantTypes.ClientCredentials, |
|||
|
|||
OpenIddictConstants.Permissions.ResponseTypes.Code, |
|||
OpenIddictConstants.Permissions.ResponseTypes.CodeIdToken, |
|||
OpenIddictConstants.Permissions.ResponseTypes.CodeIdTokenToken, |
|||
OpenIddictConstants.Permissions.ResponseTypes.CodeToken, |
|||
OpenIddictConstants.Permissions.ResponseTypes.IdToken, |
|||
OpenIddictConstants.Permissions.ResponseTypes.IdTokenToken, |
|||
OpenIddictConstants.Permissions.ResponseTypes.None, |
|||
OpenIddictConstants.Permissions.ResponseTypes.Token, |
|||
|
|||
OpenIddictConstants.Permissions.Scopes.Roles, |
|||
OpenIddictConstants.Permissions.Scopes.Profile, |
|||
OpenIddictConstants.Permissions.Scopes.Email, |
|||
OpenIddictConstants.Permissions.Scopes.Address, |
|||
OpenIddictConstants.Permissions.Scopes.Phone, |
|||
} |
|||
}; |
|||
foreach (var scope in scopes) |
|||
{ |
|||
application.Permissions.AddIfNotContains(OpenIddictConstants.Permissions.Prefixes.Scope + scope); |
|||
} |
|||
|
|||
await _applicationManager.CreateAsync(application); |
|||
|
|||
var internalServicePermissions = new string[2] |
|||
{ |
|||
"AbpIdentity.UserLookup","AbpIdentity.Users" |
|||
}; |
|||
await _permissionDataSeeder.SeedAsync(ClientPermissionValueProvider.ProviderName, internalServiceClientId, internalServicePermissions); |
|||
} |
|||
} |
|||
|
|||
var oauthClientId = configurationSection["VueOAuthClient:ClientId"]; |
|||
if (!oauthClientId.IsNullOrWhiteSpace()) |
|||
{ |
|||
var oauthClientRootUrls = configurationSection.GetSection("VueOAuthClient:RootUrls").Get<List<string>>(); |
|||
|
|||
if (await _applicationRepository.FindByClientIdAsync(oauthClientId) == null) |
|||
{ |
|||
var application = new OpenIddictApplicationDescriptor |
|||
{ |
|||
ClientId = oauthClientId, |
|||
ClientSecret = null, |
|||
ApplicationType = OpenIddictConstants.ApplicationTypes.Web, |
|||
ConsentType = OpenIddictConstants.ConsentTypes.Implicit, |
|||
DisplayName = "OAuth Client", |
|||
PostLogoutRedirectUris = { }, |
|||
RedirectUris = { }, |
|||
Permissions = |
|||
{ |
|||
OpenIddictConstants.Permissions.Endpoints.Authorization, |
|||
OpenIddictConstants.Permissions.Endpoints.Token, |
|||
OpenIddictConstants.Permissions.Endpoints.DeviceAuthorization, |
|||
OpenIddictConstants.Permissions.Endpoints.Introspection, |
|||
OpenIddictConstants.Permissions.Endpoints.Revocation, |
|||
OpenIddictConstants.Permissions.Endpoints.EndSession, |
|||
|
|||
OpenIddictConstants.Permissions.GrantTypes.AuthorizationCode, |
|||
OpenIddictConstants.Permissions.GrantTypes.RefreshToken, |
|||
|
|||
OpenIddictConstants.Permissions.ResponseTypes.Code, |
|||
OpenIddictConstants.Permissions.ResponseTypes.CodeIdToken, |
|||
OpenIddictConstants.Permissions.ResponseTypes.CodeIdTokenToken, |
|||
OpenIddictConstants.Permissions.ResponseTypes.CodeToken, |
|||
OpenIddictConstants.Permissions.ResponseTypes.IdToken, |
|||
OpenIddictConstants.Permissions.ResponseTypes.IdTokenToken, |
|||
OpenIddictConstants.Permissions.ResponseTypes.None, |
|||
OpenIddictConstants.Permissions.ResponseTypes.Token, |
|||
|
|||
OpenIddictConstants.Permissions.Scopes.Roles, |
|||
OpenIddictConstants.Permissions.Scopes.Profile, |
|||
OpenIddictConstants.Permissions.Scopes.Email, |
|||
OpenIddictConstants.Permissions.Scopes.Address, |
|||
OpenIddictConstants.Permissions.Scopes.Phone, |
|||
} |
|||
}; |
|||
foreach (var scope in scopes) |
|||
{ |
|||
application.Permissions.AddIfNotContains(OpenIddictConstants.Permissions.Prefixes.Scope + scope); |
|||
} |
|||
|
|||
oauthClientRootUrls.ForEach(url => |
|||
{ |
|||
application.PostLogoutRedirectUris.AddIfNotContains(new Uri(url.EnsureEndsWith('/'))); |
|||
application.PostLogoutRedirectUris.AddIfNotContains(new Uri(url.EnsureEndsWith('/') + "signout-callback")); |
|||
|
|||
application.RedirectUris.AddIfNotContains(new Uri(url)); |
|||
application.RedirectUris.AddIfNotContains(new Uri(url.EnsureEndsWith('/') + "signin-callback")); |
|||
application.RedirectUris.AddIfNotContains(new Uri(url.EnsureEndsWith('/') + "swagger/oauth2-redirect.html")); |
|||
}); |
|||
|
|||
await _applicationManager.CreateAsync(application); |
|||
|
|||
var oauthClientPermissions = new string[1] |
|||
{ |
|||
"AbpIdentity.UserLookup" |
|||
}; |
|||
await _permissionDataSeeder.SeedAsync(ClientPermissionValueProvider.ProviderName, oauthClientId, oauthClientPermissions); |
|||
} |
|||
} |
|||
} |
|||
} |
|||
@ -1,9 +1,9 @@ |
|||
{ |
|||
"version": "9.3.6", |
|||
"version": "10.0.2", |
|||
"name": "my-app-authserver", |
|||
"private": true, |
|||
"dependencies": { |
|||
"@abp/aspnetcore.mvc.ui.theme.leptonxlite": "4.3.6", |
|||
"@abp/qrcode": "9.3.6" |
|||
"@abp/aspnetcore.mvc.ui.theme.leptonxlite": "5.0.2", |
|||
"@abp/qrcode": "10.0.2" |
|||
} |
|||
} |
|||
@ -0,0 +1,9 @@ |
|||
.account-module-form { |
|||
padding: 24px; |
|||
border: 0; |
|||
background: #fff; |
|||
color: #000; |
|||
box-shadow: 0 0 30px rgba(8, 20, 73, .1); |
|||
border-radius: 4px; |
|||
margin-top: 0.75rem !important; |
|||
} |
|||
@ -0,0 +1,47 @@ |
|||
using LINGYUN.Abp.UI.Navigation; |
|||
using System.Collections.Generic; |
|||
using System.Threading.Tasks; |
|||
using Volo.Abp.Data; |
|||
using Volo.Abp.DependencyInjection; |
|||
using Volo.Abp.MultiTenancy; |
|||
|
|||
namespace LINGYUN.Abp.MicroService.PlatformService; |
|||
public class PlatformServiceDataSeeder : ITransientDependency |
|||
{ |
|||
protected IEnumerable<INavigationSeedContributor> NavigationSeedContributors { get; } |
|||
protected INavigationProvider NavigationProvider { get; } |
|||
protected ICurrentTenant CurrentTenant { get; } |
|||
public PlatformServiceDataSeeder( |
|||
IEnumerable<INavigationSeedContributor> navigationSeedContributors, |
|||
INavigationProvider navigationProvider, |
|||
ICurrentTenant currentTenant) |
|||
{ |
|||
NavigationSeedContributors = navigationSeedContributors; |
|||
NavigationProvider = navigationProvider; |
|||
CurrentTenant = currentTenant; |
|||
} |
|||
|
|||
public async virtual Task SeedAsync(DataSeedContext context) |
|||
{ |
|||
using (CurrentTenant.Change(context.TenantId)) |
|||
{ |
|||
await SeedNavigationAsync(); |
|||
} |
|||
} |
|||
|
|||
private async Task SeedNavigationAsync() |
|||
{ |
|||
var menus = await NavigationProvider.GetAllAsync(); |
|||
|
|||
var multiTenancySides = CurrentTenant.IsAvailable |
|||
? MultiTenancySides.Tenant |
|||
: MultiTenancySides.Host; |
|||
|
|||
var seedContext = new NavigationSeedContext(menus, multiTenancySides); |
|||
|
|||
foreach (var contributor in NavigationSeedContributors) |
|||
{ |
|||
await contributor.SeedAsync(seedContext); |
|||
} |
|||
} |
|||
} |
|||
@ -0,0 +1,139 @@ |
|||
using LINGYUN.Abp.BackgroundTasks; |
|||
using LINGYUN.Abp.BackgroundTasks.Internal; |
|||
using Microsoft.Extensions.Options; |
|||
using System; |
|||
using System.Collections.Generic; |
|||
using System.Threading.Tasks; |
|||
using Volo.Abp.Data; |
|||
using Volo.Abp.DependencyInjection; |
|||
using Volo.Abp.MultiTenancy; |
|||
|
|||
namespace LINGYUN.Abp.MicroService.TaskService; |
|||
public class TaskServiceDataSeeder : ITransientDependency |
|||
{ |
|||
protected AbpBackgroundTasksOptions Options { get; } |
|||
protected IJobStore JobStore { get; } |
|||
protected IJobScheduler JobScheduler { get; } |
|||
protected ICurrentTenant CurrentTenant { get; } |
|||
|
|||
public TaskServiceDataSeeder( |
|||
IOptions<AbpBackgroundTasksOptions> options, |
|||
IJobStore jobStore, |
|||
IJobScheduler jobScheduler, |
|||
ICurrentTenant currentTenant) |
|||
{ |
|||
Options = options.Value; |
|||
JobStore = jobStore; |
|||
JobScheduler = jobScheduler; |
|||
CurrentTenant = currentTenant; |
|||
} |
|||
|
|||
public async virtual Task SeedAsync(DataSeedContext context) |
|||
{ |
|||
if (context.TenantId.HasValue) |
|||
{ |
|||
using (CurrentTenant.Change(context.TenantId)) |
|||
{ |
|||
await QueueBackgroundJobAsync(context.TenantId.Value); |
|||
} |
|||
} |
|||
} |
|||
|
|||
public async virtual Task RemoveSeedAsync(Guid tenantId) |
|||
{ |
|||
using (CurrentTenant.Change(tenantId)) |
|||
{ |
|||
var pollingJob = BuildPollingJobInfo(tenantId); |
|||
await JobScheduler.RemoveAsync(pollingJob); |
|||
await JobStore.RemoveAsync(pollingJob.Id); |
|||
|
|||
var cleaningJob = BuildCleaningJobInfo(tenantId); |
|||
await JobScheduler.RemoveAsync(cleaningJob); |
|||
await JobStore.RemoveAsync(cleaningJob.Id); |
|||
|
|||
var checkingJob = BuildCheckingJobInfo(tenantId); |
|||
await JobScheduler.RemoveAsync(checkingJob); |
|||
await JobStore.RemoveAsync(checkingJob.Id); |
|||
} |
|||
} |
|||
|
|||
protected async virtual Task QueueBackgroundJobAsync(Guid tenantId) |
|||
{ |
|||
var pollingJob = BuildPollingJobInfo(tenantId); |
|||
await JobStore.StoreAsync(pollingJob); |
|||
await JobScheduler.QueueAsync(pollingJob); |
|||
|
|||
var cleaningJob = BuildCleaningJobInfo(tenantId); |
|||
await JobStore.StoreAsync(cleaningJob); |
|||
await JobScheduler.QueueAsync(cleaningJob); |
|||
|
|||
var checkingJob = BuildCheckingJobInfo(tenantId); |
|||
await JobStore.StoreAsync(checkingJob); |
|||
await JobScheduler.QueueAsync(checkingJob); |
|||
} |
|||
|
|||
protected virtual JobInfo BuildPollingJobInfo(Guid tenantId) |
|||
{ |
|||
return new JobInfo |
|||
{ |
|||
Id = tenantId.ToString() + "_Polling", |
|||
Name = nameof(BackgroundPollingJob), |
|||
Group = "Polling", |
|||
Description = "Polling tasks to be executed", |
|||
Args = new Dictionary<string, object>() { { nameof(JobInfo.TenantId), tenantId } }, |
|||
Status = JobStatus.Running, |
|||
BeginTime = DateTime.Now, |
|||
CreationTime = DateTime.Now, |
|||
Cron = Options.JobFetchCronExpression, |
|||
JobType = JobType.Period, |
|||
Priority = JobPriority.High, |
|||
Source = JobSource.System, |
|||
LockTimeOut = Options.JobFetchLockTimeOut, |
|||
TenantId = tenantId, |
|||
Type = typeof(BackgroundPollingJob).AssemblyQualifiedName, |
|||
}; |
|||
} |
|||
|
|||
protected virtual JobInfo BuildCleaningJobInfo(Guid tenantId) |
|||
{ |
|||
return new JobInfo |
|||
{ |
|||
Id = tenantId.ToString() + "_Cleaning", |
|||
Name = nameof(BackgroundCleaningJob), |
|||
Group = "Cleaning", |
|||
Description = "Cleaning tasks to be executed", |
|||
Args = new Dictionary<string, object>() { { nameof(JobInfo.TenantId), tenantId } }, |
|||
Status = JobStatus.Running, |
|||
BeginTime = DateTime.Now, |
|||
CreationTime = DateTime.Now, |
|||
Cron = Options.JobCleanCronExpression, |
|||
JobType = JobType.Period, |
|||
Priority = JobPriority.High, |
|||
Source = JobSource.System, |
|||
TenantId = tenantId, |
|||
Type = typeof(BackgroundCleaningJob).AssemblyQualifiedName, |
|||
}; |
|||
} |
|||
|
|||
protected virtual JobInfo BuildCheckingJobInfo(Guid tenantId) |
|||
{ |
|||
return new JobInfo |
|||
{ |
|||
Id = tenantId.ToString() + "_Checking", |
|||
Name = nameof(BackgroundCheckingJob), |
|||
Group = "Checking", |
|||
Description = "Checking tasks to be executed", |
|||
Args = new Dictionary<string, object>() { { nameof(JobInfo.TenantId), tenantId } }, |
|||
Status = JobStatus.Running, |
|||
BeginTime = DateTime.Now, |
|||
CreationTime = DateTime.Now, |
|||
Cron = Options.JobCheckCronExpression, |
|||
LockTimeOut = Options.JobCheckLockTimeOut, |
|||
JobType = JobType.Period, |
|||
Priority = JobPriority.High, |
|||
Source = JobSource.System, |
|||
TenantId = tenantId, |
|||
Type = typeof(BackgroundCheckingJob).AssemblyQualifiedName, |
|||
}; |
|||
} |
|||
} |
|||
@ -0,0 +1,58 @@ |
|||
using Riok.Mapperly.Abstractions; |
|||
using Volo.Abp.Identity; |
|||
using Volo.Abp.Mapperly; |
|||
using Volo.Abp.ObjectExtending; |
|||
using VoloAuditLog = Volo.Abp.AuditLogging.AuditLog; |
|||
using VoloAuditLogAction = Volo.Abp.AuditLogging.AuditLogAction; |
|||
using VoloEntityChange = Volo.Abp.AuditLogging.EntityChange; |
|||
using VoloEntityChangeWithUsername = Volo.Abp.AuditLogging.EntityChangeWithUsername; |
|||
using VoloEntityPropertyChange = Volo.Abp.AuditLogging.EntityPropertyChange; |
|||
|
|||
namespace LINGYUN.Abp.AuditLogging.EntityFrameworkCore; |
|||
|
|||
[Mapper(RequiredMappingStrategy = RequiredMappingStrategy.Target)] |
|||
[MapExtraProperties(DefinitionChecks = MappingPropertyDefinitionChecks.None)] |
|||
public partial class VoloAuditLogActionToAuditLogActionMapper : MapperBase<VoloAuditLogAction, AuditLogAction> |
|||
{ |
|||
public override partial AuditLogAction Map(VoloAuditLogAction source); |
|||
public override partial void Map(VoloAuditLogAction source, AuditLogAction destination); |
|||
} |
|||
|
|||
[Mapper(RequiredMappingStrategy = RequiredMappingStrategy.Target)] |
|||
public partial class VoloEntityPropertyChangeToEntityPropertyChangeMapper : MapperBase<VoloEntityPropertyChange, EntityPropertyChange> |
|||
{ |
|||
public override partial EntityPropertyChange Map(VoloEntityPropertyChange source); |
|||
public override partial void Map(VoloEntityPropertyChange source, EntityPropertyChange destination); |
|||
} |
|||
|
|||
[Mapper(RequiredMappingStrategy = RequiredMappingStrategy.Target)] |
|||
[MapExtraProperties(DefinitionChecks = MappingPropertyDefinitionChecks.None)] |
|||
public partial class VoloEntityChangeToEntityChangeMapper : MapperBase<VoloEntityChange, EntityChange> |
|||
{ |
|||
public override partial EntityChange Map(VoloEntityChange source); |
|||
public override partial void Map(VoloEntityChange source, EntityChange destination); |
|||
} |
|||
|
|||
[Mapper(RequiredMappingStrategy = RequiredMappingStrategy.Target)] |
|||
[MapExtraProperties(DefinitionChecks = MappingPropertyDefinitionChecks.None)] |
|||
public partial class VoloAuditLogToAuditLogMapper : MapperBase<VoloAuditLog, AuditLog> |
|||
{ |
|||
public override partial AuditLog Map(VoloAuditLog source); |
|||
public override partial void Map(VoloAuditLog source, AuditLog destination); |
|||
} |
|||
|
|||
[Mapper(RequiredMappingStrategy = RequiredMappingStrategy.Target)] |
|||
public partial class VoloEntityChangeWithUsernameToEntityChangeWithUsernameMapper : MapperBase<VoloEntityChangeWithUsername, EntityChangeWithUsername> |
|||
{ |
|||
public override partial EntityChangeWithUsername Map(VoloEntityChangeWithUsername source); |
|||
public override partial void Map(VoloEntityChangeWithUsername source, EntityChangeWithUsername destination); |
|||
} |
|||
|
|||
[Mapper(RequiredMappingStrategy = RequiredMappingStrategy.Target)] |
|||
[MapExtraProperties(DefinitionChecks = MappingPropertyDefinitionChecks.None)] |
|||
public partial class IdentitySecurityLogToSecurityLogMapper : MapperBase<IdentitySecurityLog, SecurityLog> |
|||
{ |
|||
public override partial SecurityLog Map(IdentitySecurityLog source); |
|||
public override partial void Map(IdentitySecurityLog source, SecurityLog destination); |
|||
} |
|||
|
|||
@ -1,23 +0,0 @@ |
|||
using AutoMapper; |
|||
using Volo.Abp.ObjectExtending; |
|||
|
|||
namespace LINGYUN.Abp.AuditLogging.EntityFrameworkCore; |
|||
|
|||
public class AbpAuditingMapperProfile : Profile |
|||
{ |
|||
public AbpAuditingMapperProfile() |
|||
{ |
|||
CreateMap<Volo.Abp.AuditLogging.AuditLogAction, LINGYUN.Abp.AuditLogging.AuditLogAction>() |
|||
.MapExtraProperties(MappingPropertyDefinitionChecks.None); |
|||
CreateMap<Volo.Abp.AuditLogging.EntityPropertyChange, LINGYUN.Abp.AuditLogging.EntityPropertyChange>(); |
|||
CreateMap<Volo.Abp.AuditLogging.EntityChange, LINGYUN.Abp.AuditLogging.EntityChange>() |
|||
.MapExtraProperties(MappingPropertyDefinitionChecks.None); |
|||
CreateMap<Volo.Abp.AuditLogging.AuditLog, LINGYUN.Abp.AuditLogging.AuditLog>() |
|||
.MapExtraProperties(MappingPropertyDefinitionChecks.None); |
|||
|
|||
CreateMap<Volo.Abp.AuditLogging.EntityChangeWithUsername, LINGYUN.Abp.AuditLogging.EntityChangeWithUsername>(); |
|||
|
|||
CreateMap<Volo.Abp.Identity.IdentitySecurityLog, LINGYUN.Abp.AuditLogging.SecurityLog>(MemberList.Destination) |
|||
.MapExtraProperties(MappingPropertyDefinitionChecks.None); |
|||
} |
|||
} |
|||
@ -0,0 +1,31 @@ |
|||
using System; |
|||
using System.Text.Json; |
|||
using System.Text.Json.Serialization; |
|||
using Volo.Abp.Auditing; |
|||
|
|||
namespace LINGYUN.Abp.AuditLogging; |
|||
public class EntityChangeTypeConverter : JsonConverter<EntityChangeType> |
|||
{ |
|||
public override EntityChangeType Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) |
|||
{ |
|||
if (reader.TokenType == JsonTokenType.String) |
|||
{ |
|||
var stringValue = reader.GetString(); |
|||
if (int.TryParse(stringValue, out var intValue)) |
|||
{ |
|||
return (EntityChangeType)Enum.ToObject(typeof(EntityChangeType), intValue); |
|||
} |
|||
} |
|||
else if (reader.TokenType == JsonTokenType.Number) |
|||
{ |
|||
return (EntityChangeType)Enum.ToObject(typeof(EntityChangeType), reader.GetInt32()); |
|||
} |
|||
|
|||
throw new JsonException($"Unable to convert value to enum {typeof(EntityChangeType).Name}"); |
|||
} |
|||
|
|||
public override void Write(Utf8JsonWriter writer, EntityChangeType value, JsonSerializerOptions options) |
|||
{ |
|||
writer.WriteStringValue(Convert.ToInt32(value).ToString()); |
|||
} |
|||
} |
|||
Some files were not shown because too many files changed in this diff
Loading…
Reference in new issue