committed by
GitHub
795 changed files with 706125 additions and 688318 deletions
@ -1,360 +1,367 @@ |
|||||
<Project> |
<Project> |
||||
<PropertyGroup> |
<PropertyGroup> |
||||
<DotNetCoreCAPPackageVersion>8.3.5</DotNetCoreCAPPackageVersion> |
<DotNetCoreCAPPackageVersion>10.0.0</DotNetCoreCAPPackageVersion> |
||||
<ElsaPackageVersion>2.15.2</ElsaPackageVersion> |
<ElsaPackageVersion>2.15.2</ElsaPackageVersion> |
||||
<ElsaNextPackageVersion>3.3.5</ElsaNextPackageVersion> |
<ElsaNextPackageVersion>3.3.5</ElsaNextPackageVersion> |
||||
<VoloAbpPackageVersion>9.3.6</VoloAbpPackageVersion> |
<VoloAbpPackageVersion>10.0.2</VoloAbpPackageVersion> |
||||
<LINGYUNAbpPackageVersion>9.3.6</LINGYUNAbpPackageVersion> |
<LINGYUNAbpPackageVersion>10.0.2</LINGYUNAbpPackageVersion> |
||||
<MicrosoftExtensionsPackageVersion>9.0.5</MicrosoftExtensionsPackageVersion> |
<MicrosoftExtensionsPackageVersion>10.0.0</MicrosoftExtensionsPackageVersion> |
||||
<MicrosoftAspNetCorePackageVersion>9.0.5</MicrosoftAspNetCorePackageVersion> |
<MicrosoftAspNetCorePackageVersion>10.0.0</MicrosoftAspNetCorePackageVersion> |
||||
<MicrosoftEntityFrameworkCorePackageVersion>9.0.5</MicrosoftEntityFrameworkCorePackageVersion> |
<MicrosoftEntityFrameworkCorePackageVersion>10.0.0</MicrosoftEntityFrameworkCorePackageVersion> |
||||
<AspirePackageVersion>13.1.0</AspirePackageVersion> |
<AspirePackageVersion>13.1.0</AspirePackageVersion> |
||||
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally> |
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally> |
||||
</PropertyGroup> |
</PropertyGroup> |
||||
<!-- Abp Framework --> |
<!-- Abp Framework --> |
||||
<ItemGroup> |
<ItemGroup> |
||||
<PackageVersion Include="Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonXLite" Version="4.3.6" /> |
<PackageVersion Include="Volo.Abp.AspNetCore.Mvc.UI.Theme.LeptonXLite" Version="5.0.2" /> |
||||
<PackageVersion Include="Volo.Abp.Core" Version="$(VoloAbpPackageVersion)" /> |
<PackageVersion Include="Volo.Abp.Core" Version="$(VoloAbpPackageVersion)" /> |
||||
<PackageVersion Include="Volo.Abp.Account.Application" Version="$(VoloAbpPackageVersion)" /> |
<PackageVersion Include="Volo.Abp.Account.Application" Version="$(VoloAbpPackageVersion)" /> |
||||
<PackageVersion Include="Volo.Abp.Account.Application.Contracts" 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" Version="$(VoloAbpPackageVersion)" /> |
||||
<PackageVersion Include="Volo.Abp.Account.Domain.Shared" Version="$(VoloAbpPackageVersion)" /> |
<PackageVersion Include="Volo.Abp.Account.Domain.Shared" Version="$(VoloAbpPackageVersion)" /> |
||||
<PackageVersion Include="Volo.Abp.Account.EntityFrameworkCore" Version="$(VoloAbpPackageVersion)" /> |
<PackageVersion Include="Volo.Abp.Account.EntityFrameworkCore" Version="$(VoloAbpPackageVersion)" /> |
||||
<PackageVersion Include="Volo.Abp.Account.HttpApi" Version="$(VoloAbpPackageVersion)" /> |
<PackageVersion Include="Volo.Abp.Account.HttpApi" Version="$(VoloAbpPackageVersion)" /> |
||||
<PackageVersion Include="Volo.Abp.Account.HttpApi.Client" 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" Version="$(VoloAbpPackageVersion)" /> |
||||
<PackageVersion Include="Volo.Abp.Account.Web.IdentityServer" Version="$(VoloAbpPackageVersion)" /> |
<PackageVersion Include="Volo.Abp.Account.Web.IdentityServer" Version="$(VoloAbpPackageVersion)" /> |
||||
<PackageVersion Include="Volo.Abp.Account.Web.OpenIddict" Version="$(VoloAbpPackageVersion)" /> |
<PackageVersion Include="Volo.Abp.Account.Web.OpenIddict" Version="$(VoloAbpPackageVersion)" /> |
||||
<PackageVersion Include="Volo.Abp.AspNetCore" Version="$(VoloAbpPackageVersion)" /> |
<PackageVersion Include="Volo.Abp.AspNetCore" Version="$(VoloAbpPackageVersion)" /> |
||||
<PackageVersion Include="Volo.Abp.AspNetCore.Authentication.JwtBearer" Version="$(VoloAbpPackageVersion)" /> |
<PackageVersion Include="Volo.Abp.AspNetCore.Authentication.JwtBearer" Version="$(VoloAbpPackageVersion)" /> |
||||
<PackageVersion Include="Volo.Abp.AspNetCore.MultiTenancy" Version="$(VoloAbpPackageVersion)" /> |
<PackageVersion Include="Volo.Abp.AspNetCore.MultiTenancy" Version="$(VoloAbpPackageVersion)" /> |
||||
<PackageVersion Include="Volo.Abp.AspNetCore.Mvc" 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.Client.Common" Version="$(VoloAbpPackageVersion)" /> |
||||
<PackageVersion Include="Volo.Abp.AspNetCore.Mvc.Contracts" 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.NewtonsoftJson" Version="$(VoloAbpPackageVersion)" /> |
||||
<PackageVersion Include="Volo.Abp.AspNetCore.Mvc.UI.MultiTenancy" 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.Basic" Version="$(VoloAbpPackageVersion)" /> |
||||
<PackageVersion Include="Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared" 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.Serilog" Version="$(VoloAbpPackageVersion)" /> |
||||
<PackageVersion Include="Volo.Abp.AspNetCore.SignalR" Version="$(VoloAbpPackageVersion)" /> |
<PackageVersion Include="Volo.Abp.AspNetCore.SignalR" Version="$(VoloAbpPackageVersion)" /> |
||||
<PackageVersion Include="Volo.Abp.AspNetCore.TestBase" Version="$(VoloAbpPackageVersion)" /> |
<PackageVersion Include="Volo.Abp.AspNetCore.TestBase" Version="$(VoloAbpPackageVersion)" /> |
||||
<PackageVersion Include="Volo.Abp.Auditing" Version="$(VoloAbpPackageVersion)" /> |
<PackageVersion Include="Volo.Abp.Auditing" Version="$(VoloAbpPackageVersion)" /> |
||||
<PackageVersion Include="Volo.Abp.Auditing.Contracts" Version="$(VoloAbpPackageVersion)" /> |
<PackageVersion Include="Volo.Abp.Auditing.Contracts" Version="$(VoloAbpPackageVersion)" /> |
||||
<PackageVersion Include="Volo.Abp.AuditLogging.Domain.Shared" Version="$(VoloAbpPackageVersion)" /> |
<PackageVersion Include="Volo.Abp.AuditLogging.Domain.Shared" Version="$(VoloAbpPackageVersion)" /> |
||||
<PackageVersion Include="Volo.Abp.AuditLogging.EntityFrameworkCore" Version="$(VoloAbpPackageVersion)" /> |
<PackageVersion Include="Volo.Abp.AuditLogging.EntityFrameworkCore" Version="$(VoloAbpPackageVersion)" /> |
||||
<PackageVersion Include="Volo.Abp.Authorization" Version="$(VoloAbpPackageVersion)" /> |
<PackageVersion Include="Volo.Abp.Authorization" Version="$(VoloAbpPackageVersion)" /> |
||||
<PackageVersion Include="Volo.Abp.Authorization.Abstractions" Version="$(VoloAbpPackageVersion)" /> |
<PackageVersion Include="Volo.Abp.Authorization.Abstractions" Version="$(VoloAbpPackageVersion)" /> |
||||
<PackageVersion Include="Volo.Abp.Autofac" Version="$(VoloAbpPackageVersion)" /> |
<PackageVersion Include="Volo.Abp.Autofac" Version="$(VoloAbpPackageVersion)" /> |
||||
<PackageVersion Include="Volo.Abp.AutoMapper" Version="$(VoloAbpPackageVersion)" /> |
<PackageVersion Include="Volo.Abp.AutoMapper" Version="$(VoloAbpPackageVersion)" /> |
||||
<PackageVersion Include="Volo.Abp.BackgroundJobs" Version="$(VoloAbpPackageVersion)" /> |
<PackageVersion Include="Volo.Abp.BackgroundJobs" Version="$(VoloAbpPackageVersion)" /> |
||||
<PackageVersion Include="Volo.Abp.BackgroundJobs.Abstractions" Version="$(VoloAbpPackageVersion)" /> |
<PackageVersion Include="Volo.Abp.BackgroundJobs.Abstractions" Version="$(VoloAbpPackageVersion)" /> |
||||
<PackageVersion Include="Volo.Abp.BackgroundWorkers" Version="$(VoloAbpPackageVersion)" /> |
<PackageVersion Include="Volo.Abp.BackgroundWorkers" Version="$(VoloAbpPackageVersion)" /> |
||||
<PackageVersion Include="Volo.Abp.BlobStoring" Version="$(VoloAbpPackageVersion)" /> |
<PackageVersion Include="Volo.Abp.BlobStoring" Version="$(VoloAbpPackageVersion)" /> |
||||
<PackageVersion Include="Volo.Abp.BlobStoring.FileSystem" Version="$(VoloAbpPackageVersion)" /> |
<PackageVersion Include="Volo.Abp.BlobStoring.FileSystem" Version="$(VoloAbpPackageVersion)" /> |
||||
<PackageVersion Include="Volo.Abp.BlobStoring.Minio" Version="$(VoloAbpPackageVersion)" /> |
<PackageVersion Include="Volo.Abp.BlobStoring.Minio" Version="$(VoloAbpPackageVersion)" /> |
||||
<PackageVersion Include="Volo.Abp.Caching" Version="$(VoloAbpPackageVersion)" /> |
<PackageVersion Include="Volo.Abp.Caching" Version="$(VoloAbpPackageVersion)" /> |
||||
<PackageVersion Include="Volo.Abp.Caching.StackExchangeRedis" Version="$(VoloAbpPackageVersion)" /> |
<PackageVersion Include="Volo.Abp.Caching.StackExchangeRedis" Version="$(VoloAbpPackageVersion)" /> |
||||
<PackageVersion Include="Volo.Abp.Cli.Core" Version="$(VoloAbpPackageVersion)" /> |
<PackageVersion Include="Volo.Abp.Cli.Core" Version="$(VoloAbpPackageVersion)" /> |
||||
<PackageVersion Include="Volo.Abp.Data" Version="$(VoloAbpPackageVersion)" /> |
<PackageVersion Include="Volo.Abp.Data" Version="$(VoloAbpPackageVersion)" /> |
||||
<PackageVersion Include="Volo.Abp.Dapper" Version="$(VoloAbpPackageVersion)" /> |
<PackageVersion Include="Volo.Abp.Dapper" Version="$(VoloAbpPackageVersion)" /> |
||||
<PackageVersion Include="Volo.Abp.Ddd.Application" Version="$(VoloAbpPackageVersion)" /> |
<PackageVersion Include="Volo.Abp.Ddd.Application" Version="$(VoloAbpPackageVersion)" /> |
||||
<PackageVersion Include="Volo.Abp.Ddd.Application.Contracts" 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" Version="$(VoloAbpPackageVersion)" /> |
||||
<PackageVersion Include="Volo.Abp.Ddd.Domain.Shared" Version="$(VoloAbpPackageVersion)" /> |
<PackageVersion Include="Volo.Abp.Ddd.Domain.Shared" Version="$(VoloAbpPackageVersion)" /> |
||||
<PackageVersion Include="Volo.Abp.DistributedLocking.Abstractions" Version="$(VoloAbpPackageVersion)" /> |
<PackageVersion Include="Volo.Abp.DistributedLocking.Abstractions" Version="$(VoloAbpPackageVersion)" /> |
||||
<PackageVersion Include="Volo.Abp.DistributedLocking" Version="$(VoloAbpPackageVersion)" /> |
<PackageVersion Include="Volo.Abp.DistributedLocking" Version="$(VoloAbpPackageVersion)" /> |
||||
<PackageVersion Include="Volo.Abp.EntityFrameworkCore" Version="$(VoloAbpPackageVersion)" /> |
<PackageVersion Include="Volo.Abp.EntityFrameworkCore" Version="$(VoloAbpPackageVersion)" /> |
||||
<PackageVersion Include="Volo.Abp.EntityFrameworkCore.MySQL" Version="$(VoloAbpPackageVersion)" /> |
<PackageVersion Include="Volo.Abp.EntityFrameworkCore.MySQL" Version="$(VoloAbpPackageVersion)" /> |
||||
<PackageVersion Include="Volo.Abp.EntityFrameworkCore.MySQL.Pomelo" Version="$(VoloAbpPackageVersion)" /> |
<PackageVersion Include="Volo.Abp.EntityFrameworkCore.MySQL.Pomelo" Version="$(VoloAbpPackageVersion)" /> |
||||
<PackageVersion Include="Volo.Abp.EntityFrameworkCore.SqlServer" Version="$(VoloAbpPackageVersion)" /> |
<PackageVersion Include="Volo.Abp.EntityFrameworkCore.SqlServer" Version="$(VoloAbpPackageVersion)" /> |
||||
<PackageVersion Include="Volo.Abp.EntityFrameworkCore.PostgreSql" Version="$(VoloAbpPackageVersion)" /> |
<PackageVersion Include="Volo.Abp.EntityFrameworkCore.PostgreSql" Version="$(VoloAbpPackageVersion)" /> |
||||
<PackageVersion Include="Volo.Abp.Features" Version="$(VoloAbpPackageVersion)" /> |
<PackageVersion Include="Volo.Abp.Features" Version="$(VoloAbpPackageVersion)" /> |
||||
<PackageVersion Include="Volo.Abp.FeatureManagement.Application" Version="$(VoloAbpPackageVersion)" /> |
<PackageVersion Include="Volo.Abp.FeatureManagement.Application" Version="$(VoloAbpPackageVersion)" /> |
||||
<PackageVersion Include="Volo.Abp.FeatureManagement.Application.Contracts" 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" Version="$(VoloAbpPackageVersion)" /> |
||||
<PackageVersion Include="Volo.Abp.FeatureManagement.Domain.Shared" Version="$(VoloAbpPackageVersion)" /> |
<PackageVersion Include="Volo.Abp.FeatureManagement.Domain.Shared" Version="$(VoloAbpPackageVersion)" /> |
||||
<PackageVersion Include="Volo.Abp.FeatureManagement.EntityFrameworkCore" Version="$(VoloAbpPackageVersion)" /> |
<PackageVersion Include="Volo.Abp.FeatureManagement.EntityFrameworkCore" Version="$(VoloAbpPackageVersion)" /> |
||||
<PackageVersion Include="Volo.Abp.FeatureManagement.HttpApi" Version="$(VoloAbpPackageVersion)" /> |
<PackageVersion Include="Volo.Abp.FeatureManagement.HttpApi" Version="$(VoloAbpPackageVersion)" /> |
||||
<PackageVersion Include="Volo.Abp.FeatureManagement.Web" Version="$(VoloAbpPackageVersion)" /> |
<PackageVersion Include="Volo.Abp.FeatureManagement.Web" Version="$(VoloAbpPackageVersion)" /> |
||||
<PackageVersion Include="Volo.Abp.Emailing" Version="$(VoloAbpPackageVersion)" /> |
<PackageVersion Include="Volo.Abp.Emailing" Version="$(VoloAbpPackageVersion)" /> |
||||
<PackageVersion Include="Volo.Abp.EventBus" Version="$(VoloAbpPackageVersion)" /> |
<PackageVersion Include="Volo.Abp.EventBus" Version="$(VoloAbpPackageVersion)" /> |
||||
<PackageVersion Include="Volo.Abp.EventBus.Abstractions" Version="$(VoloAbpPackageVersion)" /> |
<PackageVersion Include="Volo.Abp.EventBus.Abstractions" Version="$(VoloAbpPackageVersion)" /> |
||||
<PackageVersion Include="Volo.Abp.ExceptionHandling" Version="$(VoloAbpPackageVersion)" /> |
<PackageVersion Include="Volo.Abp.ExceptionHandling" Version="$(VoloAbpPackageVersion)" /> |
||||
<PackageVersion Include="Volo.Abp.Guids" Version="$(VoloAbpPackageVersion)" /> |
<PackageVersion Include="Volo.Abp.Guids" Version="$(VoloAbpPackageVersion)" /> |
||||
<PackageVersion Include="Volo.Abp.Gdpr.Abstractions" Version="$(VoloAbpPackageVersion)" /> |
<PackageVersion Include="Volo.Abp.Gdpr.Abstractions" Version="$(VoloAbpPackageVersion)" /> |
||||
<PackageVersion Include="Volo.Abp.GlobalFeatures" Version="$(VoloAbpPackageVersion)" /> |
<PackageVersion Include="Volo.Abp.GlobalFeatures" Version="$(VoloAbpPackageVersion)" /> |
||||
<PackageVersion Include="Volo.Abp.HangFire" Version="$(VoloAbpPackageVersion)" /> |
<PackageVersion Include="Volo.Abp.HangFire" Version="$(VoloAbpPackageVersion)" /> |
||||
<PackageVersion Include="Volo.Abp.Http.Client" Version="$(VoloAbpPackageVersion)" /> |
<PackageVersion Include="Volo.Abp.Http.Client" Version="$(VoloAbpPackageVersion)" /> |
||||
<PackageVersion Include="Volo.Abp.Http.Client.IdentityModel.Web" 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.AspNetCore" Version="$(VoloAbpPackageVersion)" /> |
||||
<PackageVersion Include="Volo.Abp.Identity.Application" Version="$(VoloAbpPackageVersion)" /> |
<PackageVersion Include="Volo.Abp.Identity.Application" Version="$(VoloAbpPackageVersion)" /> |
||||
<PackageVersion Include="Volo.Abp.Identity.Application.Contracts" 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" Version="$(VoloAbpPackageVersion)" /> |
||||
<PackageVersion Include="Volo.Abp.Identity.Domain.Shared" Version="$(VoloAbpPackageVersion)" /> |
<PackageVersion Include="Volo.Abp.Identity.Domain.Shared" Version="$(VoloAbpPackageVersion)" /> |
||||
<PackageVersion Include="Volo.Abp.Identity.EntityFrameworkCore" Version="$(VoloAbpPackageVersion)" /> |
<PackageVersion Include="Volo.Abp.Identity.EntityFrameworkCore" Version="$(VoloAbpPackageVersion)" /> |
||||
<PackageVersion Include="Volo.Abp.Identity.HttpApi" Version="$(VoloAbpPackageVersion)" /> |
<PackageVersion Include="Volo.Abp.Identity.HttpApi" Version="$(VoloAbpPackageVersion)" /> |
||||
<PackageVersion Include="Volo.Abp.Identity.HttpApi.Client" Version="$(VoloAbpPackageVersion)" /> |
<PackageVersion Include="Volo.Abp.Identity.HttpApi.Client" Version="$(VoloAbpPackageVersion)" /> |
||||
<PackageVersion Include="Volo.Abp.Identity.Web" Version="$(VoloAbpPackageVersion)" /> |
<PackageVersion Include="Volo.Abp.Identity.Web" Version="$(VoloAbpPackageVersion)" /> |
||||
<PackageVersion Include="Volo.Abp.IdentityServer.Application" Version="$(VoloAbpPackageVersion)" /> |
<PackageVersion Include="Volo.Abp.IdentityServer.Application" Version="$(VoloAbpPackageVersion)" /> |
||||
<PackageVersion Include="Volo.Abp.IdentityServer.Application.Contracts" 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" Version="$(VoloAbpPackageVersion)" /> |
||||
<PackageVersion Include="Volo.Abp.IdentityServer.Domain.Shared" Version="$(VoloAbpPackageVersion)" /> |
<PackageVersion Include="Volo.Abp.IdentityServer.Domain.Shared" Version="$(VoloAbpPackageVersion)" /> |
||||
<PackageVersion Include="Volo.Abp.IdentityServer.EntityFrameworkCore" Version="$(VoloAbpPackageVersion)" /> |
<PackageVersion Include="Volo.Abp.IdentityServer.EntityFrameworkCore" Version="$(VoloAbpPackageVersion)" /> |
||||
<PackageVersion Include="Volo.Abp.IdentityServer.HttpApi" Version="$(VoloAbpPackageVersion)" /> |
<PackageVersion Include="Volo.Abp.IdentityServer.HttpApi" Version="$(VoloAbpPackageVersion)" /> |
||||
<PackageVersion Include="Volo.Abp.Imaging.Abstractions" Version="$(VoloAbpPackageVersion)" /> |
<PackageVersion Include="Volo.Abp.Imaging.Abstractions" Version="$(VoloAbpPackageVersion)" /> |
||||
<PackageVersion Include="Volo.Abp.Imaging.ImageSharp" Version="$(VoloAbpPackageVersion)" /> |
<PackageVersion Include="Volo.Abp.Imaging.ImageSharp" Version="$(VoloAbpPackageVersion)" /> |
||||
<PackageVersion Include="Volo.Abp.Json" Version="$(VoloAbpPackageVersion)" /> |
<PackageVersion Include="Volo.Abp.Json" Version="$(VoloAbpPackageVersion)" /> |
||||
<PackageVersion Include="Volo.Abp.Json.Abstractions" Version="$(VoloAbpPackageVersion)" /> |
<PackageVersion Include="Volo.Abp.Json.Abstractions" Version="$(VoloAbpPackageVersion)" /> |
||||
<PackageVersion Include="Volo.Abp.Localization" Version="$(VoloAbpPackageVersion)" /> |
<PackageVersion Include="Volo.Abp.Localization" Version="$(VoloAbpPackageVersion)" /> |
||||
<PackageVersion Include="Volo.Abp.MailKit" Version="$(VoloAbpPackageVersion)" /> |
<PackageVersion Include="Volo.Abp.MailKit" Version="$(VoloAbpPackageVersion)" /> |
||||
<PackageVersion Include="Volo.Abp.MultiTenancy" Version="$(VoloAbpPackageVersion)" /> |
<PackageVersion Include="Volo.Abp.Mapperly" Version="$(VoloAbpPackageVersion)" /> |
||||
<PackageVersion Include="Volo.Abp.MultiTenancy.Abstractions" Version="$(VoloAbpPackageVersion)" /> |
<PackageVersion Include="Volo.Abp.MultiTenancy" Version="$(VoloAbpPackageVersion)" /> |
||||
<PackageVersion Include="Volo.Abp.ObjectExtending" Version="$(VoloAbpPackageVersion)" /> |
<PackageVersion Include="Volo.Abp.MultiTenancy.Abstractions" Version="$(VoloAbpPackageVersion)" /> |
||||
<PackageVersion Include="Volo.Abp.OpenIddict.Application" Version="$(VoloAbpPackageVersion)" /> |
<PackageVersion Include="Volo.Abp.ObjectExtending" Version="$(VoloAbpPackageVersion)" /> |
||||
<PackageVersion Include="Volo.Abp.OpenIddict.Application.Contracts" Version="$(VoloAbpPackageVersion)" /> |
<PackageVersion Include="Volo.Abp.OpenIddict.Application" Version="$(VoloAbpPackageVersion)" /> |
||||
<PackageVersion Include="Volo.Abp.OpenIddict.AspNetCore" Version="$(VoloAbpPackageVersion)" /> |
<PackageVersion Include="Volo.Abp.OpenIddict.Application.Contracts" Version="$(VoloAbpPackageVersion)" /> |
||||
<PackageVersion Include="Volo.Abp.OpenIddict.Domain" Version="$(VoloAbpPackageVersion)" /> |
<PackageVersion Include="Volo.Abp.OpenIddict.AspNetCore" Version="$(VoloAbpPackageVersion)" /> |
||||
<PackageVersion Include="Volo.Abp.OpenIddict.Domain.Shared" Version="$(VoloAbpPackageVersion)" /> |
<PackageVersion Include="Volo.Abp.OpenIddict.Domain" Version="$(VoloAbpPackageVersion)" /> |
||||
<PackageVersion Include="Volo.Abp.OpenIddict.EntityFrameworkCore" Version="$(VoloAbpPackageVersion)" /> |
<PackageVersion Include="Volo.Abp.OpenIddict.Domain.Shared" Version="$(VoloAbpPackageVersion)" /> |
||||
<PackageVersion Include="Volo.Abp.OpenIddict.HttpApi" Version="$(VoloAbpPackageVersion)" /> |
<PackageVersion Include="Volo.Abp.OpenIddict.EntityFrameworkCore" Version="$(VoloAbpPackageVersion)" /> |
||||
<PackageVersion Include="Volo.Abp.PermissionManagement.Application" Version="$(VoloAbpPackageVersion)" /> |
<PackageVersion Include="Volo.Abp.OpenIddict.HttpApi" Version="$(VoloAbpPackageVersion)" /> |
||||
<PackageVersion Include="Volo.Abp.PermissionManagement.Application.Contracts" Version="$(VoloAbpPackageVersion)" /> |
<PackageVersion Include="Volo.Abp.PermissionManagement.Application" Version="$(VoloAbpPackageVersion)" /> |
||||
<PackageVersion Include="Volo.Abp.PermissionManagement.Domain" Version="$(VoloAbpPackageVersion)" /> |
<PackageVersion Include="Volo.Abp.PermissionManagement.Application.Contracts" Version="$(VoloAbpPackageVersion)" /> |
||||
<PackageVersion Include="Volo.Abp.PermissionManagement.Domain.Identity" Version="$(VoloAbpPackageVersion)" /> |
<PackageVersion Include="Volo.Abp.PermissionManagement.Domain" Version="$(VoloAbpPackageVersion)" /> |
||||
<PackageVersion Include="Volo.Abp.PermissionManagement.Domain.IdentityServer" Version="$(VoloAbpPackageVersion)" /> |
<PackageVersion Include="Volo.Abp.PermissionManagement.Domain.Identity" Version="$(VoloAbpPackageVersion)" /> |
||||
<PackageVersion Include="Volo.Abp.PermissionManagement.Domain.OpenIddict" Version="$(VoloAbpPackageVersion)" /> |
<PackageVersion Include="Volo.Abp.PermissionManagement.Domain.IdentityServer" Version="$(VoloAbpPackageVersion)" /> |
||||
<PackageVersion Include="Volo.Abp.PermissionManagement.Domain.Shared" Version="$(VoloAbpPackageVersion)" /> |
<PackageVersion Include="Volo.Abp.PermissionManagement.Domain.OpenIddict" Version="$(VoloAbpPackageVersion)" /> |
||||
<PackageVersion Include="Volo.Abp.PermissionManagement.EntityFrameworkCore" Version="$(VoloAbpPackageVersion)" /> |
<PackageVersion Include="Volo.Abp.PermissionManagement.Domain.Shared" Version="$(VoloAbpPackageVersion)" /> |
||||
<PackageVersion Include="Volo.Abp.PermissionManagement.HttpApi" Version="$(VoloAbpPackageVersion)" /> |
<PackageVersion Include="Volo.Abp.PermissionManagement.EntityFrameworkCore" Version="$(VoloAbpPackageVersion)" /> |
||||
<PackageVersion Include="Volo.Abp.PermissionManagement.Web" Version="$(VoloAbpPackageVersion)" /> |
<PackageVersion Include="Volo.Abp.PermissionManagement.HttpApi" Version="$(VoloAbpPackageVersion)" /> |
||||
<PackageVersion Include="Volo.Abp.Quartz" Version="$(VoloAbpPackageVersion)" /> |
<PackageVersion Include="Volo.Abp.PermissionManagement.Web" Version="$(VoloAbpPackageVersion)" /> |
||||
<PackageVersion Include="Volo.Abp.Security" Version="$(VoloAbpPackageVersion)" /> |
<PackageVersion Include="Volo.Abp.Quartz" Version="$(VoloAbpPackageVersion)" /> |
||||
<PackageVersion Include="Volo.Abp.Settings" Version="$(VoloAbpPackageVersion)" /> |
<PackageVersion Include="Volo.Abp.Security" Version="$(VoloAbpPackageVersion)" /> |
||||
<PackageVersion Include="Volo.Abp.SettingManagement.Application" Version="$(VoloAbpPackageVersion)" /> |
<PackageVersion Include="Volo.Abp.Settings" Version="$(VoloAbpPackageVersion)" /> |
||||
<PackageVersion Include="Volo.Abp.SettingManagement.Application.Contracts" Version="$(VoloAbpPackageVersion)" /> |
<PackageVersion Include="Volo.Abp.SettingManagement.Application" Version="$(VoloAbpPackageVersion)" /> |
||||
<PackageVersion Include="Volo.Abp.SettingManagement.Domain" Version="$(VoloAbpPackageVersion)" /> |
<PackageVersion Include="Volo.Abp.SettingManagement.Application.Contracts" Version="$(VoloAbpPackageVersion)" /> |
||||
<PackageVersion Include="Volo.Abp.SettingManagement.Domain.Shared" Version="$(VoloAbpPackageVersion)" /> |
<PackageVersion Include="Volo.Abp.SettingManagement.Domain" Version="$(VoloAbpPackageVersion)" /> |
||||
<PackageVersion Include="Volo.Abp.SettingManagement.EntityFrameworkCore" Version="$(VoloAbpPackageVersion)" /> |
<PackageVersion Include="Volo.Abp.SettingManagement.Domain.Shared" Version="$(VoloAbpPackageVersion)" /> |
||||
<PackageVersion Include="Volo.Abp.SettingManagement.HttpApi" Version="$(VoloAbpPackageVersion)" /> |
<PackageVersion Include="Volo.Abp.SettingManagement.EntityFrameworkCore" Version="$(VoloAbpPackageVersion)" /> |
||||
<PackageVersion Include="Volo.Abp.SettingManagement.Web" Version="$(VoloAbpPackageVersion)" /> |
<PackageVersion Include="Volo.Abp.SettingManagement.HttpApi" Version="$(VoloAbpPackageVersion)" /> |
||||
<PackageVersion Include="Volo.Abp.Swashbuckle" Version="$(VoloAbpPackageVersion)" /> |
<PackageVersion Include="Volo.Abp.SettingManagement.Web" Version="$(VoloAbpPackageVersion)" /> |
||||
<PackageVersion Include="Volo.Abp.Sms" Version="$(VoloAbpPackageVersion)" /> |
<PackageVersion Include="Volo.Abp.Swashbuckle" Version="$(VoloAbpPackageVersion)" /> |
||||
<PackageVersion Include="Volo.Abp.TestBase" Version="$(VoloAbpPackageVersion)" /> |
<PackageVersion Include="Volo.Abp.Sms" Version="$(VoloAbpPackageVersion)" /> |
||||
<PackageVersion Include="Volo.Abp.TextTemplating.Core" Version="$(VoloAbpPackageVersion)" /> |
<PackageVersion Include="Volo.Abp.TestBase" Version="$(VoloAbpPackageVersion)" /> |
||||
<PackageVersion Include="Volo.Abp.TextTemplating.Scriban" Version="$(VoloAbpPackageVersion)" /> |
<PackageVersion Include="Volo.Abp.TextTemplating.Core" Version="$(VoloAbpPackageVersion)" /> |
||||
<PackageVersion Include="Volo.Abp.Timing" Version="$(VoloAbpPackageVersion)" /> |
<PackageVersion Include="Volo.Abp.TextTemplating.Scriban" Version="$(VoloAbpPackageVersion)" /> |
||||
<PackageVersion Include="Volo.Abp.Threading" Version="$(VoloAbpPackageVersion)" /> |
<PackageVersion Include="Volo.Abp.Timing" Version="$(VoloAbpPackageVersion)" /> |
||||
<PackageVersion Include="Volo.Abp.UI.Navigation" Version="$(VoloAbpPackageVersion)" /> |
<PackageVersion Include="Volo.Abp.Threading" Version="$(VoloAbpPackageVersion)" /> |
||||
<PackageVersion Include="Volo.Abp.Users.Abstractions" Version="$(VoloAbpPackageVersion)" /> |
<PackageVersion Include="Volo.Abp.UI.Navigation" Version="$(VoloAbpPackageVersion)" /> |
||||
<PackageVersion Include="Volo.Abp.Users.Domain.Shared" Version="$(VoloAbpPackageVersion)" /> |
<PackageVersion Include="Volo.Abp.Users.Abstractions" Version="$(VoloAbpPackageVersion)" /> |
||||
<PackageVersion Include="Volo.Abp.Validation" Version="$(VoloAbpPackageVersion)" /> |
<PackageVersion Include="Volo.Abp.Users.Domain.Shared" Version="$(VoloAbpPackageVersion)" /> |
||||
<PackageVersion Include="Volo.Abp.VirtualFileSystem" Version="$(VoloAbpPackageVersion)" /> |
<PackageVersion Include="Volo.Abp.Validation" Version="$(VoloAbpPackageVersion)" /> |
||||
<PackageVersion Include="Volo.Abp.VirtualFileExplorer.Web" Version="$(VoloAbpPackageVersion)" /> |
<PackageVersion Include="Volo.Abp.VirtualFileSystem" Version="$(VoloAbpPackageVersion)" /> |
||||
</ItemGroup> |
<PackageVersion Include="Volo.Abp.VirtualFileExplorer.Web" Version="$(VoloAbpPackageVersion)" /> |
||||
<!-- .NET --> |
</ItemGroup> |
||||
<ItemGroup> |
<!-- .NET --> |
||||
<PackageVersion Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="$(MicrosoftAspNetCorePackageVersion)" /> |
<ItemGroup> |
||||
<PackageVersion Include="Microsoft.AspNetCore.Authentication.OpenIdConnect" Version="$(MicrosoftAspNetCorePackageVersion)" /> |
<PackageVersion Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="$(MicrosoftAspNetCorePackageVersion)" /> |
||||
<PackageVersion Include="Microsoft.AspNetCore.DataProtection.StackExchangeRedis" Version="$(MicrosoftAspNetCorePackageVersion)" /> |
<PackageVersion Include="Microsoft.AspNetCore.Authentication.OpenIdConnect" Version="$(MicrosoftAspNetCorePackageVersion)" /> |
||||
<PackageVersion Include="Microsoft.AspNetCore.SignalR.Protocols.Json" Version="$(MicrosoftAspNetCorePackageVersion)" /> |
<PackageVersion Include="Microsoft.AspNetCore.DataProtection.StackExchangeRedis" Version="$(MicrosoftAspNetCorePackageVersion)" /> |
||||
<PackageVersion Include="Microsoft.AspNetCore.SignalR.StackExchangeRedis" Version="$(MicrosoftAspNetCorePackageVersion)" /> |
<PackageVersion Include="Microsoft.AspNetCore.SignalR.Protocols.Json" Version="$(MicrosoftAspNetCorePackageVersion)" /> |
||||
<PackageVersion Include="Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation" Version="$(MicrosoftAspNetCorePackageVersion)" /> |
<PackageVersion Include="Microsoft.AspNetCore.SignalR.StackExchangeRedis" Version="$(MicrosoftAspNetCorePackageVersion)" /> |
||||
<PackageVersion Include="Microsoft.Bcl.AsyncInterfaces" Version="9.0.5" /> |
<PackageVersion Include="Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation" Version="$(MicrosoftAspNetCorePackageVersion)" /> |
||||
<PackageVersion Include="Microsoft.CSharp" Version="4.7.0" /> |
<PackageVersion Include="Microsoft.Bcl.AsyncInterfaces" Version="10.0.0" /> |
||||
<PackageVersion Include="Microsoft.EntityFrameworkCore.Design" Version="$(MicrosoftEntityFrameworkCorePackageVersion)" /> |
<PackageVersion Include="Microsoft.CSharp" Version="4.7.0" /> |
||||
<PackageVersion Include="Microsoft.EntityFrameworkCore.InMemory" Version="$(MicrosoftEntityFrameworkCorePackageVersion)" /> |
<PackageVersion Include="Microsoft.EntityFrameworkCore.Design" Version="$(MicrosoftEntityFrameworkCorePackageVersion)" /> |
||||
<PackageVersion Include="Microsoft.EntityFrameworkCore.Tools" Version="$(MicrosoftEntityFrameworkCorePackageVersion)" /> |
<PackageVersion Include="Microsoft.EntityFrameworkCore.InMemory" Version="$(MicrosoftEntityFrameworkCorePackageVersion)" /> |
||||
<PackageVersion Include="Microsoft.EntityFrameworkCore.Relational" Version="$(MicrosoftEntityFrameworkCorePackageVersion)" /> |
<PackageVersion Include="Microsoft.EntityFrameworkCore.Tools" Version="$(MicrosoftEntityFrameworkCorePackageVersion)" /> |
||||
<PackageVersion Include="Microsoft.Extensions.Caching.Memory" Version="$(MicrosoftExtensionsPackageVersion)" /> |
<PackageVersion Include="Microsoft.EntityFrameworkCore.Relational" Version="$(MicrosoftEntityFrameworkCorePackageVersion)" /> |
||||
<PackageVersion Include="Microsoft.Extensions.Configuration.UserSecrets" Version="$(MicrosoftExtensionsPackageVersion)" /> |
<PackageVersion Include="Microsoft.Extensions.Caching.Memory" Version="$(MicrosoftExtensionsPackageVersion)" /> |
||||
<PackageVersion Include="Microsoft.Extensions.Configuration.Binder" Version="$(MicrosoftExtensionsPackageVersion)" /> |
<PackageVersion Include="Microsoft.Extensions.Configuration.UserSecrets" Version="$(MicrosoftExtensionsPackageVersion)" /> |
||||
<PackageVersion Include="Microsoft.Extensions.FileProviders.Embedded" Version="$(MicrosoftExtensionsPackageVersion)" /> |
<PackageVersion Include="Microsoft.Extensions.Configuration.Binder" Version="$(MicrosoftExtensionsPackageVersion)" /> |
||||
<PackageVersion Include="Microsoft.Extensions.FileProviders.Physical" Version="$(MicrosoftExtensionsPackageVersion)" /> |
<PackageVersion Include="Microsoft.Extensions.FileProviders.Embedded" Version="$(MicrosoftExtensionsPackageVersion)" /> |
||||
<PackageVersion Include="Microsoft.Extensions.Http" Version="$(MicrosoftExtensionsPackageVersion)" /> |
<PackageVersion Include="Microsoft.Extensions.FileProviders.Physical" Version="$(MicrosoftExtensionsPackageVersion)" /> |
||||
<PackageVersion Include="Microsoft.Extensions.Http.Polly" Version="$(MicrosoftExtensionsPackageVersion)" /> |
<PackageVersion Include="Microsoft.Extensions.Http" Version="$(MicrosoftExtensionsPackageVersion)" /> |
||||
<PackageVersion Include="Microsoft.Extensions.Http.Resilience" Version="$(MicrosoftExtensionsPackageVersion)" /> |
<PackageVersion Include="Microsoft.Extensions.Http.Polly" Version="$(MicrosoftExtensionsPackageVersion)" /> |
||||
<PackageVersion Include="Microsoft.Extensions.Hosting" Version="$(MicrosoftExtensionsPackageVersion)" /> |
<PackageVersion Include="Microsoft.Extensions.Http.Resilience" Version="$(MicrosoftExtensionsPackageVersion)" /> |
||||
<PackageVersion Include="Microsoft.Extensions.Options" Version="$(MicrosoftExtensionsPackageVersion)" /> |
<PackageVersion Include="Microsoft.Extensions.Hosting" Version="$(MicrosoftExtensionsPackageVersion)" /> |
||||
<PackageVersion Include="Microsoft.Extensions.ServiceDiscovery" Version="$(MicrosoftExtensionsPackageVersion)" /> |
<PackageVersion Include="Microsoft.Extensions.Options" Version="$(MicrosoftExtensionsPackageVersion)" /> |
||||
<PackageVersion Include="Microsoft.CodeAnalysis.Common" Version="4.5.0" /> |
<PackageVersion Include="Microsoft.Extensions.ServiceDiscovery" Version="$(MicrosoftExtensionsPackageVersion)" /> |
||||
<PackageVersion Include="Microsoft.CodeAnalysis.CSharp" Version="4.5.0" /> |
<PackageVersion Include="Microsoft.CodeAnalysis.Common" Version="4.5.0" /> |
||||
<PackageVersion Include="MySql.EntityFrameworkCore" Version="9.0.6" /> |
<PackageVersion Include="Microsoft.CodeAnalysis.CSharp" Version="4.5.0" /> |
||||
<PackageVersion Include="Pomelo.EntityFrameworkCore.MySql" Version="9.0.0" /> |
<PackageVersion Include="MySql.EntityFrameworkCore" Version="10.0.0-rc" /> |
||||
<PackageVersion Include="Pomelo.EntityFrameworkCore.MySql.Json.Microsoft" Version="9.0.0" /> |
<PackageVersion Include="Pomelo.EntityFrameworkCore.MySql" Version="9.0.0" /> |
||||
</ItemGroup> |
<PackageVersion Include="Pomelo.EntityFrameworkCore.MySql.Json.Microsoft" Version="9.0.0" /> |
||||
<!-- Aspire --> |
</ItemGroup> |
||||
<ItemGroup> |
<!-- Aspire --> |
||||
<PackageVersion Include="Aspire.Hosting.Elasticsearch" Version="13.0.0" /> |
<ItemGroup> |
||||
<PackageVersion Include="Aspire.Hosting.JavaScript" Version="$(AspirePackageVersion)" /> |
<PackageVersion Include="Aspire.Hosting.Elasticsearch" Version="13.0.0" /> |
||||
<PackageVersion Include="Aspire.Hosting.MySql" Version="$(AspirePackageVersion)" /> |
<PackageVersion Include="Aspire.Hosting.JavaScript" Version="$(AspirePackageVersion)" /> |
||||
<PackageVersion Include="Aspire.Hosting.PostgreSQL" Version="$(AspirePackageVersion)" /> |
<PackageVersion Include="Aspire.Hosting.MySql" Version="$(AspirePackageVersion)" /> |
||||
<PackageVersion Include="Aspire.Hosting.RabbitMQ" Version="$(AspirePackageVersion)" /> |
<PackageVersion Include="Aspire.Hosting.PostgreSQL" Version="$(AspirePackageVersion)" /> |
||||
<PackageVersion Include="Aspire.Hosting.Redis" Version="$(AspirePackageVersion)" /> |
<PackageVersion Include="Aspire.Hosting.RabbitMQ" Version="$(AspirePackageVersion)" /> |
||||
<PackageVersion Include="Aspire.MySqlConnector" Version="$(AspirePackageVersion)" /> |
<PackageVersion Include="Aspire.Hosting.Redis" Version="$(AspirePackageVersion)" /> |
||||
<PackageVersion Include="Aspire.Pomelo.EntityFrameworkCore.MySql" Version="$(AspirePackageVersion)" /> |
<PackageVersion Include="Aspire.MySqlConnector" Version="$(AspirePackageVersion)" /> |
||||
<PackageVersion Include="Aspire.StackExchange.Redis" Version="$(AspirePackageVersion)" /> |
<PackageVersion Include="Aspire.Pomelo.EntityFrameworkCore.MySql" Version="$(AspirePackageVersion)" /> |
||||
<PackageVersion Include="Aspire.RabbitMQ.Client" Version="$(AspirePackageVersion)" /> |
<PackageVersion Include="Aspire.StackExchange.Redis" Version="$(AspirePackageVersion)" /> |
||||
<PackageVersion Include="Aspire.Elastic.Clients.Elasticsearch" Version="13.0.0" /> |
<PackageVersion Include="Aspire.RabbitMQ.Client" Version="$(AspirePackageVersion)" /> |
||||
</ItemGroup> |
<PackageVersion Include="Aspire.Elastic.Clients.Elasticsearch" Version="13.0.0" /> |
||||
<!-- Elsa --> |
</ItemGroup> |
||||
<ItemGroup> |
<!-- Elsa --> |
||||
<PackageVersion Include="Elsa" Version="$(ElsaPackageVersion)" /> |
<ItemGroup> |
||||
<PackageVersion Include="Elsa.Activities.Email" Version="$(ElsaPackageVersion)" /> |
<PackageVersion Include="Elsa" Version="$(ElsaPackageVersion)" /> |
||||
<PackageVersion Include="Elsa.Activities.Http" Version="$(ElsaPackageVersion)" /> |
<PackageVersion Include="Elsa.Activities.Email" Version="$(ElsaPackageVersion)" /> |
||||
<PackageVersion Include="Elsa.Activities.UserTask" Version="$(ElsaPackageVersion)" /> |
<PackageVersion Include="Elsa.Activities.Http" Version="$(ElsaPackageVersion)" /> |
||||
<PackageVersion Include="Elsa.Activities.Temporal.Quartz" Version="$(ElsaPackageVersion)" /> |
<PackageVersion Include="Elsa.Activities.UserTask" Version="$(ElsaPackageVersion)" /> |
||||
<PackageVersion Include="Elsa.Core" Version="$(ElsaPackageVersion)" /> |
<PackageVersion Include="Elsa.Activities.Temporal.Quartz" Version="$(ElsaPackageVersion)" /> |
||||
<PackageVersion Include="Elsa.Designer.Components.Web" Version="$(ElsaPackageVersion)" /> |
<PackageVersion Include="Elsa.Core" Version="$(ElsaPackageVersion)" /> |
||||
<PackageVersion Include="Elsa.Rebus.RabbitMq" Version="$(ElsaPackageVersion)" /> |
<PackageVersion Include="Elsa.Designer.Components.Web" Version="$(ElsaPackageVersion)" /> |
||||
<PackageVersion Include="Elsa.Server.Api" Version="$(ElsaPackageVersion)" /> |
<PackageVersion Include="Elsa.Rebus.RabbitMq" Version="$(ElsaPackageVersion)" /> |
||||
<PackageVersion Include="Elsa.Server.Authentication" Version="$(ElsaPackageVersion)" /> |
<PackageVersion Include="Elsa.Server.Api" Version="$(ElsaPackageVersion)" /> |
||||
<PackageVersion Include="Elsa.Webhooks.Api" Version="$(ElsaPackageVersion)" /> |
<PackageVersion Include="Elsa.Server.Authentication" Version="$(ElsaPackageVersion)" /> |
||||
<PackageVersion Include="Elsa.Webhooks.Persistence.EntityFramework.Core" Version="$(ElsaPackageVersion)" /> |
<PackageVersion Include="Elsa.Webhooks.Api" Version="$(ElsaPackageVersion)" /> |
||||
<PackageVersion Include="Elsa.WorkflowSettings.Persistence.EntityFramework.Core" Version="$(ElsaPackageVersion)" /> |
<PackageVersion Include="Elsa.Webhooks.Persistence.EntityFramework.Core" Version="$(ElsaPackageVersion)" /> |
||||
<PackageVersion Include="Elsa.Webhooks.Persistence.EntityFramework.MySql" Version="$(ElsaPackageVersion)" /> |
<PackageVersion Include="Elsa.WorkflowSettings.Persistence.EntityFramework.Core" Version="$(ElsaPackageVersion)" /> |
||||
<PackageVersion Include="Elsa.WorkflowSettings.Persistence.EntityFramework.MySql" Version="$(ElsaPackageVersion)" /> |
<PackageVersion Include="Elsa.Webhooks.Persistence.EntityFramework.MySql" Version="$(ElsaPackageVersion)" /> |
||||
<PackageVersion Include="Elsa.Webhooks.Persistence.EntityFramework.PostgreSql" Version="$(ElsaPackageVersion)" /> |
<PackageVersion Include="Elsa.WorkflowSettings.Persistence.EntityFramework.MySql" Version="$(ElsaPackageVersion)" /> |
||||
<PackageVersion Include="Elsa.WorkflowSettings.Persistence.EntityFramework.PostgreSql" Version="$(ElsaPackageVersion)" /> |
<PackageVersion Include="Elsa.Webhooks.Persistence.EntityFramework.PostgreSql" Version="$(ElsaPackageVersion)" /> |
||||
<PackageVersion Include="Elsa.Webhooks.Persistence.EntityFramework.SqlServer" Version="$(ElsaPackageVersion)" /> |
<PackageVersion Include="Elsa.WorkflowSettings.Persistence.EntityFramework.PostgreSql" Version="$(ElsaPackageVersion)" /> |
||||
<PackageVersion Include="Elsa.WorkflowSettings.Persistence.EntityFramework.SqlServer" Version="$(ElsaPackageVersion)" /> |
<PackageVersion Include="Elsa.Webhooks.Persistence.EntityFramework.SqlServer" Version="$(ElsaPackageVersion)" /> |
||||
</ItemGroup> |
<PackageVersion Include="Elsa.WorkflowSettings.Persistence.EntityFramework.SqlServer" Version="$(ElsaPackageVersion)" /> |
||||
<!-- Elsa Next--> |
</ItemGroup> |
||||
<ItemGroup> |
<!-- Elsa Next--> |
||||
<PackageVersion Include="Elsa.Api.Client" Version="$(ElsaNextPackageVersion)" /> |
<ItemGroup> |
||||
<PackageVersion Include="Elsa.Studio" Version="$(ElsaNextPackageVersion)" /> |
<PackageVersion Include="Elsa.Api.Client" Version="$(ElsaNextPackageVersion)" /> |
||||
<PackageVersion Include="Elsa.Studio.Core.BlazorServer" Version="$(ElsaNextPackageVersion)" /> |
<PackageVersion Include="Elsa.Studio" Version="$(ElsaNextPackageVersion)" /> |
||||
<PackageVersion Include="Elsa.Studio.Login.BlazorServer" Version="$(ElsaNextPackageVersion)" /> |
<PackageVersion Include="Elsa.Studio.Core.BlazorServer" Version="$(ElsaNextPackageVersion)" /> |
||||
<PackageVersion Include="Elsa.Studio.Localization.BlazorServer" Version="$(ElsaNextPackageVersion)" /> |
<PackageVersion Include="Elsa.Studio.Login.BlazorServer" Version="$(ElsaNextPackageVersion)" /> |
||||
<PackageVersion Include="Elsa.Studio.Core.BlazorWasm" Version="$(ElsaNextPackageVersion)" /> |
<PackageVersion Include="Elsa.Studio.Localization.BlazorServer" Version="$(ElsaNextPackageVersion)" /> |
||||
<PackageVersion Include="Elsa.Studio.Login.BlazorWasm" Version="$(ElsaNextPackageVersion)" /> |
<PackageVersion Include="Elsa.Studio.Core.BlazorWasm" Version="$(ElsaNextPackageVersion)" /> |
||||
<PackageVersion Include="Elsa.Studio.Translations" Version="$(ElsaNextPackageVersion)" /> |
<PackageVersion Include="Elsa.Studio.Login.BlazorWasm" Version="$(ElsaNextPackageVersion)" /> |
||||
<PackageVersion Include="Elsa.Studio.Agents" Version="$(ElsaNextPackageVersion)" /> |
<PackageVersion Include="Elsa.Studio.Translations" Version="$(ElsaNextPackageVersion)" /> |
||||
<PackageVersion Include="Microsoft.AspNetCore.Components.WebAssembly" Version="$(MicrosoftAspNetCorePackageVersion)" /> |
<PackageVersion Include="Elsa.Studio.Agents" Version="$(ElsaNextPackageVersion)" /> |
||||
<PackageVersion Include="Microsoft.AspNetCore.Components.WebAssembly.DevServer" Version="$(MicrosoftAspNetCorePackageVersion)" /> |
<PackageVersion Include="Microsoft.AspNetCore.Components.WebAssembly" Version="$(MicrosoftAspNetCorePackageVersion)" /> |
||||
<PackageVersion Include="Microsoft.AspNetCore.Components.WebAssembly.Server" Version="$(MicrosoftAspNetCorePackageVersion)" /> |
<PackageVersion Include="Microsoft.AspNetCore.Components.WebAssembly.DevServer" Version="$(MicrosoftAspNetCorePackageVersion)" /> |
||||
</ItemGroup> |
<PackageVersion Include="Microsoft.AspNetCore.Components.WebAssembly.Server" Version="$(MicrosoftAspNetCorePackageVersion)" /> |
||||
<!-- DotNetCore.CAP --> |
</ItemGroup> |
||||
<ItemGroup> |
<!-- DotNetCore.CAP --> |
||||
<PackageVersion Include="DotNetCore.CAP" Version="$(DotNetCoreCAPPackageVersion)" /> |
<ItemGroup> |
||||
<PackageVersion Include="DotNetCore.CAP.Dashboard" Version="$(DotNetCoreCAPPackageVersion)" /> |
<PackageVersion Include="DotNetCore.CAP" Version="$(DotNetCoreCAPPackageVersion)" /> |
||||
<PackageVersion Include="DotNetCore.CAP.MySql" Version="$(DotNetCoreCAPPackageVersion)" /> |
<PackageVersion Include="DotNetCore.CAP.Dashboard" Version="$(DotNetCoreCAPPackageVersion)" /> |
||||
<PackageVersion Include="DotNetCore.CAP.SqlServer" Version="$(DotNetCoreCAPPackageVersion)" /> |
<PackageVersion Include="DotNetCore.CAP.MySql" Version="$(DotNetCoreCAPPackageVersion)" /> |
||||
<PackageVersion Include="DotNetCore.CAP.PostgreSql" Version="$(DotNetCoreCAPPackageVersion)" /> |
<PackageVersion Include="DotNetCore.CAP.SqlServer" Version="$(DotNetCoreCAPPackageVersion)" /> |
||||
<PackageVersion Include="DotNetCore.CAP.OpenTelemetry" Version="$(DotNetCoreCAPPackageVersion)" /> |
<PackageVersion Include="DotNetCore.CAP.PostgreSql" Version="$(DotNetCoreCAPPackageVersion)" /> |
||||
<PackageVersion Include="DotNetCore.CAP.RabbitMQ" Version="$(DotNetCoreCAPPackageVersion)" /> |
<PackageVersion Include="DotNetCore.CAP.OpenTelemetry" Version="$(DotNetCoreCAPPackageVersion)" /> |
||||
<PackageVersion Include="DotNetCore.CAP.InMemoryStorage" Version="$(DotNetCoreCAPPackageVersion)" /> |
<PackageVersion Include="DotNetCore.CAP.RabbitMQ" Version="$(DotNetCoreCAPPackageVersion)" /> |
||||
<PackageVersion Include="DotNetCore.CAP.RedisStreams" Version="$(DotNetCoreCAPPackageVersion)" /> |
<PackageVersion Include="DotNetCore.CAP.InMemoryStorage" Version="$(DotNetCoreCAPPackageVersion)" /> |
||||
<PackageVersion Include="Savorboard.CAP.InMemoryMessageQueue" Version="$(DotNetCoreCAPPackageVersion)" /> |
<PackageVersion Include="DotNetCore.CAP.RedisStreams" Version="$(DotNetCoreCAPPackageVersion)" /> |
||||
</ItemGroup> |
<PackageVersion Include="Savorboard.CAP.InMemoryMessageQueue" Version="$(DotNetCoreCAPPackageVersion)" /> |
||||
<!-- Serilog --> |
</ItemGroup> |
||||
<ItemGroup> |
<!-- Serilog --> |
||||
<PackageVersion Include="Serilog" Version="4.2.0" /> |
<ItemGroup> |
||||
<PackageVersion Include="Serilog.AspNetCore" Version="9.0.0" /> |
<PackageVersion Include="Serilog" Version="4.3.0" /> |
||||
<PackageVersion Include="Serilog.Enrichers.Environment" Version="3.0.1" /> |
<PackageVersion Include="Serilog.AspNetCore" Version="9.0.0" /> |
||||
<PackageVersion Include="Serilog.Enrichers.Assembly" Version="2.0.0" /> |
<PackageVersion Include="Serilog.Enrichers.Environment" Version="3.0.1" /> |
||||
<PackageVersion Include="Serilog.Enrichers.Process" Version="3.0.0" /> |
<PackageVersion Include="Serilog.Enrichers.Assembly" Version="2.0.0" /> |
||||
<PackageVersion Include="Serilog.Enrichers.Thread" Version="4.0.0" /> |
<PackageVersion Include="Serilog.Enrichers.Process" Version="3.0.0" /> |
||||
<PackageVersion Include="Serilog.Extensions.Hosting" Version="9.0.0" /> |
<PackageVersion Include="Serilog.Enrichers.Thread" Version="4.0.0" /> |
||||
<PackageVersion Include="Serilog.Extensions.Logging" Version="9.0.1" /> |
<PackageVersion Include="Serilog.Extensions.Hosting" Version="9.0.0" /> |
||||
<PackageVersion Include="Serilog.Settings.Configuration" Version="9.0.0" /> |
<PackageVersion Include="Serilog.Extensions.Logging" Version="9.0.1" /> |
||||
<PackageVersion Include="Serilog.Sinks.Async" Version="2.1.0" /> |
<PackageVersion Include="Serilog.Settings.Configuration" Version="9.0.0" /> |
||||
<PackageVersion Include="Serilog.Sinks.Console" Version="6.0.0" /> |
<PackageVersion Include="Serilog.Sinks.Async" Version="2.1.0" /> |
||||
<PackageVersion Include="Serilog.Sinks.Elasticsearch" Version="9.0.3" /> |
<PackageVersion Include="Serilog.Sinks.Console" Version="6.0.0" /> |
||||
<PackageVersion Include="Serilog.Sinks.File" Version="7.0.0" /> |
<PackageVersion Include="Serilog.Sinks.Elasticsearch" Version="9.0.3" /> |
||||
<PackageVersion Include="Serilog.Sinks.OpenTelemetry" Version="4.0.0-dev-00313" /> |
<PackageVersion Include="Serilog.Sinks.File" Version="7.0.0" /> |
||||
</ItemGroup> |
<PackageVersion Include="Serilog.Sinks.OpenTelemetry" Version="4.0.0-dev-00313" /> |
||||
<!-- OpenTelemetry --> |
</ItemGroup> |
||||
<ItemGroup> |
<!-- OpenTelemetry --> |
||||
<PackageVersion Include="OpenTelemetry.Extensions.Hosting" Version="1.14.0" /> |
<ItemGroup> |
||||
<PackageVersion Include="OpenTelemetry.Exporter.Console" Version="1.14.0" /> |
<PackageVersion Include="OpenTelemetry.Extensions.Hosting" Version="1.14.0" /> |
||||
<PackageVersion Include="OpenTelemetry.Exporter.OpenTelemetryProtocol" Version="1.14.0" /> |
<PackageVersion Include="OpenTelemetry.Exporter.Console" Version="1.14.0" /> |
||||
<PackageVersion Include="OpenTelemetry.Exporter.Zipkin" Version="1.14.0" /> |
<PackageVersion Include="OpenTelemetry.Exporter.OpenTelemetryProtocol" Version="1.14.0" /> |
||||
<PackageVersion Include="OpenTelemetry.Instrumentation.AspNetCore" Version="1.14.0" /> |
<PackageVersion Include="OpenTelemetry.Exporter.Zipkin" Version="1.14.0" /> |
||||
<PackageVersion Include="OpenTelemetry.Instrumentation.Http" Version="1.14.0" /> |
<PackageVersion Include="OpenTelemetry.Instrumentation.AspNetCore" Version="1.14.0" /> |
||||
<PackageVersion Include="OpenTelemetry.Instrumentation.EntityFrameworkCore" Version="1.14.0-beta.2" /> |
<PackageVersion Include="OpenTelemetry.Instrumentation.Http" Version="1.14.0" /> |
||||
<PackageVersion Include="OpenTelemetry.Instrumentation.Quartz" Version="1.14.0-beta.2" /> |
<PackageVersion Include="OpenTelemetry.Instrumentation.EntityFrameworkCore" Version="1.14.0-beta.2" /> |
||||
<PackageVersion Include="OpenTelemetry.Instrumentation.Runtime" Version="1.14.0" /> |
<PackageVersion Include="OpenTelemetry.Instrumentation.Quartz" Version="1.14.0-beta.2" /> |
||||
<PackageVersion Include="OpenTelemetry.Instrumentation.SqlClient" Version="1.14.0-beta.1" /> |
<PackageVersion Include="OpenTelemetry.Instrumentation.Runtime" Version="1.14.0" /> |
||||
</ItemGroup> |
<PackageVersion Include="OpenTelemetry.Instrumentation.SqlClient" Version="1.14.0-beta.1" /> |
||||
<!-- Test --> |
</ItemGroup> |
||||
<ItemGroup> |
<!-- Rebus--> |
||||
<PackageVersion Include="coverlet.collector" Version="6.0.4" /> |
<ItemGroup> |
||||
<PackageVersion Include="Microsoft.NET.Test.Sdk" Version="17.13.0" /> |
<PackageVersion Include="Rebus.Microsoft.Extensions.Logging" Version="5.2.0" /> |
||||
<PackageVersion Include="Moq.AutoMock" Version="3.5.0" /> |
<PackageVersion Include="Rebus.ServiceProvider" Version="10.7.1" /> |
||||
<PackageVersion Include="NSubstitute" Version="5.3.0" /> |
</ItemGroup> |
||||
<PackageVersion Include="Shouldly" Version="4.3.0" /> |
<!-- Test --> |
||||
<PackageVersion Include="xunit" Version="2.9.3" /> |
<ItemGroup> |
||||
<PackageVersion Include="xunit.extensibility.execution" Version="2.9.3" /> |
<PackageVersion Include="coverlet.collector" Version="6.0.4" /> |
||||
<PackageVersion Include="xunit.runner.visualstudio" Version="3.0.2" /> |
<PackageVersion Include="Microsoft.NET.Test.Sdk" Version="17.14.1" /> |
||||
</ItemGroup> |
<PackageVersion Include="Moq.AutoMock" Version="3.5.0" /> |
||||
<!-- Fody --> |
<PackageVersion Include="NSubstitute" Version="5.3.0" /> |
||||
<ItemGroup> |
<PackageVersion Include="Shouldly" Version="4.3.0" /> |
||||
<PackageVersion Include="ConfigureAwait.Fody" Version="3.3.2" /> |
<PackageVersion Include="xunit" Version="2.9.3" /> |
||||
<PackageVersion Include="Fody" Version="6.9.2" /> |
<PackageVersion Include="xunit.extensibility.execution" Version="2.9.3" /> |
||||
</ItemGroup> |
<PackageVersion Include="xunit.runner.visualstudio" Version="3.1.4" /> |
||||
<!-- DataBase --> |
</ItemGroup> |
||||
<ItemGroup> |
<!-- Fody --> |
||||
<PackageVersion Include="MySqlConnector" Version="2.4.0" /> |
<ItemGroup> |
||||
<PackageVersion Include="Oracle.ManagedDataAccess.Core" Version="23.6.1" /> |
<PackageVersion Include="ConfigureAwait.Fody" Version="3.3.2" /> |
||||
<PackageVersion Include="Npgsql" Version="9.0.3" /> |
<PackageVersion Include="Fody" Version="6.9.3" /> |
||||
<PackageVersion Include="Microsoft.Data.SqlClient" Version="5.1.6" /> |
</ItemGroup> |
||||
<PackageVersion Include="Microsoft.Data.Sqlite.Core" Version="9.0.5" /> |
<!-- DataBase --> |
||||
</ItemGroup> |
<ItemGroup> |
||||
<!-- Other --> |
<PackageVersion Include="MySqlConnector" Version="2.4.0" /> |
||||
<ItemGroup> |
<PackageVersion Include="Oracle.ManagedDataAccess.Core" Version="23.6.1" /> |
||||
<PackageVersion Include="AspNet.Security.OAuth.Bilibili" Version="9.4.0" /> |
<PackageVersion Include="Npgsql" Version="10.0.0" /> |
||||
<PackageVersion Include="AspNet.Security.OAuth.GitHub" Version="9.4.0" /> |
<PackageVersion Include="Microsoft.Data.SqlClient" Version="6.1.1" /> |
||||
<PackageVersion Include="AspNet.Security.OAuth.QQ" Version="9.4.0" /> |
<PackageVersion Include="Microsoft.Data.Sqlite.Core" Version="10.0.0" /> |
||||
<PackageVersion Include="AspNet.Security.OAuth.Weixin" Version="9.4.0" /> |
</ItemGroup> |
||||
<PackageVersion Include="AspNet.Security.OAuth.WorkWeixin" Version="9.4.0" /> |
<!-- Other --> |
||||
<PackageVersion Include="Microsoft.AspNetCore.Authentication.Google" Version="$(MicrosoftAspNetCorePackageVersion)" /> |
<ItemGroup> |
||||
<PackageVersion Include="Microsoft.AspNetCore.Authentication.MicrosoftAccount" Version="$(MicrosoftAspNetCorePackageVersion)" /> |
<PackageVersion Include="AspNet.Security.OAuth.Bilibili" Version="10.0.0" /> |
||||
<PackageVersion Include="Microsoft.AspNetCore.Authentication.Twitter" Version="$(MicrosoftAspNetCorePackageVersion)" /> |
<PackageVersion Include="AspNet.Security.OAuth.GitHub" Version="10.0.0" /> |
||||
<PackageVersion Include="Microsoft.IdentityModel.Tokens" Version="8.12.0" /> |
<PackageVersion Include="AspNet.Security.OAuth.QQ" Version="10.0.0" /> |
||||
<PackageVersion Include="aliyun-net-sdk-core" Version="1.5.10" /> |
<PackageVersion Include="AspNet.Security.OAuth.Weixin" Version="10.0.0" /> |
||||
<PackageVersion Include="Aliyun.OSS.SDK.NetCore" Version="2.14.1" /> |
<PackageVersion Include="AspNet.Security.OAuth.WorkWeixin" Version="10.0.0" /> |
||||
<PackageVersion Include="AgileConfig.Client" Version="1.6.9" /> |
<PackageVersion Include="Microsoft.AspNetCore.Authentication.Google" Version="$(MicrosoftAspNetCorePackageVersion)" /> |
||||
<PackageVersion Include="CommonMark.NET" Version="0.15.1" /> |
<PackageVersion Include="Microsoft.AspNetCore.Authentication.MicrosoftAccount" Version="$(MicrosoftAspNetCorePackageVersion)" /> |
||||
<PackageVersion Include="Elastic.Apm.NetCoreAll" Version="1.31.0" /> |
<PackageVersion Include="Microsoft.AspNetCore.Authentication.Twitter" Version="$(MicrosoftAspNetCorePackageVersion)" /> |
||||
<PackageVersion Include="BouncyCastle.Cryptography" Version="2.5.0" /> |
<PackageVersion Include="Microsoft.IdentityModel.Tokens" Version="8.14.0" /> |
||||
<PackageVersion Include="Dapr.Client" Version="1.15.4" /> |
<PackageVersion Include="aliyun-net-sdk-core" Version="1.6.2" /> |
||||
<PackageVersion Include="Dapr.Actors" Version="1.15.4" /> |
<PackageVersion Include="Aliyun.OSS.SDK.NetCore" Version="2.14.1" /> |
||||
<PackageVersion Include="Dapr.Actors.AspNetCore" Version="1.15.4" /> |
<PackageVersion Include="AgileConfig.Client" Version="1.8.0" /> |
||||
<PackageVersion Include="DistributedLock.Core" Version="1.0.8" /> |
<PackageVersion Include="CommonMark.NET" Version="0.15.1" /> |
||||
<PackageVersion Include="DistributedLock.Redis" Version="1.0.3" /> |
<PackageVersion Include="Elastic.Apm.NetCoreAll" Version="1.34.1" /> |
||||
<PackageVersion Include="Hangfire.MySqlStorage" Version="2.0.3" /> |
<PackageVersion Include="BouncyCastle.Cryptography" Version="2.6.2" /> |
||||
<PackageVersion Include="HangFire.SqlServer" Version="1.8.18" /> |
<PackageVersion Include="Dapr.Client" Version="1.16.0" /> |
||||
<PackageVersion Include="IdentityModel" Version="7.0.0" /> |
<PackageVersion Include="Dapr.Actors" Version="1.16.0" /> |
||||
<PackageVersion Include="IP2Region.Net" Version="2.0.2" /> |
<PackageVersion Include="Dapr.Actors.AspNetCore" Version="1.16.0" /> |
||||
<PackageVersion Include="JetBrains.Annotations" Version="2024.3.0" /> |
<PackageVersion Include="DistributedLock.Core" Version="1.0.8" /> |
||||
<PackageVersion Include="Magicodes.IE.Excel" Version="2.7.5.2" /> |
<PackageVersion Include="DistributedLock.Redis" Version="1.1.0" /> |
||||
<PackageVersion Include="Markdig" Version="0.34.0" /> |
<PackageVersion Include="Hangfire.MySqlStorage" Version="2.0.3" /> |
||||
<PackageVersion Include="MiniExcel" Version="1.34.2" /> |
<PackageVersion Include="HangFire.SqlServer" Version="1.8.21" /> |
||||
<PackageVersion Include="Newtonsoft.Json" Version="13.0.3" /> |
<PackageVersion Include="IdentityModel" Version="7.0.0" /> |
||||
<PackageVersion Include="NEST" Version="7.17.5" /> |
<PackageVersion Include="IP2Region.Net" Version="3.0.0" /> |
||||
<PackageVersion Include="NRules" Version="0.9.2" /> |
<PackageVersion Include="JetBrains.Annotations" Version="2025.2.2" /> |
||||
<PackageVersion Include="Ocelot.Provider.Polly" Version="20.0.0" /> |
<PackageVersion Include="Magicodes.IE.Excel" Version="2.8.2" /> |
||||
<PackageVersion Include="OpenIddict.Server.DataProtection" Version="6.4.0" /> |
<PackageVersion Include="Markdig" Version="0.44.0" /> |
||||
<PackageVersion Include="OpenIddict.Validation.DataProtection" Version="6.4.0" /> |
<PackageVersion Include="MiniExcel" Version="1.42.0" /> |
||||
<PackageVersion Include="Polly" Version="8.5.2" /> |
<PackageVersion Include="Newtonsoft.Json" Version="13.0.4" /> |
||||
<PackageVersion Include="QRCoder" Version="1.5.1" /> |
<PackageVersion Include="NEST" Version="7.17.5" /> |
||||
<PackageVersion Include="Quartz.Serialization.Json" Version="3.14.0" /> |
<PackageVersion Include="Elastic.Clients.Elasticsearch" Version="8.19.4" /> |
||||
<PackageVersion Include="Rebus.RabbitMq" Version="10.0.1" /> |
<PackageVersion Include="NRules" Version="0.9.2" /> |
||||
<PackageVersion Include="RulesEngine" Version="5.0.5" /> |
<PackageVersion Include="Ocelot.Provider.Polly" Version="20.0.0" /> |
||||
<PackageVersion Include="Scriban" Version="6.2.1" /> |
<PackageVersion Include="OpenIddict.Server.DataProtection" Version="7.2.0" /> |
||||
<PackageVersion Include="Senparc.Weixin.MP" Version="16.18.9" /> |
<PackageVersion Include="OpenIddict.Validation.DataProtection" Version="7.2.0" /> |
||||
<PackageVersion Include="SkyApm.Agent.Hosting" Version="2.2.0" /> |
<PackageVersion Include="Polly" Version="8.6.3" /> |
||||
<PackageVersion Include="SkyApm.Diagnostics.AspNetCore" Version="2.2.0" /> |
<PackageVersion Include="QRCoder" Version="1.5.1" /> |
||||
<PackageVersion Include="SkyAPM.Diagnostics.CAP" Version="2.2.0" /> |
<PackageVersion Include="Quartz.Serialization.Json" Version="3.15.0" /> |
||||
<PackageVersion Include="SixLabors.ImageSharp" Version="3.1.8" /> |
<PackageVersion Include="Rebus.RabbitMq" Version="10.0.1" /> |
||||
<PackageVersion Include="SixLabors.ImageSharp.Drawing" Version="2.1.6" /> |
<PackageVersion Include="RulesEngine" Version="5.0.5" /> |
||||
<PackageVersion Include="StackExchange.Redis" Version="2.8.31" /> |
<PackageVersion Include="Scriban" Version="6.3.0" /> |
||||
<PackageVersion Include="Spire.XLS" Version="15.5.1" /> |
<PackageVersion Include="Senparc.Weixin.MP" Version="16.18.9" /> |
||||
<PackageVersion Include="Swashbuckle.AspNetCore" Version="8.1.1" /> |
<PackageVersion Include="SkyApm.Agent.Hosting" Version="2.2.0" /> |
||||
<PackageVersion Include="System.ComponentModel.Annotations" Version="5.0.0" /> |
<PackageVersion Include="SkyApm.Diagnostics.AspNetCore" Version="2.2.0" /> |
||||
<PackageVersion Include="Tencent.QCloud.Cos.Sdk" Version="5.4.37" /> |
<PackageVersion Include="SkyAPM.Diagnostics.CAP" Version="2.2.0" /> |
||||
<PackageVersion Include="TencentCloudSDK" Version="3.0.712" /> |
<PackageVersion Include="SixLabors.ImageSharp" Version="3.1.11" /> |
||||
<PackageVersion Include="Yarp.ReverseProxy" Version="2.1.0" /> |
<PackageVersion Include="SixLabors.ImageSharp.Drawing" Version="2.1.7" /> |
||||
<PackageVersion Include="Yarp.Telemetry.Consumption" Version="2.1.0" /> |
<PackageVersion Include="StackExchange.Redis" Version="2.9.17" /> |
||||
</ItemGroup> |
<PackageVersion Include="Spire.XLS" Version="15.12.0" /> |
||||
</Project> |
<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": { |
"ConnectionStrings": { |
||||
"Default": "Host=127.0.0.1;Database=abp;Username=postgres;Password=123456" |
"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", |
"name": "my-app-authserver", |
||||
"private": true, |
"private": true, |
||||
"dependencies": { |
"dependencies": { |
||||
"@abp/aspnetcore.mvc.ui.theme.leptonxlite": "4.3.6", |
"@abp/aspnetcore.mvc.ui.theme.leptonxlite": "5.0.2", |
||||
"@abp/qrcode": "9.3.6" |
"@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