199 changed files with 9841 additions and 16 deletions
@ -0,0 +1,118 @@ |
|||||
|
|
||||
|
Microsoft Visual Studio Solution File, Format Version 12.00 |
||||
|
# Visual Studio Version 16 |
||||
|
VisualStudioVersion = 16.0.29001.49 |
||||
|
MinimumVisualStudioVersion = 10.0.40219.1 |
||||
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Lion.AbpPro.BasicManagement.Domain.Shared", "src\Lion.AbpPro.BasicManagement.Domain.Shared\Lion.AbpPro.BasicManagement.Domain.Shared.csproj", "{D64C1577-4929-4B60-939E-96DE1534891A}" |
||||
|
EndProject |
||||
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Lion.AbpPro.BasicManagement.Domain", "src\Lion.AbpPro.BasicManagement.Domain\Lion.AbpPro.BasicManagement.Domain.csproj", "{F2840BC7-0188-4606-9126-DADD0F5ABF7A}" |
||||
|
EndProject |
||||
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Lion.AbpPro.BasicManagement.Application.Contracts", "src\Lion.AbpPro.BasicManagement.Application.Contracts\Lion.AbpPro.BasicManagement.Application.Contracts.csproj", "{BD65D04F-08D5-40C1-8C24-77CA0BACB877}" |
||||
|
EndProject |
||||
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Lion.AbpPro.BasicManagement.Application", "src\Lion.AbpPro.BasicManagement.Application\Lion.AbpPro.BasicManagement.Application.csproj", "{78040F9E-3501-4A40-82DF-00A597710F35}" |
||||
|
EndProject |
||||
|
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{649A3FFA-182F-4E56-9717-E6A9A2BEC545}" |
||||
|
EndProject |
||||
|
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "test", "test", "{CCD2960C-23CC-4AB4-B84D-60C7AAA52F4D}" |
||||
|
EndProject |
||||
|
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "host", "host", "{E400416D-2895-4512-9D17-90681EEC7E0A}" |
||||
|
EndProject |
||||
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Lion.AbpPro.BasicManagement.EntityFrameworkCore", "src\Lion.AbpPro.BasicManagement.EntityFrameworkCore\Lion.AbpPro.BasicManagement.EntityFrameworkCore.csproj", "{0CE86223-D31D-4315-A1F5-87BA3EE1B844}" |
||||
|
EndProject |
||||
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Lion.AbpPro.BasicManagement.HttpApi", "src\Lion.AbpPro.BasicManagement.HttpApi\Lion.AbpPro.BasicManagement.HttpApi.csproj", "{077AA5F8-8B61-420C-A6B5-0150A66FDB34}" |
||||
|
EndProject |
||||
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Lion.AbpPro.BasicManagement.HttpApi.Client", "src\Lion.AbpPro.BasicManagement.HttpApi.Client\Lion.AbpPro.BasicManagement.HttpApi.Client.csproj", "{36E2735F-CEAB-44C8-A6D1-2CDAFF399751}" |
||||
|
EndProject |
||||
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Lion.AbpPro.BasicManagement.TestBase", "test\Lion.AbpPro.BasicManagement.TestBase\Lion.AbpPro.BasicManagement.TestBase.csproj", "{C5BB573D-3030-4BCB-88B7-F6A85C32766C}" |
||||
|
EndProject |
||||
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Lion.AbpPro.BasicManagement.EntityFrameworkCore.Tests", "test\Lion.AbpPro.BasicManagement.EntityFrameworkCore.Tests\Lion.AbpPro.BasicManagement.EntityFrameworkCore.Tests.csproj", "{527F645C-C1FC-406E-8479-81386C8ECF13}" |
||||
|
EndProject |
||||
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Lion.AbpPro.BasicManagement.Domain.Tests", "test\Lion.AbpPro.BasicManagement.Domain.Tests\Lion.AbpPro.BasicManagement.Domain.Tests.csproj", "{E60895E5-79C4-447D-88B7-85CB5BA336A4}" |
||||
|
EndProject |
||||
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Lion.AbpPro.BasicManagement.Application.Tests", "test\Lion.AbpPro.BasicManagement.Application.Tests\Lion.AbpPro.BasicManagement.Application.Tests.csproj", "{90CB5DC4-C040-45C7-8900-9688B26405BC}" |
||||
|
EndProject |
||||
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Lion.AbpPro.BasicManagement.HttpApi.Host", "host\Lion.AbpPro.BasicManagement.HttpApi.Host\Lion.AbpPro.BasicManagement.HttpApi.Host.csproj", "{37B135B0-DAFE-4616-B25C-1BDF32FC44A2}" |
||||
|
EndProject |
||||
|
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Lion.AbpPro.BasicManagement.HttpApi.Client.ConsoleTestApp", "test\Lion.AbpPro.BasicManagement.HttpApi.Client.ConsoleTestApp\Lion.AbpPro.BasicManagement.HttpApi.Client.ConsoleTestApp.csproj", "{1EDCD6D4-DF3A-4E3B-ABB6-C0D0B373EAB8}" |
||||
|
EndProject |
||||
|
Global |
||||
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution |
||||
|
Debug|Any CPU = Debug|Any CPU |
||||
|
Release|Any CPU = Release|Any CPU |
||||
|
EndGlobalSection |
||||
|
GlobalSection(ProjectConfigurationPlatforms) = postSolution |
||||
|
{D64C1577-4929-4B60-939E-96DE1534891A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
||||
|
{D64C1577-4929-4B60-939E-96DE1534891A}.Debug|Any CPU.Build.0 = Debug|Any CPU |
||||
|
{D64C1577-4929-4B60-939E-96DE1534891A}.Release|Any CPU.ActiveCfg = Release|Any CPU |
||||
|
{D64C1577-4929-4B60-939E-96DE1534891A}.Release|Any CPU.Build.0 = Release|Any CPU |
||||
|
{F2840BC7-0188-4606-9126-DADD0F5ABF7A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
||||
|
{F2840BC7-0188-4606-9126-DADD0F5ABF7A}.Debug|Any CPU.Build.0 = Debug|Any CPU |
||||
|
{F2840BC7-0188-4606-9126-DADD0F5ABF7A}.Release|Any CPU.ActiveCfg = Release|Any CPU |
||||
|
{F2840BC7-0188-4606-9126-DADD0F5ABF7A}.Release|Any CPU.Build.0 = Release|Any CPU |
||||
|
{BD65D04F-08D5-40C1-8C24-77CA0BACB877}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
||||
|
{BD65D04F-08D5-40C1-8C24-77CA0BACB877}.Debug|Any CPU.Build.0 = Debug|Any CPU |
||||
|
{BD65D04F-08D5-40C1-8C24-77CA0BACB877}.Release|Any CPU.ActiveCfg = Release|Any CPU |
||||
|
{BD65D04F-08D5-40C1-8C24-77CA0BACB877}.Release|Any CPU.Build.0 = Release|Any CPU |
||||
|
{78040F9E-3501-4A40-82DF-00A597710F35}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
||||
|
{78040F9E-3501-4A40-82DF-00A597710F35}.Debug|Any CPU.Build.0 = Debug|Any CPU |
||||
|
{78040F9E-3501-4A40-82DF-00A597710F35}.Release|Any CPU.ActiveCfg = Release|Any CPU |
||||
|
{78040F9E-3501-4A40-82DF-00A597710F35}.Release|Any CPU.Build.0 = Release|Any CPU |
||||
|
{0CE86223-D31D-4315-A1F5-87BA3EE1B844}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
||||
|
{0CE86223-D31D-4315-A1F5-87BA3EE1B844}.Debug|Any CPU.Build.0 = Debug|Any CPU |
||||
|
{0CE86223-D31D-4315-A1F5-87BA3EE1B844}.Release|Any CPU.ActiveCfg = Release|Any CPU |
||||
|
{0CE86223-D31D-4315-A1F5-87BA3EE1B844}.Release|Any CPU.Build.0 = Release|Any CPU |
||||
|
{077AA5F8-8B61-420C-A6B5-0150A66FDB34}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
||||
|
{077AA5F8-8B61-420C-A6B5-0150A66FDB34}.Debug|Any CPU.Build.0 = Debug|Any CPU |
||||
|
{077AA5F8-8B61-420C-A6B5-0150A66FDB34}.Release|Any CPU.ActiveCfg = Release|Any CPU |
||||
|
{077AA5F8-8B61-420C-A6B5-0150A66FDB34}.Release|Any CPU.Build.0 = Release|Any CPU |
||||
|
{36E2735F-CEAB-44C8-A6D1-2CDAFF399751}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
||||
|
{36E2735F-CEAB-44C8-A6D1-2CDAFF399751}.Debug|Any CPU.Build.0 = Debug|Any CPU |
||||
|
{36E2735F-CEAB-44C8-A6D1-2CDAFF399751}.Release|Any CPU.ActiveCfg = Release|Any CPU |
||||
|
{36E2735F-CEAB-44C8-A6D1-2CDAFF399751}.Release|Any CPU.Build.0 = Release|Any CPU |
||||
|
{C5BB573D-3030-4BCB-88B7-F6A85C32766C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
||||
|
{C5BB573D-3030-4BCB-88B7-F6A85C32766C}.Debug|Any CPU.Build.0 = Debug|Any CPU |
||||
|
{C5BB573D-3030-4BCB-88B7-F6A85C32766C}.Release|Any CPU.ActiveCfg = Release|Any CPU |
||||
|
{C5BB573D-3030-4BCB-88B7-F6A85C32766C}.Release|Any CPU.Build.0 = Release|Any CPU |
||||
|
{527F645C-C1FC-406E-8479-81386C8ECF13}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
||||
|
{527F645C-C1FC-406E-8479-81386C8ECF13}.Debug|Any CPU.Build.0 = Debug|Any CPU |
||||
|
{527F645C-C1FC-406E-8479-81386C8ECF13}.Release|Any CPU.ActiveCfg = Release|Any CPU |
||||
|
{527F645C-C1FC-406E-8479-81386C8ECF13}.Release|Any CPU.Build.0 = Release|Any CPU |
||||
|
{E60895E5-79C4-447D-88B7-85CB5BA336A4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
||||
|
{E60895E5-79C4-447D-88B7-85CB5BA336A4}.Debug|Any CPU.Build.0 = Debug|Any CPU |
||||
|
{E60895E5-79C4-447D-88B7-85CB5BA336A4}.Release|Any CPU.ActiveCfg = Release|Any CPU |
||||
|
{E60895E5-79C4-447D-88B7-85CB5BA336A4}.Release|Any CPU.Build.0 = Release|Any CPU |
||||
|
{90CB5DC4-C040-45C7-8900-9688B26405BC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
||||
|
{90CB5DC4-C040-45C7-8900-9688B26405BC}.Debug|Any CPU.Build.0 = Debug|Any CPU |
||||
|
{90CB5DC4-C040-45C7-8900-9688B26405BC}.Release|Any CPU.ActiveCfg = Release|Any CPU |
||||
|
{90CB5DC4-C040-45C7-8900-9688B26405BC}.Release|Any CPU.Build.0 = Release|Any CPU |
||||
|
{37B135B0-DAFE-4616-B25C-1BDF32FC44A2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
||||
|
{37B135B0-DAFE-4616-B25C-1BDF32FC44A2}.Debug|Any CPU.Build.0 = Debug|Any CPU |
||||
|
{37B135B0-DAFE-4616-B25C-1BDF32FC44A2}.Release|Any CPU.ActiveCfg = Release|Any CPU |
||||
|
{37B135B0-DAFE-4616-B25C-1BDF32FC44A2}.Release|Any CPU.Build.0 = Release|Any CPU |
||||
|
{1EDCD6D4-DF3A-4E3B-ABB6-C0D0B373EAB8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU |
||||
|
{1EDCD6D4-DF3A-4E3B-ABB6-C0D0B373EAB8}.Debug|Any CPU.Build.0 = Debug|Any CPU |
||||
|
{1EDCD6D4-DF3A-4E3B-ABB6-C0D0B373EAB8}.Release|Any CPU.ActiveCfg = Release|Any CPU |
||||
|
{1EDCD6D4-DF3A-4E3B-ABB6-C0D0B373EAB8}.Release|Any CPU.Build.0 = Release|Any CPU |
||||
|
EndGlobalSection |
||||
|
GlobalSection(SolutionProperties) = preSolution |
||||
|
HideSolutionNode = FALSE |
||||
|
EndGlobalSection |
||||
|
GlobalSection(NestedProjects) = preSolution |
||||
|
{D64C1577-4929-4B60-939E-96DE1534891A} = {649A3FFA-182F-4E56-9717-E6A9A2BEC545} |
||||
|
{F2840BC7-0188-4606-9126-DADD0F5ABF7A} = {649A3FFA-182F-4E56-9717-E6A9A2BEC545} |
||||
|
{BD65D04F-08D5-40C1-8C24-77CA0BACB877} = {649A3FFA-182F-4E56-9717-E6A9A2BEC545} |
||||
|
{78040F9E-3501-4A40-82DF-00A597710F35} = {649A3FFA-182F-4E56-9717-E6A9A2BEC545} |
||||
|
{0CE86223-D31D-4315-A1F5-87BA3EE1B844} = {649A3FFA-182F-4E56-9717-E6A9A2BEC545} |
||||
|
{077AA5F8-8B61-420C-A6B5-0150A66FDB34} = {649A3FFA-182F-4E56-9717-E6A9A2BEC545} |
||||
|
{36E2735F-CEAB-44C8-A6D1-2CDAFF399751} = {649A3FFA-182F-4E56-9717-E6A9A2BEC545} |
||||
|
{C5BB573D-3030-4BCB-88B7-F6A85C32766C} = {CCD2960C-23CC-4AB4-B84D-60C7AAA52F4D} |
||||
|
{527F645C-C1FC-406E-8479-81386C8ECF13} = {CCD2960C-23CC-4AB4-B84D-60C7AAA52F4D} |
||||
|
{E60895E5-79C4-447D-88B7-85CB5BA336A4} = {CCD2960C-23CC-4AB4-B84D-60C7AAA52F4D} |
||||
|
{90CB5DC4-C040-45C7-8900-9688B26405BC} = {CCD2960C-23CC-4AB4-B84D-60C7AAA52F4D} |
||||
|
{37B135B0-DAFE-4616-B25C-1BDF32FC44A2} = {E400416D-2895-4512-9D17-90681EEC7E0A} |
||||
|
{1EDCD6D4-DF3A-4E3B-ABB6-C0D0B373EAB8} = {CCD2960C-23CC-4AB4-B84D-60C7AAA52F4D} |
||||
|
EndGlobalSection |
||||
|
GlobalSection(ExtensibilityGlobals) = postSolution |
||||
|
SolutionGuid = {4324B3B4-B60B-4E3C-91D8-59576B4E26DD} |
||||
|
EndGlobalSection |
||||
|
EndGlobal |
||||
@ -0,0 +1,223 @@ |
|||||
|
using System.Text; |
||||
|
using Microsoft.AspNetCore.Authentication.JwtBearer; |
||||
|
using Microsoft.AspNetCore.DataProtection; |
||||
|
using Lion.AbpPro.BasicManagement.EntityFrameworkCore; |
||||
|
using Lion.AbpPro.Shared.Hosting.Microservices; |
||||
|
using Lion.AbpPro.Shared.Hosting.Microservices.Swaggers; |
||||
|
using Microsoft.AspNetCore.Mvc; |
||||
|
using Microsoft.IdentityModel.Tokens; |
||||
|
using StackExchange.Redis; |
||||
|
using Microsoft.OpenApi.Models; |
||||
|
using Swashbuckle.AspNetCore.SwaggerUI; |
||||
|
using Volo.Abp; |
||||
|
using Volo.Abp.AspNetCore.Mvc.UI.MultiTenancy; |
||||
|
using Volo.Abp.AspNetCore.Serilog; |
||||
|
using Volo.Abp.Autofac; |
||||
|
using Volo.Abp.Caching; |
||||
|
using Volo.Abp.Caching.StackExchangeRedis; |
||||
|
using Volo.Abp.EntityFrameworkCore; |
||||
|
using Volo.Abp.EntityFrameworkCore.MySQL; |
||||
|
using Volo.Abp.Modularity; |
||||
|
using Volo.Abp.Swashbuckle; |
||||
|
|
||||
|
namespace Lion.AbpPro.BasicManagement; |
||||
|
|
||||
|
[DependsOn( |
||||
|
typeof(BasicManagementApplicationModule), |
||||
|
typeof(BasicManagementEntityFrameworkCoreModule), |
||||
|
typeof(BasicManagementHttpApiModule), |
||||
|
typeof(AbpAspNetCoreMvcUiMultiTenancyModule), |
||||
|
typeof(AbpAutofacModule), |
||||
|
typeof(AbpCachingStackExchangeRedisModule), |
||||
|
typeof(AbpEntityFrameworkCoreMySQLModule), |
||||
|
typeof(AbpAspNetCoreSerilogModule), |
||||
|
typeof(AbpSwashbuckleModule), |
||||
|
typeof(SharedHostingMicroserviceModule) |
||||
|
)] |
||||
|
public class BasicManagementHttpApiHostModule : AbpModule |
||||
|
{ |
||||
|
private const string DefaultCorsPolicyName = "Default"; |
||||
|
|
||||
|
public override void ConfigureServices(ServiceConfigurationContext context) |
||||
|
{ |
||||
|
ConfigureCache(context); |
||||
|
ConfigureSwaggerServices(context); |
||||
|
ConfigureJwtAuthentication(context); |
||||
|
Configure<AbpDbContextOptions>(options => { options.UseMySQL(); }); |
||||
|
} |
||||
|
|
||||
|
public override void OnApplicationInitialization(ApplicationInitializationContext context) |
||||
|
{ |
||||
|
var app = context.GetApplicationBuilder(); |
||||
|
|
||||
|
app.UseHttpsRedirection(); |
||||
|
app.UseCorrelationId(); |
||||
|
app.UseStaticFiles(); |
||||
|
app.UseRouting(); |
||||
|
app.UseCors(); |
||||
|
app.UseAuthentication(); |
||||
|
app.UseMultiTenancy(); |
||||
|
app.UseAbpRequestLocalization(); |
||||
|
app.UseAuthorization(); |
||||
|
app.UseSwagger(); |
||||
|
app.UseAbpSwaggerUI(options => |
||||
|
{ |
||||
|
options.SwaggerEndpoint("/swagger/BasicManagement/swagger.json", "BasicManagement API"); |
||||
|
options.DocExpansion(DocExpansion.None); |
||||
|
options.DefaultModelsExpandDepth(-1); |
||||
|
}); |
||||
|
app.UseAuditing(); |
||||
|
app.UseAbpSerilogEnrichers(); |
||||
|
app.UseConfiguredEndpoints(); |
||||
|
} |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// Redis缓存
|
||||
|
/// </summary>
|
||||
|
private void ConfigureCache(ServiceConfigurationContext context) |
||||
|
{ |
||||
|
Configure<AbpDistributedCacheOptions>( |
||||
|
options => { options.KeyPrefix = "AbpPro:"; }); |
||||
|
var configuration = context.Services.GetConfiguration(); |
||||
|
var redis = ConnectionMultiplexer.Connect(configuration["Redis:Configuration"]); |
||||
|
context.Services |
||||
|
.AddDataProtection() |
||||
|
.PersistKeysToStackExchangeRedis(redis, "AbpPro-Protection-Keys"); |
||||
|
} |
||||
|
|
||||
|
private static void ConfigureSwaggerServices(ServiceConfigurationContext context) |
||||
|
{ |
||||
|
context.Services.AddSwaggerGen( |
||||
|
options => |
||||
|
{ |
||||
|
// 文件下载类型
|
||||
|
options.MapType<FileContentResult>(() => new OpenApiSchema() { Type = "file" }); |
||||
|
|
||||
|
options.SwaggerDoc("BasicManagement", |
||||
|
new OpenApiInfo { Title = "BasicManagement API", Version = "v1" }); |
||||
|
options.DocInclusionPredicate((docName, description) => true); |
||||
|
options.EnableAnnotations(); // 启用注解
|
||||
|
options.DocumentFilter<HiddenAbpDefaultApiFilter>(); |
||||
|
options.SchemaFilter<EnumSchemaFilter>(); |
||||
|
// 加载所有xml注释,这里会导致swagger加载有点缓慢
|
||||
|
var xmlPaths = Directory.GetFiles(AppContext.BaseDirectory, "*.xml"); |
||||
|
foreach (var xml in xmlPaths) |
||||
|
{ |
||||
|
options.IncludeXmlComments(xml, true); |
||||
|
} |
||||
|
|
||||
|
options.AddSecurityDefinition(JwtBearerDefaults.AuthenticationScheme, |
||||
|
new OpenApiSecurityScheme() |
||||
|
{ |
||||
|
Description = "直接在下框输入JWT生成的Token", |
||||
|
Name = "Authorization", |
||||
|
In = ParameterLocation.Header, |
||||
|
Type = SecuritySchemeType.Http, |
||||
|
Scheme = JwtBearerDefaults.AuthenticationScheme, |
||||
|
BearerFormat = "JWT" |
||||
|
}); |
||||
|
options.AddSecurityRequirement(new OpenApiSecurityRequirement |
||||
|
{ |
||||
|
{ |
||||
|
new OpenApiSecurityScheme |
||||
|
{ |
||||
|
Reference = new OpenApiReference |
||||
|
{ |
||||
|
Type = ReferenceType.SecurityScheme, Id = "Bearer" |
||||
|
} |
||||
|
}, |
||||
|
new List<string>() |
||||
|
} |
||||
|
}); |
||||
|
|
||||
|
options.AddSecurityDefinition("ApiKey", new OpenApiSecurityScheme() |
||||
|
{ |
||||
|
Type = SecuritySchemeType.ApiKey, |
||||
|
In = ParameterLocation.Header, |
||||
|
Name = "Accept-Language", |
||||
|
Description = "多语言设置,系统预设语言有zh-Hans、en,默认为zh-Hans", |
||||
|
}); |
||||
|
|
||||
|
options.AddSecurityRequirement(new OpenApiSecurityRequirement |
||||
|
{ |
||||
|
{ |
||||
|
new OpenApiSecurityScheme |
||||
|
{ |
||||
|
Reference = new OpenApiReference |
||||
|
{ Type = ReferenceType.SecurityScheme, Id = "ApiKey" } |
||||
|
}, |
||||
|
Array.Empty<string>() |
||||
|
} |
||||
|
}); |
||||
|
}); |
||||
|
} |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 配置JWT
|
||||
|
/// </summary>
|
||||
|
private void ConfigureJwtAuthentication(ServiceConfigurationContext context) |
||||
|
{ |
||||
|
var configuration = context.Services.GetConfiguration(); |
||||
|
context.Services.AddAuthentication(options => |
||||
|
{ |
||||
|
options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme; |
||||
|
options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme; |
||||
|
}) |
||||
|
.AddJwtBearer(options => |
||||
|
{ |
||||
|
options.TokenValidationParameters = |
||||
|
new TokenValidationParameters() |
||||
|
{ |
||||
|
// 是否开启签名认证
|
||||
|
ValidateIssuerSigningKey = true, |
||||
|
ValidateIssuer = true, |
||||
|
ValidateAudience = true, |
||||
|
ValidateLifetime = true, |
||||
|
//ClockSkew = TimeSpan.Zero,
|
||||
|
ValidIssuer = configuration["Jwt:Issuer"], |
||||
|
ValidAudience = configuration["Jwt:Audience"], |
||||
|
IssuerSigningKey = |
||||
|
new SymmetricSecurityKey( |
||||
|
Encoding.ASCII.GetBytes(configuration["Jwt:SecurityKey"])) |
||||
|
}; |
||||
|
|
||||
|
options.Events = new JwtBearerEvents |
||||
|
{ |
||||
|
OnMessageReceived = currentContext => |
||||
|
{ |
||||
|
var path = currentContext.HttpContext.Request.Path; |
||||
|
if (path.StartsWithSegments("/login")) |
||||
|
{ |
||||
|
return Task.CompletedTask; |
||||
|
} |
||||
|
|
||||
|
var accessToken = string.Empty; |
||||
|
if (currentContext.HttpContext.Request.Headers.ContainsKey("Authorization")) |
||||
|
{ |
||||
|
accessToken = currentContext.HttpContext.Request.Headers["Authorization"]; |
||||
|
if (!string.IsNullOrWhiteSpace(accessToken)) |
||||
|
{ |
||||
|
accessToken = accessToken.Split(" ").LastOrDefault(); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
if (accessToken.IsNullOrWhiteSpace()) |
||||
|
{ |
||||
|
accessToken = currentContext.Request.Query["access_token"].FirstOrDefault(); |
||||
|
} |
||||
|
|
||||
|
if (accessToken.IsNullOrWhiteSpace()) |
||||
|
{ |
||||
|
accessToken = currentContext.Request.Cookies[DefaultCorsPolicyName]; |
||||
|
} |
||||
|
|
||||
|
currentContext.Token = accessToken; |
||||
|
currentContext.Request.Headers.Remove("Authorization"); |
||||
|
currentContext.Request.Headers.Add("Authorization", $"Bearer {accessToken}"); |
||||
|
|
||||
|
return Task.CompletedTask; |
||||
|
} |
||||
|
}; |
||||
|
}); |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,12 @@ |
|||||
|
using Microsoft.AspNetCore.Mvc; |
||||
|
using Volo.Abp.AspNetCore.Mvc; |
||||
|
|
||||
|
namespace Lion.AbpPro.BasicManagement.Controllers; |
||||
|
|
||||
|
public class HomeController : AbpController |
||||
|
{ |
||||
|
public ActionResult Index() |
||||
|
{ |
||||
|
return Redirect("~/swagger"); |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,18 @@ |
|||||
|
FROM mcr.microsoft.com/dotnet/core/aspnet:3.0-buster-slim AS base |
||||
|
WORKDIR /app |
||||
|
EXPOSE 80 |
||||
|
|
||||
|
FROM mcr.microsoft.com/dotnet/core/sdk:3.0-buster AS build |
||||
|
WORKDIR /src |
||||
|
COPY . . |
||||
|
WORKDIR /src/templates/service/host/Lion.AbpPro.BasicManagement.HttpApi.Host |
||||
|
RUN dotnet restore -nowarn:msb3202,nu1503 |
||||
|
RUN dotnet build --no-restore -c Release -o /app |
||||
|
|
||||
|
FROM build AS publish |
||||
|
RUN dotnet publish --no-restore -c Release -o /app |
||||
|
|
||||
|
FROM base AS final |
||||
|
WORKDIR /app |
||||
|
COPY --from=publish /app . |
||||
|
ENTRYPOINT ["dotnet", "Lion.AbpPro.BasicManagement.HttpApi.Host.dll"] |
||||
@ -0,0 +1,20 @@ |
|||||
|
using Microsoft.EntityFrameworkCore; |
||||
|
using Volo.Abp.EntityFrameworkCore; |
||||
|
|
||||
|
namespace Lion.AbpPro.BasicManagement.EntityFrameworkCore; |
||||
|
|
||||
|
public class BasicManagementHttpApiHostMigrationsDbContext : AbpDbContext<BasicManagementHttpApiHostMigrationsDbContext> |
||||
|
{ |
||||
|
public BasicManagementHttpApiHostMigrationsDbContext(DbContextOptions<BasicManagementHttpApiHostMigrationsDbContext> options) |
||||
|
: base(options) |
||||
|
{ |
||||
|
|
||||
|
} |
||||
|
|
||||
|
protected override void OnModelCreating(ModelBuilder modelBuilder) |
||||
|
{ |
||||
|
base.OnModelCreating(modelBuilder); |
||||
|
|
||||
|
modelBuilder.ConfigureBasicManagement(); |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,28 @@ |
|||||
|
using System.IO; |
||||
|
using Microsoft.EntityFrameworkCore; |
||||
|
using Microsoft.EntityFrameworkCore.Design; |
||||
|
using Microsoft.Extensions.Configuration; |
||||
|
|
||||
|
namespace Lion.AbpPro.BasicManagement.EntityFrameworkCore; |
||||
|
|
||||
|
public class BasicManagementHttpApiHostMigrationsDbContextFactory : IDesignTimeDbContextFactory<BasicManagementHttpApiHostMigrationsDbContext> |
||||
|
{ |
||||
|
public BasicManagementHttpApiHostMigrationsDbContext CreateDbContext(string[] args) |
||||
|
{ |
||||
|
var configuration = BuildConfiguration(); |
||||
|
|
||||
|
var builder = new DbContextOptionsBuilder<BasicManagementHttpApiHostMigrationsDbContext>() |
||||
|
.UseMySql(configuration.GetConnectionString("Default"), MySqlServerVersion.LatestSupportedServerVersion); |
||||
|
|
||||
|
return new BasicManagementHttpApiHostMigrationsDbContext(builder.Options); |
||||
|
} |
||||
|
|
||||
|
private static IConfigurationRoot BuildConfiguration() |
||||
|
{ |
||||
|
var builder = new ConfigurationBuilder() |
||||
|
.SetBasePath(Directory.GetCurrentDirectory()) |
||||
|
.AddJsonFile("appsettings.json", optional: false); |
||||
|
|
||||
|
return builder.Build(); |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,3 @@ |
|||||
|
<Weavers xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="FodyWeavers.xsd"> |
||||
|
<ConfigureAwait ContinueOnCapturedContext="false" /> |
||||
|
</Weavers> |
||||
@ -0,0 +1,30 @@ |
|||||
|
<?xml version="1.0" encoding="utf-8"?> |
||||
|
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> |
||||
|
<!-- This file was generated by Fody. Manual changes to this file will be lost when your project is rebuilt. --> |
||||
|
<xs:element name="Weavers"> |
||||
|
<xs:complexType> |
||||
|
<xs:all> |
||||
|
<xs:element name="ConfigureAwait" minOccurs="0" maxOccurs="1"> |
||||
|
<xs:complexType> |
||||
|
<xs:attribute name="ContinueOnCapturedContext" type="xs:boolean" /> |
||||
|
</xs:complexType> |
||||
|
</xs:element> |
||||
|
</xs:all> |
||||
|
<xs:attribute name="VerifyAssembly" type="xs:boolean"> |
||||
|
<xs:annotation> |
||||
|
<xs:documentation>'true' to run assembly verification (PEVerify) on the target assembly after all weavers have been executed.</xs:documentation> |
||||
|
</xs:annotation> |
||||
|
</xs:attribute> |
||||
|
<xs:attribute name="VerifyIgnoreCodes" type="xs:string"> |
||||
|
<xs:annotation> |
||||
|
<xs:documentation>A comma-separated list of error codes that can be safely ignored in assembly verification.</xs:documentation> |
||||
|
</xs:annotation> |
||||
|
</xs:attribute> |
||||
|
<xs:attribute name="GenerateXsd" type="xs:boolean"> |
||||
|
<xs:annotation> |
||||
|
<xs:documentation>'false' to turn off automatic generation of the XML Schema file.</xs:documentation> |
||||
|
</xs:annotation> |
||||
|
</xs:attribute> |
||||
|
</xs:complexType> |
||||
|
</xs:element> |
||||
|
</xs:schema> |
||||
@ -0,0 +1,43 @@ |
|||||
|
<Project Sdk="Microsoft.NET.Sdk.Web"> |
||||
|
|
||||
|
<PropertyGroup> |
||||
|
<TargetFramework>net6.0</TargetFramework> |
||||
|
<RootNamespace>Lion.AbpPro.BasicManagement</RootNamespace> |
||||
|
<PreserveCompilationReferences>true</PreserveCompilationReferences> |
||||
|
<UserSecretsId>Lion.AbpPro.BasicManagement-c2d31439-b723-48e2-b061-5ebd7aeb6010</UserSecretsId> |
||||
|
</PropertyGroup> |
||||
|
|
||||
|
<ItemGroup> |
||||
|
<PackageReference Include="Serilog.AspNetCore" /> |
||||
|
<PackageReference Include="Serilog.Sinks.Async" /> |
||||
|
<PackageReference Include="IdentityModel" /> |
||||
|
<PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" /> |
||||
|
<PackageReference Include="Microsoft.AspNetCore.DataProtection.StackExchangeRedis" /> |
||||
|
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" /> |
||||
|
<PackageReference Include="Volo.Abp.Autofac" /> |
||||
|
<PackageReference Include="Volo.Abp.Caching.StackExchangeRedis" /> |
||||
|
<PackageReference Include="Volo.Abp.AspNetCore.Mvc.UI.MultiTenancy" /> |
||||
|
<PackageReference Include="Volo.Abp.EntityFrameworkCore.MySQL" /> |
||||
|
<PackageReference Include="Volo.Abp.AspNetCore.Serilog" /> |
||||
|
<PackageReference Include="Volo.Abp.Swashbuckle" /> |
||||
|
<PackageReference Include="Volo.Abp.PermissionManagement.EntityFrameworkCore" /> |
||||
|
<PackageReference Include="Volo.Abp.SettingManagement.EntityFrameworkCore" /> |
||||
|
<PackageReference Include="Volo.Abp.AuditLogging.EntityFrameworkCore" /> |
||||
|
<PackageReference Include="Volo.Abp.TenantManagement.EntityFrameworkCore" /> |
||||
|
</ItemGroup> |
||||
|
|
||||
|
<ItemGroup> |
||||
|
<ProjectReference Include="..\..\..\..\shared\Lion.AbpPro.Shared.Hosting.Microservices\Lion.AbpPro.Shared.Hosting.Microservices.csproj" /> |
||||
|
<ProjectReference Include="..\..\src\Lion.AbpPro.BasicManagement.HttpApi\Lion.AbpPro.BasicManagement.HttpApi.csproj" /> |
||||
|
<ProjectReference Include="..\..\src\Lion.AbpPro.BasicManagement.Application\Lion.AbpPro.BasicManagement.Application.csproj" /> |
||||
|
<ProjectReference Include="..\..\src\Lion.AbpPro.BasicManagement.EntityFrameworkCore\Lion.AbpPro.BasicManagement.EntityFrameworkCore.csproj" /> |
||||
|
</ItemGroup> |
||||
|
|
||||
|
<ItemGroup> |
||||
|
<Compile Remove="Logs\**" /> |
||||
|
<Content Remove="Logs\**" /> |
||||
|
<EmbeddedResource Remove="Logs\**" /> |
||||
|
<None Remove="Logs\**" /> |
||||
|
</ItemGroup> |
||||
|
|
||||
|
</Project> |
||||
@ -0,0 +1,876 @@ |
|||||
|
2022-08-23 22:20:03.435 +08:00 [INF] Loaded ABP modules: |
||||
|
2022-08-23 22:20:03.463 +08:00 [INF] - Lion.AbpPro.BasicManagement.BasicManagementHttpApiHostModule |
||||
|
2022-08-23 22:20:03.464 +08:00 [INF] - Lion.AbpPro.BasicManagement.BasicManagementApplicationModule |
||||
|
2022-08-23 22:20:03.464 +08:00 [INF] - Lion.AbpPro.BasicManagement.BasicManagementDomainModule |
||||
|
2022-08-23 22:20:03.465 +08:00 [INF] - Volo.Abp.Domain.AbpDddDomainModule |
||||
|
2022-08-23 22:20:03.465 +08:00 [INF] - Volo.Abp.Auditing.AbpAuditingModule |
||||
|
2022-08-23 22:20:03.466 +08:00 [INF] - Volo.Abp.Data.AbpDataModule |
||||
|
2022-08-23 22:20:03.468 +08:00 [INF] - Volo.Abp.ObjectExtending.AbpObjectExtendingModule |
||||
|
2022-08-23 22:20:03.469 +08:00 [INF] - Volo.Abp.Localization.AbpLocalizationAbstractionsModule |
||||
|
2022-08-23 22:20:03.481 +08:00 [INF] - Volo.Abp.Validation.AbpValidationAbstractionsModule |
||||
|
2022-08-23 22:20:03.482 +08:00 [INF] - Volo.Abp.Uow.AbpUnitOfWorkModule |
||||
|
2022-08-23 22:20:03.483 +08:00 [INF] - Volo.Abp.EventBus.Abstractions.AbpEventBusAbstractionsModule |
||||
|
2022-08-23 22:20:03.484 +08:00 [INF] - Volo.Abp.Json.AbpJsonModule |
||||
|
2022-08-23 22:20:03.484 +08:00 [INF] - Volo.Abp.Timing.AbpTimingModule |
||||
|
2022-08-23 22:20:03.485 +08:00 [INF] - Volo.Abp.Localization.AbpLocalizationModule |
||||
|
2022-08-23 22:20:03.485 +08:00 [INF] - Volo.Abp.VirtualFileSystem.AbpVirtualFileSystemModule |
||||
|
2022-08-23 22:20:03.486 +08:00 [INF] - Volo.Abp.Settings.AbpSettingsModule |
||||
|
2022-08-23 22:20:03.487 +08:00 [INF] - Volo.Abp.Security.AbpSecurityModule |
||||
|
2022-08-23 22:20:03.487 +08:00 [INF] - Volo.Abp.MultiTenancy.AbpMultiTenancyModule |
||||
|
2022-08-23 22:20:03.488 +08:00 [INF] - Volo.Abp.Threading.AbpThreadingModule |
||||
|
2022-08-23 22:20:03.488 +08:00 [INF] - Volo.Abp.Auditing.AbpAuditingContractsModule |
||||
|
2022-08-23 22:20:03.489 +08:00 [INF] - Volo.Abp.EventBus.AbpEventBusModule |
||||
|
2022-08-23 22:20:03.490 +08:00 [INF] - Volo.Abp.Guids.AbpGuidsModule |
||||
|
2022-08-23 22:20:03.490 +08:00 [INF] - Volo.Abp.BackgroundWorkers.AbpBackgroundWorkersModule |
||||
|
2022-08-23 22:20:03.491 +08:00 [INF] - Volo.Abp.DistributedLocking.AbpDistributedLockingAbstractionsModule |
||||
|
2022-08-23 22:20:03.491 +08:00 [INF] - Volo.Abp.ObjectMapping.AbpObjectMappingModule |
||||
|
2022-08-23 22:20:03.492 +08:00 [INF] - Volo.Abp.ExceptionHandling.AbpExceptionHandlingModule |
||||
|
2022-08-23 22:20:03.492 +08:00 [INF] - Volo.Abp.Specifications.AbpSpecificationsModule |
||||
|
2022-08-23 22:20:03.493 +08:00 [INF] - Lion.AbpPro.BasicManagement.BasicManagementDomainSharedModule |
||||
|
2022-08-23 22:20:03.493 +08:00 [INF] - Volo.Abp.AuditLogging.AbpAuditLoggingDomainSharedModule |
||||
|
2022-08-23 22:20:03.494 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainSharedModule |
||||
|
2022-08-23 22:20:03.494 +08:00 [INF] - Volo.Abp.FeatureManagement.AbpFeatureManagementDomainSharedModule |
||||
|
2022-08-23 22:20:03.495 +08:00 [INF] - Volo.Abp.Validation.AbpValidationModule |
||||
|
2022-08-23 22:20:03.496 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityDomainSharedModule |
||||
|
2022-08-23 22:20:03.496 +08:00 [INF] - Volo.Abp.Users.AbpUsersDomainSharedModule |
||||
|
2022-08-23 22:20:03.497 +08:00 [INF] - Volo.Abp.Features.AbpFeaturesModule |
||||
|
2022-08-23 22:20:03.499 +08:00 [INF] - Volo.Abp.Authorization.AbpAuthorizationAbstractionsModule |
||||
|
2022-08-23 22:20:03.501 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementDomainSharedModule |
||||
|
2022-08-23 22:20:03.502 +08:00 [INF] - Volo.Abp.SettingManagement.AbpSettingManagementDomainSharedModule |
||||
|
2022-08-23 22:20:03.502 +08:00 [INF] - Volo.Abp.TenantManagement.AbpTenantManagementDomainSharedModule |
||||
|
2022-08-23 22:20:03.503 +08:00 [INF] - Volo.Abp.AuditLogging.AbpAuditLoggingDomainModule |
||||
|
2022-08-23 22:20:03.503 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainModule |
||||
|
2022-08-23 22:20:03.504 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsModule |
||||
|
2022-08-23 22:20:03.505 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsAbstractionsModule |
||||
|
2022-08-23 22:20:03.505 +08:00 [INF] - Volo.Abp.AutoMapper.AbpAutoMapperModule |
||||
|
2022-08-23 22:20:03.506 +08:00 [INF] - Volo.Abp.FeatureManagement.AbpFeatureManagementDomainModule |
||||
|
2022-08-23 22:20:03.507 +08:00 [INF] - Volo.Abp.Caching.AbpCachingModule |
||||
|
2022-08-23 22:20:03.507 +08:00 [INF] - Volo.Abp.Serialization.AbpSerializationModule |
||||
|
2022-08-23 22:20:03.508 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityDomainModule |
||||
|
2022-08-23 22:20:03.509 +08:00 [INF] - Volo.Abp.Users.AbpUsersDomainModule |
||||
|
2022-08-23 22:20:03.509 +08:00 [INF] - Volo.Abp.Users.AbpUsersAbstractionModule |
||||
|
2022-08-23 22:20:03.510 +08:00 [INF] - Volo.Abp.PermissionManagement.Identity.AbpPermissionManagementDomainIdentityModule |
||||
|
2022-08-23 22:20:03.510 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementDomainModule |
||||
|
2022-08-23 22:20:03.511 +08:00 [INF] - Volo.Abp.Authorization.AbpAuthorizationModule |
||||
|
2022-08-23 22:20:03.512 +08:00 [INF] - Volo.Abp.SettingManagement.AbpSettingManagementDomainModule |
||||
|
2022-08-23 22:20:03.512 +08:00 [INF] - Volo.Abp.TenantManagement.AbpTenantManagementDomainModule |
||||
|
2022-08-23 22:20:03.515 +08:00 [INF] - Lion.AbpPro.BasicManagement.BasicManagementApplicationContractsModule |
||||
|
2022-08-23 22:20:03.515 +08:00 [INF] - Volo.Abp.Application.AbpDddApplicationContractsModule |
||||
|
2022-08-23 22:20:03.516 +08:00 [INF] - Volo.Abp.Account.AbpAccountApplicationContractsModule |
||||
|
2022-08-23 22:20:03.517 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityApplicationContractsModule |
||||
|
2022-08-23 22:20:03.517 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementApplicationContractsModule |
||||
|
2022-08-23 22:20:03.518 +08:00 [INF] - Volo.Abp.FeatureManagement.AbpFeatureManagementApplicationContractsModule |
||||
|
2022-08-23 22:20:03.519 +08:00 [INF] - Volo.Abp.SettingManagement.AbpSettingManagementApplicationContractsModule |
||||
|
2022-08-23 22:20:03.519 +08:00 [INF] - Volo.Abp.TenantManagement.AbpTenantManagementApplicationContractsModule |
||||
|
2022-08-23 22:20:03.520 +08:00 [INF] - Volo.Abp.Application.AbpDddApplicationModule |
||||
|
2022-08-23 22:20:03.520 +08:00 [INF] - Volo.Abp.Http.AbpHttpAbstractionsModule |
||||
|
2022-08-23 22:20:03.521 +08:00 [INF] - Volo.Abp.GlobalFeatures.AbpGlobalFeaturesModule |
||||
|
2022-08-23 22:20:03.521 +08:00 [INF] - Volo.Abp.Account.AbpAccountApplicationModule |
||||
|
2022-08-23 22:20:03.522 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityApplicationModule |
||||
|
2022-08-23 22:20:03.523 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementApplicationModule |
||||
|
2022-08-23 22:20:03.523 +08:00 [INF] - Volo.Abp.UI.Navigation.AbpUiNavigationModule |
||||
|
2022-08-23 22:20:03.524 +08:00 [INF] - Volo.Abp.UI.AbpUiModule |
||||
|
2022-08-23 22:20:03.524 +08:00 [INF] - Volo.Abp.Emailing.AbpEmailingModule |
||||
|
2022-08-23 22:20:03.525 +08:00 [INF] - Volo.Abp.TextTemplating.AbpTextTemplatingModule |
||||
|
2022-08-23 22:20:03.526 +08:00 [INF] - Volo.Abp.TextTemplating.Scriban.AbpTextTemplatingScribanModule |
||||
|
2022-08-23 22:20:03.526 +08:00 [INF] - Volo.Abp.TextTemplating.AbpTextTemplatingCoreModule |
||||
|
2022-08-23 22:20:03.527 +08:00 [INF] - Volo.Abp.TenantManagement.AbpTenantManagementApplicationModule |
||||
|
2022-08-23 22:20:03.527 +08:00 [INF] - Volo.Abp.FeatureManagement.AbpFeatureManagementApplicationModule |
||||
|
2022-08-23 22:20:03.532 +08:00 [INF] - Volo.Abp.SettingManagement.AbpSettingManagementApplicationModule |
||||
|
2022-08-23 22:20:03.533 +08:00 [INF] - Lion.AbpPro.BasicManagement.EntityFrameworkCore.BasicManagementEntityFrameworkCoreModule |
||||
|
2022-08-23 22:20:03.533 +08:00 [INF] - Volo.Abp.EntityFrameworkCore.AbpEntityFrameworkCoreModule |
||||
|
2022-08-23 22:20:03.534 +08:00 [INF] - Volo.Abp.Identity.EntityFrameworkCore.AbpIdentityEntityFrameworkCoreModule |
||||
|
2022-08-23 22:20:03.534 +08:00 [INF] - Volo.Abp.Users.EntityFrameworkCore.AbpUsersEntityFrameworkCoreModule |
||||
|
2022-08-23 22:20:03.535 +08:00 [INF] - Volo.Abp.PermissionManagement.EntityFrameworkCore.AbpPermissionManagementEntityFrameworkCoreModule |
||||
|
2022-08-23 22:20:03.536 +08:00 [INF] - Volo.Abp.SettingManagement.EntityFrameworkCore.AbpSettingManagementEntityFrameworkCoreModule |
||||
|
2022-08-23 22:20:03.536 +08:00 [INF] - Volo.Abp.BackgroundJobs.EntityFrameworkCore.AbpBackgroundJobsEntityFrameworkCoreModule |
||||
|
2022-08-23 22:20:03.537 +08:00 [INF] - Volo.Abp.AuditLogging.EntityFrameworkCore.AbpAuditLoggingEntityFrameworkCoreModule |
||||
|
2022-08-23 22:20:03.537 +08:00 [INF] - Volo.Abp.TenantManagement.EntityFrameworkCore.AbpTenantManagementEntityFrameworkCoreModule |
||||
|
2022-08-23 22:20:03.538 +08:00 [INF] - Volo.Abp.FeatureManagement.EntityFrameworkCore.AbpFeatureManagementEntityFrameworkCoreModule |
||||
|
2022-08-23 22:20:03.539 +08:00 [INF] - Lion.AbpPro.BasicManagement.BasicManagementHttpApiModule |
||||
|
2022-08-23 22:20:03.539 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.AbpAspNetCoreMvcModule |
||||
|
2022-08-23 22:20:03.540 +08:00 [INF] - Volo.Abp.AspNetCore.AbpAspNetCoreModule |
||||
|
2022-08-23 22:20:03.540 +08:00 [INF] - Volo.Abp.Http.AbpHttpModule |
||||
|
2022-08-23 22:20:03.541 +08:00 [INF] - Volo.Abp.Minify.AbpMinifyModule |
||||
|
2022-08-23 22:20:03.541 +08:00 [INF] - Volo.Abp.ApiVersioning.AbpApiVersioningAbstractionsModule |
||||
|
2022-08-23 22:20:03.542 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.AbpAspNetCoreMvcContractsModule |
||||
|
2022-08-23 22:20:03.543 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.MultiTenancy.AbpAspNetCoreMvcUiMultiTenancyModule |
||||
|
2022-08-23 22:20:03.546 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.AbpAspNetCoreMvcUiThemeSharedModule |
||||
|
2022-08-23 22:20:03.547 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.AbpAspNetCoreMvcUiBootstrapModule |
||||
|
2022-08-23 22:20:03.547 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.AbpAspNetCoreMvcUiModule |
||||
|
2022-08-23 22:20:03.548 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Packages.AbpAspNetCoreMvcUiPackagesModule |
||||
|
2022-08-23 22:20:03.549 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Bundling.AbpAspNetCoreMvcUiBundlingAbstractionsModule |
||||
|
2022-08-23 22:20:03.549 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Widgets.AbpAspNetCoreMvcUiWidgetsModule |
||||
|
2022-08-23 22:20:03.550 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Bundling.AbpAspNetCoreMvcUiBundlingModule |
||||
|
2022-08-23 22:20:03.551 +08:00 [INF] - Volo.Abp.AspNetCore.MultiTenancy.AbpAspNetCoreMultiTenancyModule |
||||
|
2022-08-23 22:20:03.551 +08:00 [INF] - Volo.Abp.Autofac.AbpAutofacModule |
||||
|
2022-08-23 22:20:03.552 +08:00 [INF] - Volo.Abp.Castle.AbpCastleCoreModule |
||||
|
2022-08-23 22:20:03.553 +08:00 [INF] - Volo.Abp.Caching.StackExchangeRedis.AbpCachingStackExchangeRedisModule |
||||
|
2022-08-23 22:20:03.553 +08:00 [INF] - Volo.Abp.EntityFrameworkCore.MySQL.AbpEntityFrameworkCoreMySQLModule |
||||
|
2022-08-23 22:20:03.554 +08:00 [INF] - Volo.Abp.AspNetCore.Serilog.AbpAspNetCoreSerilogModule |
||||
|
2022-08-23 22:20:03.554 +08:00 [INF] - Volo.Abp.Swashbuckle.AbpSwashbuckleModule |
||||
|
2022-08-23 22:20:03.555 +08:00 [INF] - Lion.AbpPro.Shared.Hosting.Microservices.SharedHostingMicroserviceModule |
||||
|
2022-08-23 22:20:04.009 +08:00 [INF] Initialized all ABP modules. |
||||
|
2022-08-23 22:20:04.060 +08:00 [INF] Now listening on: http://localhost:44324 |
||||
|
2022-08-23 22:20:04.062 +08:00 [INF] Application started. Press Ctrl+C to shut down. |
||||
|
2022-08-23 22:20:04.064 +08:00 [INF] Hosting environment: Development |
||||
|
2022-08-23 22:20:04.065 +08:00 [INF] Content root path: D:\github\WangJunZzz\abp-vnext-pro\aspnet-core\modules\BasicManagement\host\Lion.AbpPro.BasicManagement.HttpApi.Host |
||||
|
2022-08-23 22:20:04.402 +08:00 [INF] Request starting HTTP/1.1 GET http://localhost:44324/ - - |
||||
|
2022-08-23 22:20:04.409 +08:00 [WRN] Failed to determine the https port for redirect. |
||||
|
2022-08-23 22:20:05.138 +08:00 [ERR] Connection id "0HMK52A99DPT6", Request id "0HMK52A99DPT6:00000002": An unhandled exception was thrown by the application. |
||||
|
Autofac.Core.DependencyResolutionException: An exception was thrown while activating Volo.Abp.AspNetCore.MultiTenancy.MultiTenancyMiddleware -> Volo.Abp.MultiTenancy.TenantConfigurationProvider -> Volo.Abp.TenantManagement.TenantStore -> Volo.Abp.ObjectMapping.DefaultObjectMapper`1[[Volo.Abp.TenantManagement.AbpTenantManagementDomainModule, Volo.Abp.TenantManagement.Domain, Version=5.3.2.0, Culture=neutral, PublicKeyToken=null]] -> Volo.Abp.AutoMapper.AutoMapperAutoObjectMappingProvider`1[[Volo.Abp.TenantManagement.AbpTenantManagementDomainModule, Volo.Abp.TenantManagement.Domain, Version=5.3.2.0, Culture=neutral, PublicKeyToken=null]] -> λ:Volo.Abp.AutoMapper.IMapperAccessor -> λ:Volo.Abp.AutoMapper.MapperAccessor. |
||||
|
---> AutoMapper.AutoMapperConfigurationException: |
||||
|
Unmapped members were found. Review the types and members below. |
||||
|
Add a custom mapping expression, ignore, add a custom resolver, or modify the source/destination type |
||||
|
For no matching constructor, add a no-arg ctor, add optional arguments, or map all of the constructor parameters |
||||
|
===================================================================================== |
||||
|
IdentityUser -> LoginOutput (Destination member list) |
||||
|
Volo.Abp.Identity.IdentityUser -> Lion.AbpPro.BasicManagement.Users.Dtos.LoginOutput (Destination member list) |
||||
|
|
||||
|
Unmapped properties: |
||||
|
Token |
||||
|
|
||||
|
at Volo.Abp.AutoMapper.AbpAutoMapperModule.<>c__DisplayClass2_1.<CreateMappings>g__ValidateAll|2(IConfigurationProvider config) |
||||
|
at Volo.Abp.AutoMapper.AbpAutoMapperModule.CreateMappings(IServiceProvider serviceProvider) |
||||
|
at Autofac.Extensions.DependencyInjection.AutofacRegistration.<>c__DisplayClass3_0.<Register>b__0(IComponentContext context, IEnumerable`1 parameters) |
||||
|
at Autofac.Core.Activators.Delegate.DelegateActivator.ActivateInstance(IComponentContext context, IEnumerable`1 parameters) |
||||
|
at Autofac.Core.Activators.Delegate.DelegateActivator.<ConfigurePipeline>b__2_0(ResolveRequestContext ctxt, Action`1 next) |
||||
|
at Autofac.Core.Resolving.Middleware.DelegateMiddleware.Execute(ResolveRequestContext context, Action`1 next) |
||||
|
at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.<BuildPipeline>b__1(ResolveRequestContext ctxt) |
||||
|
at Autofac.Core.Resolving.Middleware.DisposalTrackingMiddleware.Execute(ResolveRequestContext context, Action`1 next) |
||||
|
at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.<BuildPipeline>b__1(ResolveRequestContext ctxt) |
||||
|
at Autofac.Core.Resolving.Middleware.ActivatorErrorHandlingMiddleware.Execute(ResolveRequestContext context, Action`1 next) |
||||
|
--- End of inner exception stack trace --- |
||||
|
at Autofac.Core.Resolving.Middleware.ActivatorErrorHandlingMiddleware.Execute(ResolveRequestContext context, Action`1 next) |
||||
|
at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.<BuildPipeline>b__1(ResolveRequestContext ctxt) |
||||
|
at Autofac.Core.Pipeline.ResolvePipeline.Invoke(ResolveRequestContext ctxt) |
||||
|
at Autofac.Core.Resolving.Middleware.RegistrationPipelineInvokeMiddleware.Execute(ResolveRequestContext context, Action`1 next) |
||||
|
at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.<BuildPipeline>b__1(ResolveRequestContext ctxt) |
||||
|
at Autofac.Core.Resolving.Middleware.SharingMiddleware.Execute(ResolveRequestContext context, Action`1 next) |
||||
|
at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.<BuildPipeline>b__1(ResolveRequestContext ctxt) |
||||
|
at Autofac.Core.Resolving.Middleware.ScopeSelectionMiddleware.Execute(ResolveRequestContext context, Action`1 next) |
||||
|
at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.<BuildPipeline>b__1(ResolveRequestContext ctxt) |
||||
|
at Autofac.Core.Resolving.Middleware.CircularDependencyDetectorMiddleware.Execute(ResolveRequestContext context, Action`1 next) |
||||
|
at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.<BuildPipeline>b__1(ResolveRequestContext ctxt) |
||||
|
at Autofac.Core.Pipeline.ResolvePipeline.Invoke(ResolveRequestContext ctxt) |
||||
|
at Autofac.Core.Resolving.ResolveOperation.GetOrCreateInstance(ISharingLifetimeScope currentOperationScope, ResolveRequest request) |
||||
|
at Autofac.Core.Resolving.ResolveOperation.ExecuteOperation(ResolveRequest request) |
||||
|
at Autofac.Core.Resolving.ResolveOperation.Execute(ResolveRequest request) |
||||
|
at Autofac.Core.Lifetime.LifetimeScope.ResolveComponent(ResolveRequest request) |
||||
|
at Autofac.ResolutionExtensions.TryResolveService(IComponentContext context, Service service, IEnumerable`1 parameters, Object& instance) |
||||
|
at Autofac.ResolutionExtensions.ResolveService(IComponentContext context, Service service, IEnumerable`1 parameters) |
||||
|
at Autofac.ResolutionExtensions.Resolve(IComponentContext context, Type serviceType, IEnumerable`1 parameters) |
||||
|
at Autofac.ResolutionExtensions.Resolve(IComponentContext context, Type serviceType) |
||||
|
at Autofac.Extensions.DependencyInjection.AutofacServiceProvider.GetRequiredService(Type serviceType) |
||||
|
at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(IServiceProvider provider, Type serviceType) |
||||
|
at Microsoft.AspNetCore.Http.MiddlewareFactory.Create(Type middlewareType) |
||||
|
at Microsoft.AspNetCore.Builder.UseMiddlewareExtensions.<>c__DisplayClass6_1.<<UseMiddlewareInterface>b__1>d.MoveNext() |
||||
|
--- End of stack trace from previous location --- |
||||
|
at Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.Invoke(HttpContext context) |
||||
|
at Volo.Abp.AspNetCore.Tracing.AbpCorrelationIdMiddleware.InvokeAsync(HttpContext context, RequestDelegate next) |
||||
|
at Microsoft.AspNetCore.Builder.UseMiddlewareExtensions.<>c__DisplayClass6_1.<<UseMiddlewareInterface>b__1>d.MoveNext() |
||||
|
--- End of stack trace from previous location --- |
||||
|
at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpProtocol.ProcessRequests[TContext](IHttpApplication`1 application) |
||||
|
2022-08-23 22:20:05.306 +08:00 [INF] Request finished HTTP/1.1 GET http://localhost:44324/ - - - 500 0 - 904.5064ms |
||||
|
2022-08-23 22:20:08.779 +08:00 [ERR] An exception was thrown while activating Volo.Abp.BackgroundJobs.BackgroundJobStore -> Volo.Abp.ObjectMapping.DefaultObjectMapper`1[[Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainModule, Volo.Abp.BackgroundJobs.Domain, Version=5.3.2.0, Culture=neutral, PublicKeyToken=null]] -> Volo.Abp.AutoMapper.AutoMapperAutoObjectMappingProvider`1[[Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainModule, Volo.Abp.BackgroundJobs.Domain, Version=5.3.2.0, Culture=neutral, PublicKeyToken=null]] -> λ:Volo.Abp.AutoMapper.IMapperAccessor -> λ:Volo.Abp.AutoMapper.MapperAccessor. |
||||
|
Autofac.Core.DependencyResolutionException: An exception was thrown while activating Volo.Abp.BackgroundJobs.BackgroundJobStore -> Volo.Abp.ObjectMapping.DefaultObjectMapper`1[[Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainModule, Volo.Abp.BackgroundJobs.Domain, Version=5.3.2.0, Culture=neutral, PublicKeyToken=null]] -> Volo.Abp.AutoMapper.AutoMapperAutoObjectMappingProvider`1[[Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainModule, Volo.Abp.BackgroundJobs.Domain, Version=5.3.2.0, Culture=neutral, PublicKeyToken=null]] -> λ:Volo.Abp.AutoMapper.IMapperAccessor -> λ:Volo.Abp.AutoMapper.MapperAccessor. |
||||
|
---> AutoMapper.AutoMapperConfigurationException: |
||||
|
Unmapped members were found. Review the types and members below. |
||||
|
Add a custom mapping expression, ignore, add a custom resolver, or modify the source/destination type |
||||
|
For no matching constructor, add a no-arg ctor, add optional arguments, or map all of the constructor parameters |
||||
|
===================================================================================== |
||||
|
IdentityUser -> LoginOutput (Destination member list) |
||||
|
Volo.Abp.Identity.IdentityUser -> Lion.AbpPro.BasicManagement.Users.Dtos.LoginOutput (Destination member list) |
||||
|
|
||||
|
Unmapped properties: |
||||
|
Token |
||||
|
|
||||
|
at Volo.Abp.AutoMapper.AbpAutoMapperModule.<>c__DisplayClass2_1.<CreateMappings>g__ValidateAll|2(IConfigurationProvider config) |
||||
|
at Volo.Abp.AutoMapper.AbpAutoMapperModule.CreateMappings(IServiceProvider serviceProvider) |
||||
|
at Autofac.Extensions.DependencyInjection.AutofacRegistration.<>c__DisplayClass3_0.<Register>b__0(IComponentContext context, IEnumerable`1 parameters) |
||||
|
at Autofac.Core.Activators.Delegate.DelegateActivator.ActivateInstance(IComponentContext context, IEnumerable`1 parameters) |
||||
|
at Autofac.Core.Activators.Delegate.DelegateActivator.<ConfigurePipeline>b__2_0(ResolveRequestContext ctxt, Action`1 next) |
||||
|
at Autofac.Core.Resolving.Middleware.DelegateMiddleware.Execute(ResolveRequestContext context, Action`1 next) |
||||
|
at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.<BuildPipeline>b__1(ResolveRequestContext ctxt) |
||||
|
at Autofac.Core.Resolving.Middleware.DisposalTrackingMiddleware.Execute(ResolveRequestContext context, Action`1 next) |
||||
|
at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.<BuildPipeline>b__1(ResolveRequestContext ctxt) |
||||
|
at Autofac.Core.Resolving.Middleware.ActivatorErrorHandlingMiddleware.Execute(ResolveRequestContext context, Action`1 next) |
||||
|
--- End of inner exception stack trace --- |
||||
|
at Autofac.Core.Resolving.Middleware.ActivatorErrorHandlingMiddleware.Execute(ResolveRequestContext context, Action`1 next) |
||||
|
at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.<BuildPipeline>b__1(ResolveRequestContext ctxt) |
||||
|
at Autofac.Core.Pipeline.ResolvePipeline.Invoke(ResolveRequestContext ctxt) |
||||
|
at Autofac.Core.Resolving.Middleware.RegistrationPipelineInvokeMiddleware.Execute(ResolveRequestContext context, Action`1 next) |
||||
|
at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.<BuildPipeline>b__1(ResolveRequestContext ctxt) |
||||
|
at Autofac.Core.Resolving.Middleware.SharingMiddleware.Execute(ResolveRequestContext context, Action`1 next) |
||||
|
at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.<BuildPipeline>b__1(ResolveRequestContext ctxt) |
||||
|
at Autofac.Core.Resolving.Middleware.ScopeSelectionMiddleware.Execute(ResolveRequestContext context, Action`1 next) |
||||
|
at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.<BuildPipeline>b__1(ResolveRequestContext ctxt) |
||||
|
at Autofac.Core.Resolving.Middleware.CircularDependencyDetectorMiddleware.Execute(ResolveRequestContext context, Action`1 next) |
||||
|
at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.<BuildPipeline>b__1(ResolveRequestContext ctxt) |
||||
|
at Autofac.Core.Pipeline.ResolvePipeline.Invoke(ResolveRequestContext ctxt) |
||||
|
at Autofac.Core.Resolving.ResolveOperation.GetOrCreateInstance(ISharingLifetimeScope currentOperationScope, ResolveRequest request) |
||||
|
at Autofac.Core.Resolving.ResolveOperation.ExecuteOperation(ResolveRequest request) |
||||
|
at Autofac.Core.Resolving.ResolveOperation.Execute(ResolveRequest request) |
||||
|
at Autofac.Core.Lifetime.LifetimeScope.ResolveComponent(ResolveRequest request) |
||||
|
at Autofac.ResolutionExtensions.TryResolveService(IComponentContext context, Service service, IEnumerable`1 parameters, Object& instance) |
||||
|
at Autofac.ResolutionExtensions.ResolveService(IComponentContext context, Service service, IEnumerable`1 parameters) |
||||
|
at Autofac.ResolutionExtensions.Resolve(IComponentContext context, Type serviceType, IEnumerable`1 parameters) |
||||
|
at Autofac.ResolutionExtensions.Resolve(IComponentContext context, Type serviceType) |
||||
|
at Autofac.Extensions.DependencyInjection.AutofacServiceProvider.GetRequiredService(Type serviceType) |
||||
|
at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(IServiceProvider provider, Type serviceType) |
||||
|
at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService[T](IServiceProvider provider) |
||||
|
at Volo.Abp.BackgroundJobs.BackgroundJobWorker.DoWorkAsync(PeriodicBackgroundWorkerContext workerContext) |
||||
|
at Volo.Abp.BackgroundJobs.BackgroundJobWorker.DoWorkAsync(PeriodicBackgroundWorkerContext workerContext) |
||||
|
at Volo.Abp.BackgroundWorkers.AsyncPeriodicBackgroundWorkerBase.DoWorkAsync() |
||||
|
2022-08-23 22:20:08.803 +08:00 [ERR] ---------- Exception Data ---------- |
||||
|
ActivatorChain = Volo.Abp.BackgroundJobs.BackgroundJobStore -> Volo.Abp.ObjectMapping.DefaultObjectMapper`1[[Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainModule, Volo.Abp.BackgroundJobs.Domain, Version=5.3.2.0, Culture=neutral, PublicKeyToken=null]] -> Volo.Abp.AutoMapper.AutoMapperAutoObjectMappingProvider`1[[Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainModule, Volo.Abp.BackgroundJobs.Domain, Version=5.3.2.0, Culture=neutral, PublicKeyToken=null]] -> λ:Volo.Abp.AutoMapper.IMapperAccessor -> λ:Volo.Abp.AutoMapper.MapperAccessor |
||||
|
|
||||
|
2022-08-23 22:20:13.839 +08:00 [ERR] An exception was thrown while activating Volo.Abp.BackgroundJobs.BackgroundJobStore -> Volo.Abp.ObjectMapping.DefaultObjectMapper`1[[Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainModule, Volo.Abp.BackgroundJobs.Domain, Version=5.3.2.0, Culture=neutral, PublicKeyToken=null]] -> Volo.Abp.AutoMapper.AutoMapperAutoObjectMappingProvider`1[[Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainModule, Volo.Abp.BackgroundJobs.Domain, Version=5.3.2.0, Culture=neutral, PublicKeyToken=null]] -> λ:Volo.Abp.AutoMapper.IMapperAccessor -> λ:Volo.Abp.AutoMapper.MapperAccessor. |
||||
|
Autofac.Core.DependencyResolutionException: An exception was thrown while activating Volo.Abp.BackgroundJobs.BackgroundJobStore -> Volo.Abp.ObjectMapping.DefaultObjectMapper`1[[Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainModule, Volo.Abp.BackgroundJobs.Domain, Version=5.3.2.0, Culture=neutral, PublicKeyToken=null]] -> Volo.Abp.AutoMapper.AutoMapperAutoObjectMappingProvider`1[[Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainModule, Volo.Abp.BackgroundJobs.Domain, Version=5.3.2.0, Culture=neutral, PublicKeyToken=null]] -> λ:Volo.Abp.AutoMapper.IMapperAccessor -> λ:Volo.Abp.AutoMapper.MapperAccessor. |
||||
|
---> AutoMapper.AutoMapperConfigurationException: |
||||
|
Unmapped members were found. Review the types and members below. |
||||
|
Add a custom mapping expression, ignore, add a custom resolver, or modify the source/destination type |
||||
|
For no matching constructor, add a no-arg ctor, add optional arguments, or map all of the constructor parameters |
||||
|
===================================================================================== |
||||
|
IdentityUser -> LoginOutput (Destination member list) |
||||
|
Volo.Abp.Identity.IdentityUser -> Lion.AbpPro.BasicManagement.Users.Dtos.LoginOutput (Destination member list) |
||||
|
|
||||
|
Unmapped properties: |
||||
|
Token |
||||
|
|
||||
|
at Volo.Abp.AutoMapper.AbpAutoMapperModule.<>c__DisplayClass2_1.<CreateMappings>g__ValidateAll|2(IConfigurationProvider config) |
||||
|
at Volo.Abp.AutoMapper.AbpAutoMapperModule.CreateMappings(IServiceProvider serviceProvider) |
||||
|
at Autofac.Extensions.DependencyInjection.AutofacRegistration.<>c__DisplayClass3_0.<Register>b__0(IComponentContext context, IEnumerable`1 parameters) |
||||
|
at Autofac.Core.Activators.Delegate.DelegateActivator.ActivateInstance(IComponentContext context, IEnumerable`1 parameters) |
||||
|
at Autofac.Core.Activators.Delegate.DelegateActivator.<ConfigurePipeline>b__2_0(ResolveRequestContext ctxt, Action`1 next) |
||||
|
at Autofac.Core.Resolving.Middleware.DelegateMiddleware.Execute(ResolveRequestContext context, Action`1 next) |
||||
|
at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.<BuildPipeline>b__1(ResolveRequestContext ctxt) |
||||
|
at Autofac.Core.Resolving.Middleware.DisposalTrackingMiddleware.Execute(ResolveRequestContext context, Action`1 next) |
||||
|
at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.<BuildPipeline>b__1(ResolveRequestContext ctxt) |
||||
|
at Autofac.Core.Resolving.Middleware.ActivatorErrorHandlingMiddleware.Execute(ResolveRequestContext context, Action`1 next) |
||||
|
--- End of inner exception stack trace --- |
||||
|
at Autofac.Core.Resolving.Middleware.ActivatorErrorHandlingMiddleware.Execute(ResolveRequestContext context, Action`1 next) |
||||
|
at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.<BuildPipeline>b__1(ResolveRequestContext ctxt) |
||||
|
at Autofac.Core.Pipeline.ResolvePipeline.Invoke(ResolveRequestContext ctxt) |
||||
|
at Autofac.Core.Resolving.Middleware.RegistrationPipelineInvokeMiddleware.Execute(ResolveRequestContext context, Action`1 next) |
||||
|
at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.<BuildPipeline>b__1(ResolveRequestContext ctxt) |
||||
|
at Autofac.Core.Resolving.Middleware.SharingMiddleware.Execute(ResolveRequestContext context, Action`1 next) |
||||
|
at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.<BuildPipeline>b__1(ResolveRequestContext ctxt) |
||||
|
at Autofac.Core.Resolving.Middleware.ScopeSelectionMiddleware.Execute(ResolveRequestContext context, Action`1 next) |
||||
|
at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.<BuildPipeline>b__1(ResolveRequestContext ctxt) |
||||
|
at Autofac.Core.Resolving.Middleware.CircularDependencyDetectorMiddleware.Execute(ResolveRequestContext context, Action`1 next) |
||||
|
at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.<BuildPipeline>b__1(ResolveRequestContext ctxt) |
||||
|
at Autofac.Core.Pipeline.ResolvePipeline.Invoke(ResolveRequestContext ctxt) |
||||
|
at Autofac.Core.Resolving.ResolveOperation.GetOrCreateInstance(ISharingLifetimeScope currentOperationScope, ResolveRequest request) |
||||
|
at Autofac.Core.Resolving.ResolveOperation.ExecuteOperation(ResolveRequest request) |
||||
|
at Autofac.Core.Resolving.ResolveOperation.Execute(ResolveRequest request) |
||||
|
at Autofac.Core.Lifetime.LifetimeScope.ResolveComponent(ResolveRequest request) |
||||
|
at Autofac.ResolutionExtensions.TryResolveService(IComponentContext context, Service service, IEnumerable`1 parameters, Object& instance) |
||||
|
at Autofac.ResolutionExtensions.ResolveService(IComponentContext context, Service service, IEnumerable`1 parameters) |
||||
|
at Autofac.ResolutionExtensions.Resolve(IComponentContext context, Type serviceType, IEnumerable`1 parameters) |
||||
|
at Autofac.ResolutionExtensions.Resolve(IComponentContext context, Type serviceType) |
||||
|
at Autofac.Extensions.DependencyInjection.AutofacServiceProvider.GetRequiredService(Type serviceType) |
||||
|
at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(IServiceProvider provider, Type serviceType) |
||||
|
at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService[T](IServiceProvider provider) |
||||
|
at Volo.Abp.BackgroundJobs.BackgroundJobWorker.DoWorkAsync(PeriodicBackgroundWorkerContext workerContext) |
||||
|
at Volo.Abp.BackgroundJobs.BackgroundJobWorker.DoWorkAsync(PeriodicBackgroundWorkerContext workerContext) |
||||
|
at Volo.Abp.BackgroundWorkers.AsyncPeriodicBackgroundWorkerBase.DoWorkAsync() |
||||
|
2022-08-23 22:20:13.865 +08:00 [ERR] ---------- Exception Data ---------- |
||||
|
ActivatorChain = Volo.Abp.BackgroundJobs.BackgroundJobStore -> Volo.Abp.ObjectMapping.DefaultObjectMapper`1[[Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainModule, Volo.Abp.BackgroundJobs.Domain, Version=5.3.2.0, Culture=neutral, PublicKeyToken=null]] -> Volo.Abp.AutoMapper.AutoMapperAutoObjectMappingProvider`1[[Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainModule, Volo.Abp.BackgroundJobs.Domain, Version=5.3.2.0, Culture=neutral, PublicKeyToken=null]] -> λ:Volo.Abp.AutoMapper.IMapperAccessor -> λ:Volo.Abp.AutoMapper.MapperAccessor |
||||
|
|
||||
|
2022-08-23 22:20:18.884 +08:00 [ERR] An exception was thrown while activating Volo.Abp.BackgroundJobs.BackgroundJobStore -> Volo.Abp.ObjectMapping.DefaultObjectMapper`1[[Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainModule, Volo.Abp.BackgroundJobs.Domain, Version=5.3.2.0, Culture=neutral, PublicKeyToken=null]] -> Volo.Abp.AutoMapper.AutoMapperAutoObjectMappingProvider`1[[Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainModule, Volo.Abp.BackgroundJobs.Domain, Version=5.3.2.0, Culture=neutral, PublicKeyToken=null]] -> λ:Volo.Abp.AutoMapper.IMapperAccessor -> λ:Volo.Abp.AutoMapper.MapperAccessor. |
||||
|
Autofac.Core.DependencyResolutionException: An exception was thrown while activating Volo.Abp.BackgroundJobs.BackgroundJobStore -> Volo.Abp.ObjectMapping.DefaultObjectMapper`1[[Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainModule, Volo.Abp.BackgroundJobs.Domain, Version=5.3.2.0, Culture=neutral, PublicKeyToken=null]] -> Volo.Abp.AutoMapper.AutoMapperAutoObjectMappingProvider`1[[Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainModule, Volo.Abp.BackgroundJobs.Domain, Version=5.3.2.0, Culture=neutral, PublicKeyToken=null]] -> λ:Volo.Abp.AutoMapper.IMapperAccessor -> λ:Volo.Abp.AutoMapper.MapperAccessor. |
||||
|
---> AutoMapper.AutoMapperConfigurationException: |
||||
|
Unmapped members were found. Review the types and members below. |
||||
|
Add a custom mapping expression, ignore, add a custom resolver, or modify the source/destination type |
||||
|
For no matching constructor, add a no-arg ctor, add optional arguments, or map all of the constructor parameters |
||||
|
===================================================================================== |
||||
|
IdentityUser -> LoginOutput (Destination member list) |
||||
|
Volo.Abp.Identity.IdentityUser -> Lion.AbpPro.BasicManagement.Users.Dtos.LoginOutput (Destination member list) |
||||
|
|
||||
|
Unmapped properties: |
||||
|
Token |
||||
|
|
||||
|
at Volo.Abp.AutoMapper.AbpAutoMapperModule.<>c__DisplayClass2_1.<CreateMappings>g__ValidateAll|2(IConfigurationProvider config) |
||||
|
at Volo.Abp.AutoMapper.AbpAutoMapperModule.CreateMappings(IServiceProvider serviceProvider) |
||||
|
at Autofac.Extensions.DependencyInjection.AutofacRegistration.<>c__DisplayClass3_0.<Register>b__0(IComponentContext context, IEnumerable`1 parameters) |
||||
|
at Autofac.Core.Activators.Delegate.DelegateActivator.ActivateInstance(IComponentContext context, IEnumerable`1 parameters) |
||||
|
at Autofac.Core.Activators.Delegate.DelegateActivator.<ConfigurePipeline>b__2_0(ResolveRequestContext ctxt, Action`1 next) |
||||
|
at Autofac.Core.Resolving.Middleware.DelegateMiddleware.Execute(ResolveRequestContext context, Action`1 next) |
||||
|
at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.<BuildPipeline>b__1(ResolveRequestContext ctxt) |
||||
|
at Autofac.Core.Resolving.Middleware.DisposalTrackingMiddleware.Execute(ResolveRequestContext context, Action`1 next) |
||||
|
at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.<BuildPipeline>b__1(ResolveRequestContext ctxt) |
||||
|
at Autofac.Core.Resolving.Middleware.ActivatorErrorHandlingMiddleware.Execute(ResolveRequestContext context, Action`1 next) |
||||
|
--- End of inner exception stack trace --- |
||||
|
at Autofac.Core.Resolving.Middleware.ActivatorErrorHandlingMiddleware.Execute(ResolveRequestContext context, Action`1 next) |
||||
|
at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.<BuildPipeline>b__1(ResolveRequestContext ctxt) |
||||
|
at Autofac.Core.Pipeline.ResolvePipeline.Invoke(ResolveRequestContext ctxt) |
||||
|
at Autofac.Core.Resolving.Middleware.RegistrationPipelineInvokeMiddleware.Execute(ResolveRequestContext context, Action`1 next) |
||||
|
at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.<BuildPipeline>b__1(ResolveRequestContext ctxt) |
||||
|
at Autofac.Core.Resolving.Middleware.SharingMiddleware.Execute(ResolveRequestContext context, Action`1 next) |
||||
|
at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.<BuildPipeline>b__1(ResolveRequestContext ctxt) |
||||
|
at Autofac.Core.Resolving.Middleware.ScopeSelectionMiddleware.Execute(ResolveRequestContext context, Action`1 next) |
||||
|
at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.<BuildPipeline>b__1(ResolveRequestContext ctxt) |
||||
|
at Autofac.Core.Resolving.Middleware.CircularDependencyDetectorMiddleware.Execute(ResolveRequestContext context, Action`1 next) |
||||
|
at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.<BuildPipeline>b__1(ResolveRequestContext ctxt) |
||||
|
at Autofac.Core.Pipeline.ResolvePipeline.Invoke(ResolveRequestContext ctxt) |
||||
|
at Autofac.Core.Resolving.ResolveOperation.GetOrCreateInstance(ISharingLifetimeScope currentOperationScope, ResolveRequest request) |
||||
|
at Autofac.Core.Resolving.ResolveOperation.ExecuteOperation(ResolveRequest request) |
||||
|
at Autofac.Core.Resolving.ResolveOperation.Execute(ResolveRequest request) |
||||
|
at Autofac.Core.Lifetime.LifetimeScope.ResolveComponent(ResolveRequest request) |
||||
|
at Autofac.ResolutionExtensions.TryResolveService(IComponentContext context, Service service, IEnumerable`1 parameters, Object& instance) |
||||
|
at Autofac.ResolutionExtensions.ResolveService(IComponentContext context, Service service, IEnumerable`1 parameters) |
||||
|
at Autofac.ResolutionExtensions.Resolve(IComponentContext context, Type serviceType, IEnumerable`1 parameters) |
||||
|
at Autofac.ResolutionExtensions.Resolve(IComponentContext context, Type serviceType) |
||||
|
at Autofac.Extensions.DependencyInjection.AutofacServiceProvider.GetRequiredService(Type serviceType) |
||||
|
at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(IServiceProvider provider, Type serviceType) |
||||
|
at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService[T](IServiceProvider provider) |
||||
|
at Volo.Abp.BackgroundJobs.BackgroundJobWorker.DoWorkAsync(PeriodicBackgroundWorkerContext workerContext) |
||||
|
at Volo.Abp.BackgroundJobs.BackgroundJobWorker.DoWorkAsync(PeriodicBackgroundWorkerContext workerContext) |
||||
|
at Volo.Abp.BackgroundWorkers.AsyncPeriodicBackgroundWorkerBase.DoWorkAsync() |
||||
|
2022-08-23 22:20:18.910 +08:00 [ERR] ---------- Exception Data ---------- |
||||
|
ActivatorChain = Volo.Abp.BackgroundJobs.BackgroundJobStore -> Volo.Abp.ObjectMapping.DefaultObjectMapper`1[[Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainModule, Volo.Abp.BackgroundJobs.Domain, Version=5.3.2.0, Culture=neutral, PublicKeyToken=null]] -> Volo.Abp.AutoMapper.AutoMapperAutoObjectMappingProvider`1[[Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainModule, Volo.Abp.BackgroundJobs.Domain, Version=5.3.2.0, Culture=neutral, PublicKeyToken=null]] -> λ:Volo.Abp.AutoMapper.IMapperAccessor -> λ:Volo.Abp.AutoMapper.MapperAccessor |
||||
|
|
||||
|
2022-08-23 22:20:23.921 +08:00 [ERR] An exception was thrown while activating Volo.Abp.BackgroundJobs.BackgroundJobStore -> Volo.Abp.ObjectMapping.DefaultObjectMapper`1[[Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainModule, Volo.Abp.BackgroundJobs.Domain, Version=5.3.2.0, Culture=neutral, PublicKeyToken=null]] -> Volo.Abp.AutoMapper.AutoMapperAutoObjectMappingProvider`1[[Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainModule, Volo.Abp.BackgroundJobs.Domain, Version=5.3.2.0, Culture=neutral, PublicKeyToken=null]] -> λ:Volo.Abp.AutoMapper.IMapperAccessor -> λ:Volo.Abp.AutoMapper.MapperAccessor. |
||||
|
Autofac.Core.DependencyResolutionException: An exception was thrown while activating Volo.Abp.BackgroundJobs.BackgroundJobStore -> Volo.Abp.ObjectMapping.DefaultObjectMapper`1[[Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainModule, Volo.Abp.BackgroundJobs.Domain, Version=5.3.2.0, Culture=neutral, PublicKeyToken=null]] -> Volo.Abp.AutoMapper.AutoMapperAutoObjectMappingProvider`1[[Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainModule, Volo.Abp.BackgroundJobs.Domain, Version=5.3.2.0, Culture=neutral, PublicKeyToken=null]] -> λ:Volo.Abp.AutoMapper.IMapperAccessor -> λ:Volo.Abp.AutoMapper.MapperAccessor. |
||||
|
---> AutoMapper.AutoMapperConfigurationException: |
||||
|
Unmapped members were found. Review the types and members below. |
||||
|
Add a custom mapping expression, ignore, add a custom resolver, or modify the source/destination type |
||||
|
For no matching constructor, add a no-arg ctor, add optional arguments, or map all of the constructor parameters |
||||
|
===================================================================================== |
||||
|
IdentityUser -> LoginOutput (Destination member list) |
||||
|
Volo.Abp.Identity.IdentityUser -> Lion.AbpPro.BasicManagement.Users.Dtos.LoginOutput (Destination member list) |
||||
|
|
||||
|
Unmapped properties: |
||||
|
Token |
||||
|
|
||||
|
at Volo.Abp.AutoMapper.AbpAutoMapperModule.<>c__DisplayClass2_1.<CreateMappings>g__ValidateAll|2(IConfigurationProvider config) |
||||
|
at Volo.Abp.AutoMapper.AbpAutoMapperModule.CreateMappings(IServiceProvider serviceProvider) |
||||
|
at Autofac.Extensions.DependencyInjection.AutofacRegistration.<>c__DisplayClass3_0.<Register>b__0(IComponentContext context, IEnumerable`1 parameters) |
||||
|
at Autofac.Core.Activators.Delegate.DelegateActivator.ActivateInstance(IComponentContext context, IEnumerable`1 parameters) |
||||
|
at Autofac.Core.Activators.Delegate.DelegateActivator.<ConfigurePipeline>b__2_0(ResolveRequestContext ctxt, Action`1 next) |
||||
|
at Autofac.Core.Resolving.Middleware.DelegateMiddleware.Execute(ResolveRequestContext context, Action`1 next) |
||||
|
at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.<BuildPipeline>b__1(ResolveRequestContext ctxt) |
||||
|
at Autofac.Core.Resolving.Middleware.DisposalTrackingMiddleware.Execute(ResolveRequestContext context, Action`1 next) |
||||
|
at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.<BuildPipeline>b__1(ResolveRequestContext ctxt) |
||||
|
at Autofac.Core.Resolving.Middleware.ActivatorErrorHandlingMiddleware.Execute(ResolveRequestContext context, Action`1 next) |
||||
|
--- End of inner exception stack trace --- |
||||
|
at Autofac.Core.Resolving.Middleware.ActivatorErrorHandlingMiddleware.Execute(ResolveRequestContext context, Action`1 next) |
||||
|
at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.<BuildPipeline>b__1(ResolveRequestContext ctxt) |
||||
|
at Autofac.Core.Pipeline.ResolvePipeline.Invoke(ResolveRequestContext ctxt) |
||||
|
at Autofac.Core.Resolving.Middleware.RegistrationPipelineInvokeMiddleware.Execute(ResolveRequestContext context, Action`1 next) |
||||
|
at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.<BuildPipeline>b__1(ResolveRequestContext ctxt) |
||||
|
at Autofac.Core.Resolving.Middleware.SharingMiddleware.Execute(ResolveRequestContext context, Action`1 next) |
||||
|
at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.<BuildPipeline>b__1(ResolveRequestContext ctxt) |
||||
|
at Autofac.Core.Resolving.Middleware.ScopeSelectionMiddleware.Execute(ResolveRequestContext context, Action`1 next) |
||||
|
at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.<BuildPipeline>b__1(ResolveRequestContext ctxt) |
||||
|
at Autofac.Core.Resolving.Middleware.CircularDependencyDetectorMiddleware.Execute(ResolveRequestContext context, Action`1 next) |
||||
|
at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.<BuildPipeline>b__1(ResolveRequestContext ctxt) |
||||
|
at Autofac.Core.Pipeline.ResolvePipeline.Invoke(ResolveRequestContext ctxt) |
||||
|
at Autofac.Core.Resolving.ResolveOperation.GetOrCreateInstance(ISharingLifetimeScope currentOperationScope, ResolveRequest request) |
||||
|
at Autofac.Core.Resolving.ResolveOperation.ExecuteOperation(ResolveRequest request) |
||||
|
at Autofac.Core.Resolving.ResolveOperation.Execute(ResolveRequest request) |
||||
|
at Autofac.Core.Lifetime.LifetimeScope.ResolveComponent(ResolveRequest request) |
||||
|
at Autofac.ResolutionExtensions.TryResolveService(IComponentContext context, Service service, IEnumerable`1 parameters, Object& instance) |
||||
|
at Autofac.ResolutionExtensions.ResolveService(IComponentContext context, Service service, IEnumerable`1 parameters) |
||||
|
at Autofac.ResolutionExtensions.Resolve(IComponentContext context, Type serviceType, IEnumerable`1 parameters) |
||||
|
at Autofac.ResolutionExtensions.Resolve(IComponentContext context, Type serviceType) |
||||
|
at Autofac.Extensions.DependencyInjection.AutofacServiceProvider.GetRequiredService(Type serviceType) |
||||
|
at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(IServiceProvider provider, Type serviceType) |
||||
|
at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService[T](IServiceProvider provider) |
||||
|
at Volo.Abp.BackgroundJobs.BackgroundJobWorker.DoWorkAsync(PeriodicBackgroundWorkerContext workerContext) |
||||
|
at Volo.Abp.BackgroundJobs.BackgroundJobWorker.DoWorkAsync(PeriodicBackgroundWorkerContext workerContext) |
||||
|
at Volo.Abp.BackgroundWorkers.AsyncPeriodicBackgroundWorkerBase.DoWorkAsync() |
||||
|
2022-08-23 22:20:23.937 +08:00 [ERR] ---------- Exception Data ---------- |
||||
|
ActivatorChain = Volo.Abp.BackgroundJobs.BackgroundJobStore -> Volo.Abp.ObjectMapping.DefaultObjectMapper`1[[Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainModule, Volo.Abp.BackgroundJobs.Domain, Version=5.3.2.0, Culture=neutral, PublicKeyToken=null]] -> Volo.Abp.AutoMapper.AutoMapperAutoObjectMappingProvider`1[[Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainModule, Volo.Abp.BackgroundJobs.Domain, Version=5.3.2.0, Culture=neutral, PublicKeyToken=null]] -> λ:Volo.Abp.AutoMapper.IMapperAccessor -> λ:Volo.Abp.AutoMapper.MapperAccessor |
||||
|
|
||||
|
2022-08-23 22:20:28.965 +08:00 [ERR] An exception was thrown while activating Volo.Abp.BackgroundJobs.BackgroundJobStore -> Volo.Abp.ObjectMapping.DefaultObjectMapper`1[[Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainModule, Volo.Abp.BackgroundJobs.Domain, Version=5.3.2.0, Culture=neutral, PublicKeyToken=null]] -> Volo.Abp.AutoMapper.AutoMapperAutoObjectMappingProvider`1[[Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainModule, Volo.Abp.BackgroundJobs.Domain, Version=5.3.2.0, Culture=neutral, PublicKeyToken=null]] -> λ:Volo.Abp.AutoMapper.IMapperAccessor -> λ:Volo.Abp.AutoMapper.MapperAccessor. |
||||
|
Autofac.Core.DependencyResolutionException: An exception was thrown while activating Volo.Abp.BackgroundJobs.BackgroundJobStore -> Volo.Abp.ObjectMapping.DefaultObjectMapper`1[[Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainModule, Volo.Abp.BackgroundJobs.Domain, Version=5.3.2.0, Culture=neutral, PublicKeyToken=null]] -> Volo.Abp.AutoMapper.AutoMapperAutoObjectMappingProvider`1[[Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainModule, Volo.Abp.BackgroundJobs.Domain, Version=5.3.2.0, Culture=neutral, PublicKeyToken=null]] -> λ:Volo.Abp.AutoMapper.IMapperAccessor -> λ:Volo.Abp.AutoMapper.MapperAccessor. |
||||
|
---> AutoMapper.AutoMapperConfigurationException: |
||||
|
Unmapped members were found. Review the types and members below. |
||||
|
Add a custom mapping expression, ignore, add a custom resolver, or modify the source/destination type |
||||
|
For no matching constructor, add a no-arg ctor, add optional arguments, or map all of the constructor parameters |
||||
|
===================================================================================== |
||||
|
IdentityUser -> LoginOutput (Destination member list) |
||||
|
Volo.Abp.Identity.IdentityUser -> Lion.AbpPro.BasicManagement.Users.Dtos.LoginOutput (Destination member list) |
||||
|
|
||||
|
Unmapped properties: |
||||
|
Token |
||||
|
|
||||
|
at Volo.Abp.AutoMapper.AbpAutoMapperModule.<>c__DisplayClass2_1.<CreateMappings>g__ValidateAll|2(IConfigurationProvider config) |
||||
|
at Volo.Abp.AutoMapper.AbpAutoMapperModule.CreateMappings(IServiceProvider serviceProvider) |
||||
|
at Autofac.Extensions.DependencyInjection.AutofacRegistration.<>c__DisplayClass3_0.<Register>b__0(IComponentContext context, IEnumerable`1 parameters) |
||||
|
at Autofac.Core.Activators.Delegate.DelegateActivator.ActivateInstance(IComponentContext context, IEnumerable`1 parameters) |
||||
|
at Autofac.Core.Activators.Delegate.DelegateActivator.<ConfigurePipeline>b__2_0(ResolveRequestContext ctxt, Action`1 next) |
||||
|
at Autofac.Core.Resolving.Middleware.DelegateMiddleware.Execute(ResolveRequestContext context, Action`1 next) |
||||
|
at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.<BuildPipeline>b__1(ResolveRequestContext ctxt) |
||||
|
at Autofac.Core.Resolving.Middleware.DisposalTrackingMiddleware.Execute(ResolveRequestContext context, Action`1 next) |
||||
|
at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.<BuildPipeline>b__1(ResolveRequestContext ctxt) |
||||
|
at Autofac.Core.Resolving.Middleware.ActivatorErrorHandlingMiddleware.Execute(ResolveRequestContext context, Action`1 next) |
||||
|
--- End of inner exception stack trace --- |
||||
|
at Autofac.Core.Resolving.Middleware.ActivatorErrorHandlingMiddleware.Execute(ResolveRequestContext context, Action`1 next) |
||||
|
at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.<BuildPipeline>b__1(ResolveRequestContext ctxt) |
||||
|
at Autofac.Core.Pipeline.ResolvePipeline.Invoke(ResolveRequestContext ctxt) |
||||
|
at Autofac.Core.Resolving.Middleware.RegistrationPipelineInvokeMiddleware.Execute(ResolveRequestContext context, Action`1 next) |
||||
|
at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.<BuildPipeline>b__1(ResolveRequestContext ctxt) |
||||
|
at Autofac.Core.Resolving.Middleware.SharingMiddleware.Execute(ResolveRequestContext context, Action`1 next) |
||||
|
at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.<BuildPipeline>b__1(ResolveRequestContext ctxt) |
||||
|
at Autofac.Core.Resolving.Middleware.ScopeSelectionMiddleware.Execute(ResolveRequestContext context, Action`1 next) |
||||
|
at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.<BuildPipeline>b__1(ResolveRequestContext ctxt) |
||||
|
at Autofac.Core.Resolving.Middleware.CircularDependencyDetectorMiddleware.Execute(ResolveRequestContext context, Action`1 next) |
||||
|
at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.<BuildPipeline>b__1(ResolveRequestContext ctxt) |
||||
|
at Autofac.Core.Pipeline.ResolvePipeline.Invoke(ResolveRequestContext ctxt) |
||||
|
at Autofac.Core.Resolving.ResolveOperation.GetOrCreateInstance(ISharingLifetimeScope currentOperationScope, ResolveRequest request) |
||||
|
at Autofac.Core.Resolving.ResolveOperation.ExecuteOperation(ResolveRequest request) |
||||
|
at Autofac.Core.Resolving.ResolveOperation.Execute(ResolveRequest request) |
||||
|
at Autofac.Core.Lifetime.LifetimeScope.ResolveComponent(ResolveRequest request) |
||||
|
at Autofac.ResolutionExtensions.TryResolveService(IComponentContext context, Service service, IEnumerable`1 parameters, Object& instance) |
||||
|
at Autofac.ResolutionExtensions.ResolveService(IComponentContext context, Service service, IEnumerable`1 parameters) |
||||
|
at Autofac.ResolutionExtensions.Resolve(IComponentContext context, Type serviceType, IEnumerable`1 parameters) |
||||
|
at Autofac.ResolutionExtensions.Resolve(IComponentContext context, Type serviceType) |
||||
|
at Autofac.Extensions.DependencyInjection.AutofacServiceProvider.GetRequiredService(Type serviceType) |
||||
|
at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(IServiceProvider provider, Type serviceType) |
||||
|
at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService[T](IServiceProvider provider) |
||||
|
at Volo.Abp.BackgroundJobs.BackgroundJobWorker.DoWorkAsync(PeriodicBackgroundWorkerContext workerContext) |
||||
|
at Volo.Abp.BackgroundJobs.BackgroundJobWorker.DoWorkAsync(PeriodicBackgroundWorkerContext workerContext) |
||||
|
at Volo.Abp.BackgroundWorkers.AsyncPeriodicBackgroundWorkerBase.DoWorkAsync() |
||||
|
2022-08-23 22:20:28.994 +08:00 [ERR] ---------- Exception Data ---------- |
||||
|
ActivatorChain = Volo.Abp.BackgroundJobs.BackgroundJobStore -> Volo.Abp.ObjectMapping.DefaultObjectMapper`1[[Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainModule, Volo.Abp.BackgroundJobs.Domain, Version=5.3.2.0, Culture=neutral, PublicKeyToken=null]] -> Volo.Abp.AutoMapper.AutoMapperAutoObjectMappingProvider`1[[Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainModule, Volo.Abp.BackgroundJobs.Domain, Version=5.3.2.0, Culture=neutral, PublicKeyToken=null]] -> λ:Volo.Abp.AutoMapper.IMapperAccessor -> λ:Volo.Abp.AutoMapper.MapperAccessor |
||||
|
|
||||
|
2022-08-23 22:20:34.011 +08:00 [ERR] An exception was thrown while activating Volo.Abp.BackgroundJobs.BackgroundJobStore -> Volo.Abp.ObjectMapping.DefaultObjectMapper`1[[Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainModule, Volo.Abp.BackgroundJobs.Domain, Version=5.3.2.0, Culture=neutral, PublicKeyToken=null]] -> Volo.Abp.AutoMapper.AutoMapperAutoObjectMappingProvider`1[[Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainModule, Volo.Abp.BackgroundJobs.Domain, Version=5.3.2.0, Culture=neutral, PublicKeyToken=null]] -> λ:Volo.Abp.AutoMapper.IMapperAccessor -> λ:Volo.Abp.AutoMapper.MapperAccessor. |
||||
|
Autofac.Core.DependencyResolutionException: An exception was thrown while activating Volo.Abp.BackgroundJobs.BackgroundJobStore -> Volo.Abp.ObjectMapping.DefaultObjectMapper`1[[Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainModule, Volo.Abp.BackgroundJobs.Domain, Version=5.3.2.0, Culture=neutral, PublicKeyToken=null]] -> Volo.Abp.AutoMapper.AutoMapperAutoObjectMappingProvider`1[[Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainModule, Volo.Abp.BackgroundJobs.Domain, Version=5.3.2.0, Culture=neutral, PublicKeyToken=null]] -> λ:Volo.Abp.AutoMapper.IMapperAccessor -> λ:Volo.Abp.AutoMapper.MapperAccessor. |
||||
|
---> AutoMapper.AutoMapperConfigurationException: |
||||
|
Unmapped members were found. Review the types and members below. |
||||
|
Add a custom mapping expression, ignore, add a custom resolver, or modify the source/destination type |
||||
|
For no matching constructor, add a no-arg ctor, add optional arguments, or map all of the constructor parameters |
||||
|
===================================================================================== |
||||
|
IdentityUser -> LoginOutput (Destination member list) |
||||
|
Volo.Abp.Identity.IdentityUser -> Lion.AbpPro.BasicManagement.Users.Dtos.LoginOutput (Destination member list) |
||||
|
|
||||
|
Unmapped properties: |
||||
|
Token |
||||
|
|
||||
|
at Volo.Abp.AutoMapper.AbpAutoMapperModule.<>c__DisplayClass2_1.<CreateMappings>g__ValidateAll|2(IConfigurationProvider config) |
||||
|
at Volo.Abp.AutoMapper.AbpAutoMapperModule.CreateMappings(IServiceProvider serviceProvider) |
||||
|
at Autofac.Extensions.DependencyInjection.AutofacRegistration.<>c__DisplayClass3_0.<Register>b__0(IComponentContext context, IEnumerable`1 parameters) |
||||
|
at Autofac.Core.Activators.Delegate.DelegateActivator.ActivateInstance(IComponentContext context, IEnumerable`1 parameters) |
||||
|
at Autofac.Core.Activators.Delegate.DelegateActivator.<ConfigurePipeline>b__2_0(ResolveRequestContext ctxt, Action`1 next) |
||||
|
at Autofac.Core.Resolving.Middleware.DelegateMiddleware.Execute(ResolveRequestContext context, Action`1 next) |
||||
|
at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.<BuildPipeline>b__1(ResolveRequestContext ctxt) |
||||
|
at Autofac.Core.Resolving.Middleware.DisposalTrackingMiddleware.Execute(ResolveRequestContext context, Action`1 next) |
||||
|
at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.<BuildPipeline>b__1(ResolveRequestContext ctxt) |
||||
|
at Autofac.Core.Resolving.Middleware.ActivatorErrorHandlingMiddleware.Execute(ResolveRequestContext context, Action`1 next) |
||||
|
--- End of inner exception stack trace --- |
||||
|
at Autofac.Core.Resolving.Middleware.ActivatorErrorHandlingMiddleware.Execute(ResolveRequestContext context, Action`1 next) |
||||
|
at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.<BuildPipeline>b__1(ResolveRequestContext ctxt) |
||||
|
at Autofac.Core.Pipeline.ResolvePipeline.Invoke(ResolveRequestContext ctxt) |
||||
|
at Autofac.Core.Resolving.Middleware.RegistrationPipelineInvokeMiddleware.Execute(ResolveRequestContext context, Action`1 next) |
||||
|
at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.<BuildPipeline>b__1(ResolveRequestContext ctxt) |
||||
|
at Autofac.Core.Resolving.Middleware.SharingMiddleware.Execute(ResolveRequestContext context, Action`1 next) |
||||
|
at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.<BuildPipeline>b__1(ResolveRequestContext ctxt) |
||||
|
at Autofac.Core.Resolving.Middleware.ScopeSelectionMiddleware.Execute(ResolveRequestContext context, Action`1 next) |
||||
|
at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.<BuildPipeline>b__1(ResolveRequestContext ctxt) |
||||
|
at Autofac.Core.Resolving.Middleware.CircularDependencyDetectorMiddleware.Execute(ResolveRequestContext context, Action`1 next) |
||||
|
at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.<BuildPipeline>b__1(ResolveRequestContext ctxt) |
||||
|
at Autofac.Core.Pipeline.ResolvePipeline.Invoke(ResolveRequestContext ctxt) |
||||
|
at Autofac.Core.Resolving.ResolveOperation.GetOrCreateInstance(ISharingLifetimeScope currentOperationScope, ResolveRequest request) |
||||
|
at Autofac.Core.Resolving.ResolveOperation.ExecuteOperation(ResolveRequest request) |
||||
|
at Autofac.Core.Resolving.ResolveOperation.Execute(ResolveRequest request) |
||||
|
at Autofac.Core.Lifetime.LifetimeScope.ResolveComponent(ResolveRequest request) |
||||
|
at Autofac.ResolutionExtensions.TryResolveService(IComponentContext context, Service service, IEnumerable`1 parameters, Object& instance) |
||||
|
at Autofac.ResolutionExtensions.ResolveService(IComponentContext context, Service service, IEnumerable`1 parameters) |
||||
|
at Autofac.ResolutionExtensions.Resolve(IComponentContext context, Type serviceType, IEnumerable`1 parameters) |
||||
|
at Autofac.ResolutionExtensions.Resolve(IComponentContext context, Type serviceType) |
||||
|
at Autofac.Extensions.DependencyInjection.AutofacServiceProvider.GetRequiredService(Type serviceType) |
||||
|
at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(IServiceProvider provider, Type serviceType) |
||||
|
at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService[T](IServiceProvider provider) |
||||
|
at Volo.Abp.BackgroundJobs.BackgroundJobWorker.DoWorkAsync(PeriodicBackgroundWorkerContext workerContext) |
||||
|
at Volo.Abp.BackgroundJobs.BackgroundJobWorker.DoWorkAsync(PeriodicBackgroundWorkerContext workerContext) |
||||
|
at Volo.Abp.BackgroundWorkers.AsyncPeriodicBackgroundWorkerBase.DoWorkAsync() |
||||
|
2022-08-23 22:20:34.040 +08:00 [ERR] ---------- Exception Data ---------- |
||||
|
ActivatorChain = Volo.Abp.BackgroundJobs.BackgroundJobStore -> Volo.Abp.ObjectMapping.DefaultObjectMapper`1[[Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainModule, Volo.Abp.BackgroundJobs.Domain, Version=5.3.2.0, Culture=neutral, PublicKeyToken=null]] -> Volo.Abp.AutoMapper.AutoMapperAutoObjectMappingProvider`1[[Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainModule, Volo.Abp.BackgroundJobs.Domain, Version=5.3.2.0, Culture=neutral, PublicKeyToken=null]] -> λ:Volo.Abp.AutoMapper.IMapperAccessor -> λ:Volo.Abp.AutoMapper.MapperAccessor |
||||
|
|
||||
|
2022-08-23 22:20:39.058 +08:00 [ERR] An exception was thrown while activating Volo.Abp.BackgroundJobs.BackgroundJobStore -> Volo.Abp.ObjectMapping.DefaultObjectMapper`1[[Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainModule, Volo.Abp.BackgroundJobs.Domain, Version=5.3.2.0, Culture=neutral, PublicKeyToken=null]] -> Volo.Abp.AutoMapper.AutoMapperAutoObjectMappingProvider`1[[Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainModule, Volo.Abp.BackgroundJobs.Domain, Version=5.3.2.0, Culture=neutral, PublicKeyToken=null]] -> λ:Volo.Abp.AutoMapper.IMapperAccessor -> λ:Volo.Abp.AutoMapper.MapperAccessor. |
||||
|
Autofac.Core.DependencyResolutionException: An exception was thrown while activating Volo.Abp.BackgroundJobs.BackgroundJobStore -> Volo.Abp.ObjectMapping.DefaultObjectMapper`1[[Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainModule, Volo.Abp.BackgroundJobs.Domain, Version=5.3.2.0, Culture=neutral, PublicKeyToken=null]] -> Volo.Abp.AutoMapper.AutoMapperAutoObjectMappingProvider`1[[Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainModule, Volo.Abp.BackgroundJobs.Domain, Version=5.3.2.0, Culture=neutral, PublicKeyToken=null]] -> λ:Volo.Abp.AutoMapper.IMapperAccessor -> λ:Volo.Abp.AutoMapper.MapperAccessor. |
||||
|
---> AutoMapper.AutoMapperConfigurationException: |
||||
|
Unmapped members were found. Review the types and members below. |
||||
|
Add a custom mapping expression, ignore, add a custom resolver, or modify the source/destination type |
||||
|
For no matching constructor, add a no-arg ctor, add optional arguments, or map all of the constructor parameters |
||||
|
===================================================================================== |
||||
|
IdentityUser -> LoginOutput (Destination member list) |
||||
|
Volo.Abp.Identity.IdentityUser -> Lion.AbpPro.BasicManagement.Users.Dtos.LoginOutput (Destination member list) |
||||
|
|
||||
|
Unmapped properties: |
||||
|
Token |
||||
|
|
||||
|
at Volo.Abp.AutoMapper.AbpAutoMapperModule.<>c__DisplayClass2_1.<CreateMappings>g__ValidateAll|2(IConfigurationProvider config) |
||||
|
at Volo.Abp.AutoMapper.AbpAutoMapperModule.CreateMappings(IServiceProvider serviceProvider) |
||||
|
at Autofac.Extensions.DependencyInjection.AutofacRegistration.<>c__DisplayClass3_0.<Register>b__0(IComponentContext context, IEnumerable`1 parameters) |
||||
|
at Autofac.Core.Activators.Delegate.DelegateActivator.ActivateInstance(IComponentContext context, IEnumerable`1 parameters) |
||||
|
at Autofac.Core.Activators.Delegate.DelegateActivator.<ConfigurePipeline>b__2_0(ResolveRequestContext ctxt, Action`1 next) |
||||
|
at Autofac.Core.Resolving.Middleware.DelegateMiddleware.Execute(ResolveRequestContext context, Action`1 next) |
||||
|
at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.<BuildPipeline>b__1(ResolveRequestContext ctxt) |
||||
|
at Autofac.Core.Resolving.Middleware.DisposalTrackingMiddleware.Execute(ResolveRequestContext context, Action`1 next) |
||||
|
at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.<BuildPipeline>b__1(ResolveRequestContext ctxt) |
||||
|
at Autofac.Core.Resolving.Middleware.ActivatorErrorHandlingMiddleware.Execute(ResolveRequestContext context, Action`1 next) |
||||
|
--- End of inner exception stack trace --- |
||||
|
at Autofac.Core.Resolving.Middleware.ActivatorErrorHandlingMiddleware.Execute(ResolveRequestContext context, Action`1 next) |
||||
|
at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.<BuildPipeline>b__1(ResolveRequestContext ctxt) |
||||
|
at Autofac.Core.Pipeline.ResolvePipeline.Invoke(ResolveRequestContext ctxt) |
||||
|
at Autofac.Core.Resolving.Middleware.RegistrationPipelineInvokeMiddleware.Execute(ResolveRequestContext context, Action`1 next) |
||||
|
at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.<BuildPipeline>b__1(ResolveRequestContext ctxt) |
||||
|
at Autofac.Core.Resolving.Middleware.SharingMiddleware.Execute(ResolveRequestContext context, Action`1 next) |
||||
|
at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.<BuildPipeline>b__1(ResolveRequestContext ctxt) |
||||
|
at Autofac.Core.Resolving.Middleware.ScopeSelectionMiddleware.Execute(ResolveRequestContext context, Action`1 next) |
||||
|
at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.<BuildPipeline>b__1(ResolveRequestContext ctxt) |
||||
|
at Autofac.Core.Resolving.Middleware.CircularDependencyDetectorMiddleware.Execute(ResolveRequestContext context, Action`1 next) |
||||
|
at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.<BuildPipeline>b__1(ResolveRequestContext ctxt) |
||||
|
at Autofac.Core.Pipeline.ResolvePipeline.Invoke(ResolveRequestContext ctxt) |
||||
|
at Autofac.Core.Resolving.ResolveOperation.GetOrCreateInstance(ISharingLifetimeScope currentOperationScope, ResolveRequest request) |
||||
|
at Autofac.Core.Resolving.ResolveOperation.ExecuteOperation(ResolveRequest request) |
||||
|
at Autofac.Core.Resolving.ResolveOperation.Execute(ResolveRequest request) |
||||
|
at Autofac.Core.Lifetime.LifetimeScope.ResolveComponent(ResolveRequest request) |
||||
|
at Autofac.ResolutionExtensions.TryResolveService(IComponentContext context, Service service, IEnumerable`1 parameters, Object& instance) |
||||
|
at Autofac.ResolutionExtensions.ResolveService(IComponentContext context, Service service, IEnumerable`1 parameters) |
||||
|
at Autofac.ResolutionExtensions.Resolve(IComponentContext context, Type serviceType, IEnumerable`1 parameters) |
||||
|
at Autofac.ResolutionExtensions.Resolve(IComponentContext context, Type serviceType) |
||||
|
at Autofac.Extensions.DependencyInjection.AutofacServiceProvider.GetRequiredService(Type serviceType) |
||||
|
at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(IServiceProvider provider, Type serviceType) |
||||
|
at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService[T](IServiceProvider provider) |
||||
|
at Volo.Abp.BackgroundJobs.BackgroundJobWorker.DoWorkAsync(PeriodicBackgroundWorkerContext workerContext) |
||||
|
at Volo.Abp.BackgroundJobs.BackgroundJobWorker.DoWorkAsync(PeriodicBackgroundWorkerContext workerContext) |
||||
|
at Volo.Abp.BackgroundWorkers.AsyncPeriodicBackgroundWorkerBase.DoWorkAsync() |
||||
|
2022-08-23 22:20:39.083 +08:00 [ERR] ---------- Exception Data ---------- |
||||
|
ActivatorChain = Volo.Abp.BackgroundJobs.BackgroundJobStore -> Volo.Abp.ObjectMapping.DefaultObjectMapper`1[[Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainModule, Volo.Abp.BackgroundJobs.Domain, Version=5.3.2.0, Culture=neutral, PublicKeyToken=null]] -> Volo.Abp.AutoMapper.AutoMapperAutoObjectMappingProvider`1[[Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainModule, Volo.Abp.BackgroundJobs.Domain, Version=5.3.2.0, Culture=neutral, PublicKeyToken=null]] -> λ:Volo.Abp.AutoMapper.IMapperAccessor -> λ:Volo.Abp.AutoMapper.MapperAccessor |
||||
|
|
||||
|
2022-08-23 22:20:44.107 +08:00 [ERR] An exception was thrown while activating Volo.Abp.BackgroundJobs.BackgroundJobStore -> Volo.Abp.ObjectMapping.DefaultObjectMapper`1[[Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainModule, Volo.Abp.BackgroundJobs.Domain, Version=5.3.2.0, Culture=neutral, PublicKeyToken=null]] -> Volo.Abp.AutoMapper.AutoMapperAutoObjectMappingProvider`1[[Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainModule, Volo.Abp.BackgroundJobs.Domain, Version=5.3.2.0, Culture=neutral, PublicKeyToken=null]] -> λ:Volo.Abp.AutoMapper.IMapperAccessor -> λ:Volo.Abp.AutoMapper.MapperAccessor. |
||||
|
Autofac.Core.DependencyResolutionException: An exception was thrown while activating Volo.Abp.BackgroundJobs.BackgroundJobStore -> Volo.Abp.ObjectMapping.DefaultObjectMapper`1[[Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainModule, Volo.Abp.BackgroundJobs.Domain, Version=5.3.2.0, Culture=neutral, PublicKeyToken=null]] -> Volo.Abp.AutoMapper.AutoMapperAutoObjectMappingProvider`1[[Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainModule, Volo.Abp.BackgroundJobs.Domain, Version=5.3.2.0, Culture=neutral, PublicKeyToken=null]] -> λ:Volo.Abp.AutoMapper.IMapperAccessor -> λ:Volo.Abp.AutoMapper.MapperAccessor. |
||||
|
---> AutoMapper.AutoMapperConfigurationException: |
||||
|
Unmapped members were found. Review the types and members below. |
||||
|
Add a custom mapping expression, ignore, add a custom resolver, or modify the source/destination type |
||||
|
For no matching constructor, add a no-arg ctor, add optional arguments, or map all of the constructor parameters |
||||
|
===================================================================================== |
||||
|
IdentityUser -> LoginOutput (Destination member list) |
||||
|
Volo.Abp.Identity.IdentityUser -> Lion.AbpPro.BasicManagement.Users.Dtos.LoginOutput (Destination member list) |
||||
|
|
||||
|
Unmapped properties: |
||||
|
Token |
||||
|
|
||||
|
at Volo.Abp.AutoMapper.AbpAutoMapperModule.<>c__DisplayClass2_1.<CreateMappings>g__ValidateAll|2(IConfigurationProvider config) |
||||
|
at Volo.Abp.AutoMapper.AbpAutoMapperModule.CreateMappings(IServiceProvider serviceProvider) |
||||
|
at Autofac.Extensions.DependencyInjection.AutofacRegistration.<>c__DisplayClass3_0.<Register>b__0(IComponentContext context, IEnumerable`1 parameters) |
||||
|
at Autofac.Core.Activators.Delegate.DelegateActivator.ActivateInstance(IComponentContext context, IEnumerable`1 parameters) |
||||
|
at Autofac.Core.Activators.Delegate.DelegateActivator.<ConfigurePipeline>b__2_0(ResolveRequestContext ctxt, Action`1 next) |
||||
|
at Autofac.Core.Resolving.Middleware.DelegateMiddleware.Execute(ResolveRequestContext context, Action`1 next) |
||||
|
at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.<BuildPipeline>b__1(ResolveRequestContext ctxt) |
||||
|
at Autofac.Core.Resolving.Middleware.DisposalTrackingMiddleware.Execute(ResolveRequestContext context, Action`1 next) |
||||
|
at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.<BuildPipeline>b__1(ResolveRequestContext ctxt) |
||||
|
at Autofac.Core.Resolving.Middleware.ActivatorErrorHandlingMiddleware.Execute(ResolveRequestContext context, Action`1 next) |
||||
|
--- End of inner exception stack trace --- |
||||
|
at Autofac.Core.Resolving.Middleware.ActivatorErrorHandlingMiddleware.Execute(ResolveRequestContext context, Action`1 next) |
||||
|
at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.<BuildPipeline>b__1(ResolveRequestContext ctxt) |
||||
|
at Autofac.Core.Pipeline.ResolvePipeline.Invoke(ResolveRequestContext ctxt) |
||||
|
at Autofac.Core.Resolving.Middleware.RegistrationPipelineInvokeMiddleware.Execute(ResolveRequestContext context, Action`1 next) |
||||
|
at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.<BuildPipeline>b__1(ResolveRequestContext ctxt) |
||||
|
at Autofac.Core.Resolving.Middleware.SharingMiddleware.Execute(ResolveRequestContext context, Action`1 next) |
||||
|
at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.<BuildPipeline>b__1(ResolveRequestContext ctxt) |
||||
|
at Autofac.Core.Resolving.Middleware.ScopeSelectionMiddleware.Execute(ResolveRequestContext context, Action`1 next) |
||||
|
at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.<BuildPipeline>b__1(ResolveRequestContext ctxt) |
||||
|
at Autofac.Core.Resolving.Middleware.CircularDependencyDetectorMiddleware.Execute(ResolveRequestContext context, Action`1 next) |
||||
|
at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.<BuildPipeline>b__1(ResolveRequestContext ctxt) |
||||
|
at Autofac.Core.Pipeline.ResolvePipeline.Invoke(ResolveRequestContext ctxt) |
||||
|
at Autofac.Core.Resolving.ResolveOperation.GetOrCreateInstance(ISharingLifetimeScope currentOperationScope, ResolveRequest request) |
||||
|
at Autofac.Core.Resolving.ResolveOperation.ExecuteOperation(ResolveRequest request) |
||||
|
at Autofac.Core.Resolving.ResolveOperation.Execute(ResolveRequest request) |
||||
|
at Autofac.Core.Lifetime.LifetimeScope.ResolveComponent(ResolveRequest request) |
||||
|
at Autofac.ResolutionExtensions.TryResolveService(IComponentContext context, Service service, IEnumerable`1 parameters, Object& instance) |
||||
|
at Autofac.ResolutionExtensions.ResolveService(IComponentContext context, Service service, IEnumerable`1 parameters) |
||||
|
at Autofac.ResolutionExtensions.Resolve(IComponentContext context, Type serviceType, IEnumerable`1 parameters) |
||||
|
at Autofac.ResolutionExtensions.Resolve(IComponentContext context, Type serviceType) |
||||
|
at Autofac.Extensions.DependencyInjection.AutofacServiceProvider.GetRequiredService(Type serviceType) |
||||
|
at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(IServiceProvider provider, Type serviceType) |
||||
|
at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService[T](IServiceProvider provider) |
||||
|
at Volo.Abp.BackgroundJobs.BackgroundJobWorker.DoWorkAsync(PeriodicBackgroundWorkerContext workerContext) |
||||
|
at Volo.Abp.BackgroundJobs.BackgroundJobWorker.DoWorkAsync(PeriodicBackgroundWorkerContext workerContext) |
||||
|
at Volo.Abp.BackgroundWorkers.AsyncPeriodicBackgroundWorkerBase.DoWorkAsync() |
||||
|
2022-08-23 22:20:44.124 +08:00 [ERR] ---------- Exception Data ---------- |
||||
|
ActivatorChain = Volo.Abp.BackgroundJobs.BackgroundJobStore -> Volo.Abp.ObjectMapping.DefaultObjectMapper`1[[Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainModule, Volo.Abp.BackgroundJobs.Domain, Version=5.3.2.0, Culture=neutral, PublicKeyToken=null]] -> Volo.Abp.AutoMapper.AutoMapperAutoObjectMappingProvider`1[[Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainModule, Volo.Abp.BackgroundJobs.Domain, Version=5.3.2.0, Culture=neutral, PublicKeyToken=null]] -> λ:Volo.Abp.AutoMapper.IMapperAccessor -> λ:Volo.Abp.AutoMapper.MapperAccessor |
||||
|
|
||||
|
2022-08-23 22:20:49.136 +08:00 [ERR] An exception was thrown while activating Volo.Abp.BackgroundJobs.BackgroundJobStore -> Volo.Abp.ObjectMapping.DefaultObjectMapper`1[[Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainModule, Volo.Abp.BackgroundJobs.Domain, Version=5.3.2.0, Culture=neutral, PublicKeyToken=null]] -> Volo.Abp.AutoMapper.AutoMapperAutoObjectMappingProvider`1[[Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainModule, Volo.Abp.BackgroundJobs.Domain, Version=5.3.2.0, Culture=neutral, PublicKeyToken=null]] -> λ:Volo.Abp.AutoMapper.IMapperAccessor -> λ:Volo.Abp.AutoMapper.MapperAccessor. |
||||
|
Autofac.Core.DependencyResolutionException: An exception was thrown while activating Volo.Abp.BackgroundJobs.BackgroundJobStore -> Volo.Abp.ObjectMapping.DefaultObjectMapper`1[[Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainModule, Volo.Abp.BackgroundJobs.Domain, Version=5.3.2.0, Culture=neutral, PublicKeyToken=null]] -> Volo.Abp.AutoMapper.AutoMapperAutoObjectMappingProvider`1[[Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainModule, Volo.Abp.BackgroundJobs.Domain, Version=5.3.2.0, Culture=neutral, PublicKeyToken=null]] -> λ:Volo.Abp.AutoMapper.IMapperAccessor -> λ:Volo.Abp.AutoMapper.MapperAccessor. |
||||
|
---> AutoMapper.AutoMapperConfigurationException: |
||||
|
Unmapped members were found. Review the types and members below. |
||||
|
Add a custom mapping expression, ignore, add a custom resolver, or modify the source/destination type |
||||
|
For no matching constructor, add a no-arg ctor, add optional arguments, or map all of the constructor parameters |
||||
|
===================================================================================== |
||||
|
IdentityUser -> LoginOutput (Destination member list) |
||||
|
Volo.Abp.Identity.IdentityUser -> Lion.AbpPro.BasicManagement.Users.Dtos.LoginOutput (Destination member list) |
||||
|
|
||||
|
Unmapped properties: |
||||
|
Token |
||||
|
|
||||
|
at Volo.Abp.AutoMapper.AbpAutoMapperModule.<>c__DisplayClass2_1.<CreateMappings>g__ValidateAll|2(IConfigurationProvider config) |
||||
|
at Volo.Abp.AutoMapper.AbpAutoMapperModule.CreateMappings(IServiceProvider serviceProvider) |
||||
|
at Autofac.Extensions.DependencyInjection.AutofacRegistration.<>c__DisplayClass3_0.<Register>b__0(IComponentContext context, IEnumerable`1 parameters) |
||||
|
at Autofac.Core.Activators.Delegate.DelegateActivator.ActivateInstance(IComponentContext context, IEnumerable`1 parameters) |
||||
|
at Autofac.Core.Activators.Delegate.DelegateActivator.<ConfigurePipeline>b__2_0(ResolveRequestContext ctxt, Action`1 next) |
||||
|
at Autofac.Core.Resolving.Middleware.DelegateMiddleware.Execute(ResolveRequestContext context, Action`1 next) |
||||
|
at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.<BuildPipeline>b__1(ResolveRequestContext ctxt) |
||||
|
at Autofac.Core.Resolving.Middleware.DisposalTrackingMiddleware.Execute(ResolveRequestContext context, Action`1 next) |
||||
|
at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.<BuildPipeline>b__1(ResolveRequestContext ctxt) |
||||
|
at Autofac.Core.Resolving.Middleware.ActivatorErrorHandlingMiddleware.Execute(ResolveRequestContext context, Action`1 next) |
||||
|
--- End of inner exception stack trace --- |
||||
|
at Autofac.Core.Resolving.Middleware.ActivatorErrorHandlingMiddleware.Execute(ResolveRequestContext context, Action`1 next) |
||||
|
at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.<BuildPipeline>b__1(ResolveRequestContext ctxt) |
||||
|
at Autofac.Core.Pipeline.ResolvePipeline.Invoke(ResolveRequestContext ctxt) |
||||
|
at Autofac.Core.Resolving.Middleware.RegistrationPipelineInvokeMiddleware.Execute(ResolveRequestContext context, Action`1 next) |
||||
|
at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.<BuildPipeline>b__1(ResolveRequestContext ctxt) |
||||
|
at Autofac.Core.Resolving.Middleware.SharingMiddleware.Execute(ResolveRequestContext context, Action`1 next) |
||||
|
at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.<BuildPipeline>b__1(ResolveRequestContext ctxt) |
||||
|
at Autofac.Core.Resolving.Middleware.ScopeSelectionMiddleware.Execute(ResolveRequestContext context, Action`1 next) |
||||
|
at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.<BuildPipeline>b__1(ResolveRequestContext ctxt) |
||||
|
at Autofac.Core.Resolving.Middleware.CircularDependencyDetectorMiddleware.Execute(ResolveRequestContext context, Action`1 next) |
||||
|
at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.<BuildPipeline>b__1(ResolveRequestContext ctxt) |
||||
|
at Autofac.Core.Pipeline.ResolvePipeline.Invoke(ResolveRequestContext ctxt) |
||||
|
at Autofac.Core.Resolving.ResolveOperation.GetOrCreateInstance(ISharingLifetimeScope currentOperationScope, ResolveRequest request) |
||||
|
at Autofac.Core.Resolving.ResolveOperation.ExecuteOperation(ResolveRequest request) |
||||
|
at Autofac.Core.Resolving.ResolveOperation.Execute(ResolveRequest request) |
||||
|
at Autofac.Core.Lifetime.LifetimeScope.ResolveComponent(ResolveRequest request) |
||||
|
at Autofac.ResolutionExtensions.TryResolveService(IComponentContext context, Service service, IEnumerable`1 parameters, Object& instance) |
||||
|
at Autofac.ResolutionExtensions.ResolveService(IComponentContext context, Service service, IEnumerable`1 parameters) |
||||
|
at Autofac.ResolutionExtensions.Resolve(IComponentContext context, Type serviceType, IEnumerable`1 parameters) |
||||
|
at Autofac.ResolutionExtensions.Resolve(IComponentContext context, Type serviceType) |
||||
|
at Autofac.Extensions.DependencyInjection.AutofacServiceProvider.GetRequiredService(Type serviceType) |
||||
|
at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(IServiceProvider provider, Type serviceType) |
||||
|
at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService[T](IServiceProvider provider) |
||||
|
at Volo.Abp.BackgroundJobs.BackgroundJobWorker.DoWorkAsync(PeriodicBackgroundWorkerContext workerContext) |
||||
|
at Volo.Abp.BackgroundJobs.BackgroundJobWorker.DoWorkAsync(PeriodicBackgroundWorkerContext workerContext) |
||||
|
at Volo.Abp.BackgroundWorkers.AsyncPeriodicBackgroundWorkerBase.DoWorkAsync() |
||||
|
2022-08-23 22:20:49.152 +08:00 [ERR] ---------- Exception Data ---------- |
||||
|
ActivatorChain = Volo.Abp.BackgroundJobs.BackgroundJobStore -> Volo.Abp.ObjectMapping.DefaultObjectMapper`1[[Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainModule, Volo.Abp.BackgroundJobs.Domain, Version=5.3.2.0, Culture=neutral, PublicKeyToken=null]] -> Volo.Abp.AutoMapper.AutoMapperAutoObjectMappingProvider`1[[Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainModule, Volo.Abp.BackgroundJobs.Domain, Version=5.3.2.0, Culture=neutral, PublicKeyToken=null]] -> λ:Volo.Abp.AutoMapper.IMapperAccessor -> λ:Volo.Abp.AutoMapper.MapperAccessor |
||||
|
|
||||
|
2022-08-23 22:21:24.843 +08:00 [INF] Loaded ABP modules: |
||||
|
2022-08-23 22:21:24.869 +08:00 [INF] - Lion.AbpPro.BasicManagement.BasicManagementHttpApiHostModule |
||||
|
2022-08-23 22:21:24.870 +08:00 [INF] - Lion.AbpPro.BasicManagement.BasicManagementApplicationModule |
||||
|
2022-08-23 22:21:24.870 +08:00 [INF] - Lion.AbpPro.BasicManagement.BasicManagementDomainModule |
||||
|
2022-08-23 22:21:24.871 +08:00 [INF] - Volo.Abp.Domain.AbpDddDomainModule |
||||
|
2022-08-23 22:21:24.871 +08:00 [INF] - Volo.Abp.Auditing.AbpAuditingModule |
||||
|
2022-08-23 22:21:24.872 +08:00 [INF] - Volo.Abp.Data.AbpDataModule |
||||
|
2022-08-23 22:21:24.872 +08:00 [INF] - Volo.Abp.ObjectExtending.AbpObjectExtendingModule |
||||
|
2022-08-23 22:21:24.873 +08:00 [INF] - Volo.Abp.Localization.AbpLocalizationAbstractionsModule |
||||
|
2022-08-23 22:21:24.873 +08:00 [INF] - Volo.Abp.Validation.AbpValidationAbstractionsModule |
||||
|
2022-08-23 22:21:24.873 +08:00 [INF] - Volo.Abp.Uow.AbpUnitOfWorkModule |
||||
|
2022-08-23 22:21:24.874 +08:00 [INF] - Volo.Abp.EventBus.Abstractions.AbpEventBusAbstractionsModule |
||||
|
2022-08-23 22:21:24.874 +08:00 [INF] - Volo.Abp.Json.AbpJsonModule |
||||
|
2022-08-23 22:21:24.875 +08:00 [INF] - Volo.Abp.Timing.AbpTimingModule |
||||
|
2022-08-23 22:21:24.875 +08:00 [INF] - Volo.Abp.Localization.AbpLocalizationModule |
||||
|
2022-08-23 22:21:24.876 +08:00 [INF] - Volo.Abp.VirtualFileSystem.AbpVirtualFileSystemModule |
||||
|
2022-08-23 22:21:24.876 +08:00 [INF] - Volo.Abp.Settings.AbpSettingsModule |
||||
|
2022-08-23 22:21:24.877 +08:00 [INF] - Volo.Abp.Security.AbpSecurityModule |
||||
|
2022-08-23 22:21:24.877 +08:00 [INF] - Volo.Abp.MultiTenancy.AbpMultiTenancyModule |
||||
|
2022-08-23 22:21:24.878 +08:00 [INF] - Volo.Abp.Threading.AbpThreadingModule |
||||
|
2022-08-23 22:21:24.880 +08:00 [INF] - Volo.Abp.Auditing.AbpAuditingContractsModule |
||||
|
2022-08-23 22:21:24.882 +08:00 [INF] - Volo.Abp.EventBus.AbpEventBusModule |
||||
|
2022-08-23 22:21:24.882 +08:00 [INF] - Volo.Abp.Guids.AbpGuidsModule |
||||
|
2022-08-23 22:21:24.883 +08:00 [INF] - Volo.Abp.BackgroundWorkers.AbpBackgroundWorkersModule |
||||
|
2022-08-23 22:21:24.883 +08:00 [INF] - Volo.Abp.DistributedLocking.AbpDistributedLockingAbstractionsModule |
||||
|
2022-08-23 22:21:24.884 +08:00 [INF] - Volo.Abp.ObjectMapping.AbpObjectMappingModule |
||||
|
2022-08-23 22:21:24.884 +08:00 [INF] - Volo.Abp.ExceptionHandling.AbpExceptionHandlingModule |
||||
|
2022-08-23 22:21:24.885 +08:00 [INF] - Volo.Abp.Specifications.AbpSpecificationsModule |
||||
|
2022-08-23 22:21:24.885 +08:00 [INF] - Lion.AbpPro.BasicManagement.BasicManagementDomainSharedModule |
||||
|
2022-08-23 22:21:24.886 +08:00 [INF] - Volo.Abp.AuditLogging.AbpAuditLoggingDomainSharedModule |
||||
|
2022-08-23 22:21:24.887 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainSharedModule |
||||
|
2022-08-23 22:21:24.887 +08:00 [INF] - Volo.Abp.FeatureManagement.AbpFeatureManagementDomainSharedModule |
||||
|
2022-08-23 22:21:24.888 +08:00 [INF] - Volo.Abp.Validation.AbpValidationModule |
||||
|
2022-08-23 22:21:24.888 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityDomainSharedModule |
||||
|
2022-08-23 22:21:24.889 +08:00 [INF] - Volo.Abp.Users.AbpUsersDomainSharedModule |
||||
|
2022-08-23 22:21:24.889 +08:00 [INF] - Volo.Abp.Features.AbpFeaturesModule |
||||
|
2022-08-23 22:21:24.890 +08:00 [INF] - Volo.Abp.Authorization.AbpAuthorizationAbstractionsModule |
||||
|
2022-08-23 22:21:24.890 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementDomainSharedModule |
||||
|
2022-08-23 22:21:24.891 +08:00 [INF] - Volo.Abp.SettingManagement.AbpSettingManagementDomainSharedModule |
||||
|
2022-08-23 22:21:24.891 +08:00 [INF] - Volo.Abp.TenantManagement.AbpTenantManagementDomainSharedModule |
||||
|
2022-08-23 22:21:24.892 +08:00 [INF] - Volo.Abp.AuditLogging.AbpAuditLoggingDomainModule |
||||
|
2022-08-23 22:21:24.892 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsDomainModule |
||||
|
2022-08-23 22:21:24.893 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsModule |
||||
|
2022-08-23 22:21:24.893 +08:00 [INF] - Volo.Abp.BackgroundJobs.AbpBackgroundJobsAbstractionsModule |
||||
|
2022-08-23 22:21:24.894 +08:00 [INF] - Volo.Abp.AutoMapper.AbpAutoMapperModule |
||||
|
2022-08-23 22:21:24.896 +08:00 [INF] - Volo.Abp.FeatureManagement.AbpFeatureManagementDomainModule |
||||
|
2022-08-23 22:21:24.897 +08:00 [INF] - Volo.Abp.Caching.AbpCachingModule |
||||
|
2022-08-23 22:21:24.897 +08:00 [INF] - Volo.Abp.Serialization.AbpSerializationModule |
||||
|
2022-08-23 22:21:24.898 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityDomainModule |
||||
|
2022-08-23 22:21:24.898 +08:00 [INF] - Volo.Abp.Users.AbpUsersDomainModule |
||||
|
2022-08-23 22:21:24.899 +08:00 [INF] - Volo.Abp.Users.AbpUsersAbstractionModule |
||||
|
2022-08-23 22:21:24.900 +08:00 [INF] - Volo.Abp.PermissionManagement.Identity.AbpPermissionManagementDomainIdentityModule |
||||
|
2022-08-23 22:21:24.900 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementDomainModule |
||||
|
2022-08-23 22:21:24.901 +08:00 [INF] - Volo.Abp.Authorization.AbpAuthorizationModule |
||||
|
2022-08-23 22:21:24.901 +08:00 [INF] - Volo.Abp.SettingManagement.AbpSettingManagementDomainModule |
||||
|
2022-08-23 22:21:24.902 +08:00 [INF] - Volo.Abp.TenantManagement.AbpTenantManagementDomainModule |
||||
|
2022-08-23 22:21:24.902 +08:00 [INF] - Lion.AbpPro.BasicManagement.BasicManagementApplicationContractsModule |
||||
|
2022-08-23 22:21:24.903 +08:00 [INF] - Volo.Abp.Application.AbpDddApplicationContractsModule |
||||
|
2022-08-23 22:21:24.903 +08:00 [INF] - Volo.Abp.Account.AbpAccountApplicationContractsModule |
||||
|
2022-08-23 22:21:24.904 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityApplicationContractsModule |
||||
|
2022-08-23 22:21:24.905 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementApplicationContractsModule |
||||
|
2022-08-23 22:21:24.905 +08:00 [INF] - Volo.Abp.FeatureManagement.AbpFeatureManagementApplicationContractsModule |
||||
|
2022-08-23 22:21:24.906 +08:00 [INF] - Volo.Abp.SettingManagement.AbpSettingManagementApplicationContractsModule |
||||
|
2022-08-23 22:21:24.906 +08:00 [INF] - Volo.Abp.TenantManagement.AbpTenantManagementApplicationContractsModule |
||||
|
2022-08-23 22:21:24.907 +08:00 [INF] - Volo.Abp.Application.AbpDddApplicationModule |
||||
|
2022-08-23 22:21:24.907 +08:00 [INF] - Volo.Abp.Http.AbpHttpAbstractionsModule |
||||
|
2022-08-23 22:21:24.908 +08:00 [INF] - Volo.Abp.GlobalFeatures.AbpGlobalFeaturesModule |
||||
|
2022-08-23 22:21:24.908 +08:00 [INF] - Volo.Abp.Account.AbpAccountApplicationModule |
||||
|
2022-08-23 22:21:24.909 +08:00 [INF] - Volo.Abp.Identity.AbpIdentityApplicationModule |
||||
|
2022-08-23 22:21:24.909 +08:00 [INF] - Volo.Abp.PermissionManagement.AbpPermissionManagementApplicationModule |
||||
|
2022-08-23 22:21:24.910 +08:00 [INF] - Volo.Abp.UI.Navigation.AbpUiNavigationModule |
||||
|
2022-08-23 22:21:24.915 +08:00 [INF] - Volo.Abp.UI.AbpUiModule |
||||
|
2022-08-23 22:21:24.915 +08:00 [INF] - Volo.Abp.Emailing.AbpEmailingModule |
||||
|
2022-08-23 22:21:24.916 +08:00 [INF] - Volo.Abp.TextTemplating.AbpTextTemplatingModule |
||||
|
2022-08-23 22:21:24.916 +08:00 [INF] - Volo.Abp.TextTemplating.Scriban.AbpTextTemplatingScribanModule |
||||
|
2022-08-23 22:21:24.917 +08:00 [INF] - Volo.Abp.TextTemplating.AbpTextTemplatingCoreModule |
||||
|
2022-08-23 22:21:24.917 +08:00 [INF] - Volo.Abp.TenantManagement.AbpTenantManagementApplicationModule |
||||
|
2022-08-23 22:21:24.918 +08:00 [INF] - Volo.Abp.FeatureManagement.AbpFeatureManagementApplicationModule |
||||
|
2022-08-23 22:21:24.918 +08:00 [INF] - Volo.Abp.SettingManagement.AbpSettingManagementApplicationModule |
||||
|
2022-08-23 22:21:24.919 +08:00 [INF] - Lion.AbpPro.BasicManagement.EntityFrameworkCore.BasicManagementEntityFrameworkCoreModule |
||||
|
2022-08-23 22:21:24.920 +08:00 [INF] - Volo.Abp.EntityFrameworkCore.AbpEntityFrameworkCoreModule |
||||
|
2022-08-23 22:21:24.920 +08:00 [INF] - Volo.Abp.Identity.EntityFrameworkCore.AbpIdentityEntityFrameworkCoreModule |
||||
|
2022-08-23 22:21:24.921 +08:00 [INF] - Volo.Abp.Users.EntityFrameworkCore.AbpUsersEntityFrameworkCoreModule |
||||
|
2022-08-23 22:21:24.921 +08:00 [INF] - Volo.Abp.PermissionManagement.EntityFrameworkCore.AbpPermissionManagementEntityFrameworkCoreModule |
||||
|
2022-08-23 22:21:24.922 +08:00 [INF] - Volo.Abp.SettingManagement.EntityFrameworkCore.AbpSettingManagementEntityFrameworkCoreModule |
||||
|
2022-08-23 22:21:24.922 +08:00 [INF] - Volo.Abp.BackgroundJobs.EntityFrameworkCore.AbpBackgroundJobsEntityFrameworkCoreModule |
||||
|
2022-08-23 22:21:24.923 +08:00 [INF] - Volo.Abp.AuditLogging.EntityFrameworkCore.AbpAuditLoggingEntityFrameworkCoreModule |
||||
|
2022-08-23 22:21:24.923 +08:00 [INF] - Volo.Abp.TenantManagement.EntityFrameworkCore.AbpTenantManagementEntityFrameworkCoreModule |
||||
|
2022-08-23 22:21:24.924 +08:00 [INF] - Volo.Abp.FeatureManagement.EntityFrameworkCore.AbpFeatureManagementEntityFrameworkCoreModule |
||||
|
2022-08-23 22:21:24.925 +08:00 [INF] - Lion.AbpPro.BasicManagement.BasicManagementHttpApiModule |
||||
|
2022-08-23 22:21:24.925 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.AbpAspNetCoreMvcModule |
||||
|
2022-08-23 22:21:24.928 +08:00 [INF] - Volo.Abp.AspNetCore.AbpAspNetCoreModule |
||||
|
2022-08-23 22:21:24.928 +08:00 [INF] - Volo.Abp.Http.AbpHttpModule |
||||
|
2022-08-23 22:21:24.929 +08:00 [INF] - Volo.Abp.Minify.AbpMinifyModule |
||||
|
2022-08-23 22:21:24.930 +08:00 [INF] - Volo.Abp.ApiVersioning.AbpApiVersioningAbstractionsModule |
||||
|
2022-08-23 22:21:24.931 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.AbpAspNetCoreMvcContractsModule |
||||
|
2022-08-23 22:21:24.931 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.MultiTenancy.AbpAspNetCoreMvcUiMultiTenancyModule |
||||
|
2022-08-23 22:21:24.932 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared.AbpAspNetCoreMvcUiThemeSharedModule |
||||
|
2022-08-23 22:21:24.932 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.AbpAspNetCoreMvcUiBootstrapModule |
||||
|
2022-08-23 22:21:24.933 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.AbpAspNetCoreMvcUiModule |
||||
|
2022-08-23 22:21:24.934 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Packages.AbpAspNetCoreMvcUiPackagesModule |
||||
|
2022-08-23 22:21:24.934 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Bundling.AbpAspNetCoreMvcUiBundlingAbstractionsModule |
||||
|
2022-08-23 22:21:24.935 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Widgets.AbpAspNetCoreMvcUiWidgetsModule |
||||
|
2022-08-23 22:21:24.935 +08:00 [INF] - Volo.Abp.AspNetCore.Mvc.UI.Bundling.AbpAspNetCoreMvcUiBundlingModule |
||||
|
2022-08-23 22:21:24.936 +08:00 [INF] - Volo.Abp.AspNetCore.MultiTenancy.AbpAspNetCoreMultiTenancyModule |
||||
|
2022-08-23 22:21:24.936 +08:00 [INF] - Volo.Abp.Autofac.AbpAutofacModule |
||||
|
2022-08-23 22:21:24.937 +08:00 [INF] - Volo.Abp.Castle.AbpCastleCoreModule |
||||
|
2022-08-23 22:21:24.937 +08:00 [INF] - Volo.Abp.Caching.StackExchangeRedis.AbpCachingStackExchangeRedisModule |
||||
|
2022-08-23 22:21:24.938 +08:00 [INF] - Volo.Abp.EntityFrameworkCore.MySQL.AbpEntityFrameworkCoreMySQLModule |
||||
|
2022-08-23 22:21:24.938 +08:00 [INF] - Volo.Abp.AspNetCore.Serilog.AbpAspNetCoreSerilogModule |
||||
|
2022-08-23 22:21:24.939 +08:00 [INF] - Volo.Abp.Swashbuckle.AbpSwashbuckleModule |
||||
|
2022-08-23 22:21:24.939 +08:00 [INF] - Lion.AbpPro.Shared.Hosting.Microservices.SharedHostingMicroserviceModule |
||||
|
2022-08-23 22:21:25.334 +08:00 [INF] Initialized all ABP modules. |
||||
|
2022-08-23 22:21:25.376 +08:00 [INF] Now listening on: http://localhost:44324 |
||||
|
2022-08-23 22:21:25.378 +08:00 [INF] Application started. Press Ctrl+C to shut down. |
||||
|
2022-08-23 22:21:25.379 +08:00 [INF] Hosting environment: Development |
||||
|
2022-08-23 22:21:25.379 +08:00 [INF] Content root path: D:\github\WangJunZzz\abp-vnext-pro\aspnet-core\modules\BasicManagement\host\Lion.AbpPro.BasicManagement.HttpApi.Host |
||||
|
2022-08-23 22:21:25.784 +08:00 [INF] Request starting HTTP/1.1 GET http://localhost:44324/ - - |
||||
|
2022-08-23 22:21:25.792 +08:00 [WRN] Failed to determine the https port for redirect. |
||||
|
2022-08-23 22:21:28.295 +08:00 [INF] Executing endpoint 'Lion.AbpPro.BasicManagement.Controllers.HomeController.Index (Lion.AbpPro.BasicManagement.HttpApi.Host)' |
||||
|
2022-08-23 22:21:28.317 +08:00 [INF] Route matched with {action = "Index", controller = "Home", area = "", page = ""}. Executing controller action with signature Microsoft.AspNetCore.Mvc.ActionResult Index() on controller Lion.AbpPro.BasicManagement.Controllers.HomeController (Lion.AbpPro.BasicManagement.HttpApi.Host). |
||||
|
2022-08-23 22:21:28.351 +08:00 [INF] Executing RedirectResult, redirecting to /swagger. |
||||
|
2022-08-23 22:21:28.360 +08:00 [INF] Executed action Lion.AbpPro.BasicManagement.Controllers.HomeController.Index (Lion.AbpPro.BasicManagement.HttpApi.Host) in 36.344ms |
||||
|
2022-08-23 22:21:28.364 +08:00 [INF] Executed endpoint 'Lion.AbpPro.BasicManagement.Controllers.HomeController.Index (Lion.AbpPro.BasicManagement.HttpApi.Host)' |
||||
|
2022-08-23 22:21:28.383 +08:00 [INF] Request finished HTTP/1.1 GET http://localhost:44324/ - - - 302 0 - 2599.4371ms |
||||
|
2022-08-23 22:21:28.390 +08:00 [INF] Request starting HTTP/1.1 GET http://localhost:44324/swagger - - |
||||
|
2022-08-23 22:21:28.396 +08:00 [INF] Request finished HTTP/1.1 GET http://localhost:44324/swagger - - - 301 0 - 5.4534ms |
||||
|
2022-08-23 22:21:28.402 +08:00 [INF] Request starting HTTP/1.1 GET http://localhost:44324/swagger/index.html - - |
||||
|
2022-08-23 22:21:28.476 +08:00 [INF] Request finished HTTP/1.1 GET http://localhost:44324/swagger/index.html - - - 200 - text/html;charset=utf-8 73.9537ms |
||||
|
2022-08-23 22:21:28.521 +08:00 [INF] Request starting HTTP/1.1 GET http://localhost:44324/swagger/swagger-ui.css - - |
||||
|
2022-08-23 22:21:28.522 +08:00 [INF] Request starting HTTP/1.1 GET http://localhost:44324/swagger/ui/abp.js - - |
||||
|
2022-08-23 22:21:28.527 +08:00 [INF] Request starting HTTP/1.1 GET http://localhost:44324/swagger/ui/abp.swagger.js - - |
||||
|
2022-08-23 22:21:28.528 +08:00 [INF] Request starting HTTP/1.1 GET http://localhost:44324/swagger/swagger-ui-bundle.js - - |
||||
|
2022-08-23 22:21:28.530 +08:00 [INF] Request starting HTTP/1.1 GET http://localhost:44324/swagger/swagger-ui-standalone-preset.js - - |
||||
|
2022-08-23 22:21:28.547 +08:00 [INF] Sending file. Request path: '/swagger/ui/abp.js'. Physical path: 'N/A' |
||||
|
2022-08-23 22:21:28.547 +08:00 [INF] Sending file. Request path: '/swagger/ui/abp.swagger.js'. Physical path: 'N/A' |
||||
|
2022-08-23 22:21:28.553 +08:00 [INF] Request finished HTTP/1.1 GET http://localhost:44324/swagger/ui/abp.js - - - 200 3122 application/javascript 30.6392ms |
||||
|
2022-08-23 22:21:28.560 +08:00 [INF] Request finished HTTP/1.1 GET http://localhost:44324/swagger/ui/abp.swagger.js - - - 200 1246 application/javascript 33.7304ms |
||||
|
2022-08-23 22:21:28.571 +08:00 [INF] Sending file. Request path: '/swagger-ui.css'. Physical path: 'N/A' |
||||
|
2022-08-23 22:21:28.580 +08:00 [INF] Sending file. Request path: '/swagger-ui-standalone-preset.js'. Physical path: 'N/A' |
||||
|
2022-08-23 22:21:28.584 +08:00 [INF] Request finished HTTP/1.1 GET http://localhost:44324/swagger/swagger-ui.css - - - 200 143943 text/css 63.6951ms |
||||
|
2022-08-23 22:21:28.585 +08:00 [INF] Request finished HTTP/1.1 GET http://localhost:44324/swagger/swagger-ui-standalone-preset.js - - - 200 339486 application/javascript 55.0516ms |
||||
|
2022-08-23 22:21:28.595 +08:00 [INF] Sending file. Request path: '/swagger-ui-bundle.js'. Physical path: 'N/A' |
||||
|
2022-08-23 22:21:28.597 +08:00 [INF] Request finished HTTP/1.1 GET http://localhost:44324/swagger/swagger-ui-bundle.js - - - 200 1095087 application/javascript 68.6634ms |
||||
|
2022-08-23 22:21:28.885 +08:00 [INF] Request starting HTTP/1.1 GET http://localhost:44324/swagger/BasicManagement/swagger.json - - |
||||
|
2022-08-23 22:21:28.932 +08:00 [INF] Request starting HTTP/1.1 GET http://localhost:44324/swagger/favicon-32x32.png - - |
||||
|
2022-08-23 22:21:28.948 +08:00 [INF] Sending file. Request path: '/favicon-32x32.png'. Physical path: 'N/A' |
||||
|
2022-08-23 22:21:28.951 +08:00 [INF] Request finished HTTP/1.1 GET http://localhost:44324/swagger/favicon-32x32.png - - - 200 628 image/png 18.9267ms |
||||
|
2022-08-23 22:21:29.159 +08:00 [INF] Request finished HTTP/1.1 GET http://localhost:44324/swagger/BasicManagement/swagger.json - - - 200 - application/json;charset=utf-8 273.8320ms |
||||
|
2022-08-23 22:21:39.697 +08:00 [INF] Request starting HTTP/1.1 GET http://localhost:44324/abp/Swashbuckle/SetCsrfCookie application/json - |
||||
|
2022-08-23 22:21:39.700 +08:00 [INF] Executing endpoint 'Volo.Abp.Swashbuckle.AbpSwashbuckleController.SetCsrfCookie (Volo.Abp.Swashbuckle)' |
||||
|
2022-08-23 22:21:39.702 +08:00 [INF] Route matched with {area = "Abp", action = "SetCsrfCookie", controller = "AbpSwashbuckle", page = ""}. Executing controller action with signature Void SetCsrfCookie() on controller Volo.Abp.Swashbuckle.AbpSwashbuckleController (Volo.Abp.Swashbuckle). |
||||
|
2022-08-23 22:21:39.713 +08:00 [WRN] The cookie 'XSRF-TOKEN' has set 'SameSite=None' and must also set 'Secure'. |
||||
|
2022-08-23 22:21:39.714 +08:00 [INF] Executed action Volo.Abp.Swashbuckle.AbpSwashbuckleController.SetCsrfCookie (Volo.Abp.Swashbuckle) in 10.3525ms |
||||
|
2022-08-23 22:21:39.715 +08:00 [INF] Executed endpoint 'Volo.Abp.Swashbuckle.AbpSwashbuckleController.SetCsrfCookie (Volo.Abp.Swashbuckle)' |
||||
|
2022-08-23 22:21:39.716 +08:00 [INF] Request finished HTTP/1.1 GET http://localhost:44324/abp/Swashbuckle/SetCsrfCookie application/json - - 204 - - 18.5906ms |
||||
|
2022-08-23 22:21:39.751 +08:00 [INF] Request starting HTTP/1.1 POST http://localhost:44324/api/app/account/login application/json 46 |
||||
|
2022-08-23 22:21:39.753 +08:00 [INF] No CORS policy found for the specified request. |
||||
|
2022-08-23 22:21:39.754 +08:00 [INF] Executing endpoint 'Lion.AbpPro.BasicManagement.Systems.AccountController.LoginAsync (Lion.AbpPro.BasicManagement.HttpApi)' |
||||
|
2022-08-23 22:21:39.763 +08:00 [INF] Route matched with {action = "Login", controller = "Account", area = "", page = ""}. Executing controller action with signature System.Threading.Tasks.Task`1[Lion.AbpPro.BasicManagement.Users.Dtos.LoginOutput] LoginAsync(Lion.AbpPro.BasicManagement.Users.Dtos.LoginInput) on controller Lion.AbpPro.BasicManagement.Systems.AccountController (Lion.AbpPro.BasicManagement.HttpApi). |
||||
|
2022-08-23 22:21:39.801 +08:00 [ERR] ---------- RemoteServiceErrorInfo ---------- |
||||
|
{ |
||||
|
"code": null, |
||||
|
"message": "对不起,在处理你的请求期间,产生了一个服务器内部错误!", |
||||
|
"details": null, |
||||
|
"data": { |
||||
|
"ActivatorChain": "Lion.AbpPro.BasicManagement.Systems.AccountController -> Lion.AbpPro.BasicManagement.Users.AccountAppService" |
||||
|
}, |
||||
|
"validationErrors": null |
||||
|
} |
||||
|
|
||||
|
2022-08-23 22:21:39.803 +08:00 [ERR] An exception was thrown while activating Lion.AbpPro.BasicManagement.Systems.AccountController -> Lion.AbpPro.BasicManagement.Users.AccountAppService. |
||||
|
Autofac.Core.DependencyResolutionException: An exception was thrown while activating Lion.AbpPro.BasicManagement.Systems.AccountController -> Lion.AbpPro.BasicManagement.Users.AccountAppService. |
||||
|
---> Autofac.Core.DependencyResolutionException: None of the constructors found with 'Autofac.Core.Activators.Reflection.DefaultConstructorFinder' on type 'Lion.AbpPro.BasicManagement.Users.AccountAppService' can be invoked with the available services and parameters: |
||||
|
Cannot resolve parameter 'Microsoft.AspNetCore.Identity.SignInManager`1[Volo.Abp.Identity.IdentityUser] signInManager' of constructor 'Void .ctor(Volo.Abp.Identity.IdentityUserManager, Microsoft.Extensions.Options.IOptionsSnapshot`1[Lion.AbpPro.BasicManagement.ConfigurationOptions.JwtOptions], Microsoft.AspNetCore.Identity.SignInManager`1[Volo.Abp.Identity.IdentityUser])'. |
||||
|
at Autofac.Core.Activators.Reflection.ReflectionActivator.GetAllBindings(ConstructorBinder[] availableConstructors, IComponentContext context, IEnumerable`1 parameters) |
||||
|
at Autofac.Core.Activators.Reflection.ReflectionActivator.ActivateInstance(IComponentContext context, IEnumerable`1 parameters) |
||||
|
at Autofac.Core.Activators.Reflection.ReflectionActivator.<ConfigurePipeline>b__11_0(ResolveRequestContext ctxt, Action`1 next) |
||||
|
at Autofac.Core.Resolving.Middleware.DelegateMiddleware.Execute(ResolveRequestContext context, Action`1 next) |
||||
|
at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.<BuildPipeline>b__1(ResolveRequestContext ctxt) |
||||
|
at Autofac.Core.Resolving.Middleware.DisposalTrackingMiddleware.Execute(ResolveRequestContext context, Action`1 next) |
||||
|
at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.<BuildPipeline>b__1(ResolveRequestContext ctxt) |
||||
|
at Autofac.Builder.RegistrationBuilder`3.<>c__DisplayClass41_0.<PropertiesAutowired>b__0(ResolveRequestContext ctxt, Action`1 next) |
||||
|
at Autofac.Core.Resolving.Middleware.DelegateMiddleware.Execute(ResolveRequestContext context, Action`1 next) |
||||
|
at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.<BuildPipeline>b__1(ResolveRequestContext ctxt) |
||||
|
at Autofac.Extras.DynamicProxy.RegistrationExtensions.<>c__DisplayClass8_0`3.<EnableInterfaceInterceptors>b__1(ResolveRequestContext ctxt, Action`1 next) |
||||
|
at Autofac.Core.Resolving.Middleware.DelegateMiddleware.Execute(ResolveRequestContext context, Action`1 next) |
||||
|
at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.<BuildPipeline>b__1(ResolveRequestContext ctxt) |
||||
|
at Autofac.Core.Resolving.Middleware.ActivatorErrorHandlingMiddleware.Execute(ResolveRequestContext context, Action`1 next) |
||||
|
--- End of inner exception stack trace --- |
||||
|
at Autofac.Core.Resolving.Middleware.ActivatorErrorHandlingMiddleware.Execute(ResolveRequestContext context, Action`1 next) |
||||
|
at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.<BuildPipeline>b__1(ResolveRequestContext ctxt) |
||||
|
at Autofac.Core.Pipeline.ResolvePipeline.Invoke(ResolveRequestContext ctxt) |
||||
|
at Autofac.Core.Resolving.Middleware.RegistrationPipelineInvokeMiddleware.Execute(ResolveRequestContext context, Action`1 next) |
||||
|
at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.<BuildPipeline>b__1(ResolveRequestContext ctxt) |
||||
|
at Autofac.Core.Resolving.Middleware.SharingMiddleware.Execute(ResolveRequestContext context, Action`1 next) |
||||
|
at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.<BuildPipeline>b__1(ResolveRequestContext ctxt) |
||||
|
at Autofac.Core.Resolving.Middleware.ScopeSelectionMiddleware.Execute(ResolveRequestContext context, Action`1 next) |
||||
|
at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.<BuildPipeline>b__1(ResolveRequestContext ctxt) |
||||
|
at Autofac.Core.Resolving.Middleware.CircularDependencyDetectorMiddleware.Execute(ResolveRequestContext context, Action`1 next) |
||||
|
at Autofac.Core.Resolving.Pipeline.ResolvePipelineBuilder.<>c__DisplayClass14_0.<BuildPipeline>b__1(ResolveRequestContext ctxt) |
||||
|
at Autofac.Core.Pipeline.ResolvePipeline.Invoke(ResolveRequestContext ctxt) |
||||
|
at Autofac.Core.Resolving.ResolveOperation.GetOrCreateInstance(ISharingLifetimeScope currentOperationScope, ResolveRequest request) |
||||
|
at Autofac.Core.Resolving.ResolveOperation.ExecuteOperation(ResolveRequest request) |
||||
|
at Autofac.Core.Resolving.ResolveOperation.Execute(ResolveRequest request) |
||||
|
at Autofac.Core.Lifetime.LifetimeScope.ResolveComponent(ResolveRequest request) |
||||
|
at Autofac.ResolutionExtensions.TryResolveService(IComponentContext context, Service service, IEnumerable`1 parameters, Object& instance) |
||||
|
at Autofac.ResolutionExtensions.ResolveService(IComponentContext context, Service service, IEnumerable`1 parameters) |
||||
|
at Autofac.ResolutionExtensions.Resolve(IComponentContext context, Type serviceType, IEnumerable`1 parameters) |
||||
|
at Autofac.ResolutionExtensions.Resolve(IComponentContext context, Type serviceType) |
||||
|
at Autofac.Extensions.DependencyInjection.AutofacServiceProvider.GetRequiredService(Type serviceType) |
||||
|
at Microsoft.Extensions.DependencyInjection.ServiceProviderServiceExtensions.GetRequiredService(IServiceProvider provider, Type serviceType) |
||||
|
at Microsoft.AspNetCore.Mvc.Controllers.ServiceBasedControllerActivator.Create(ControllerContext actionContext) |
||||
|
at Microsoft.AspNetCore.Mvc.Controllers.ControllerFactoryProvider.<>c__DisplayClass6_0.<CreateControllerFactory>g__CreateController|0(ControllerContext controllerContext) |
||||
|
at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted) |
||||
|
at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.InvokeInnerFilterAsync() |
||||
|
--- End of stack trace from previous location --- |
||||
|
at Microsoft.AspNetCore.Mvc.Infrastructure.ResourceInvoker.<InvokeNextExceptionFilterAsync>g__Awaited|26_0(ResourceInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted) |
||||
|
2022-08-23 22:21:39.845 +08:00 [ERR] ---------- Exception Data ---------- |
||||
|
ActivatorChain = Lion.AbpPro.BasicManagement.Systems.AccountController -> Lion.AbpPro.BasicManagement.Users.AccountAppService |
||||
|
|
||||
|
2022-08-23 22:21:39.853 +08:00 [INF] Executing ObjectResult, writing value of type 'Volo.Abp.Http.RemoteServiceErrorResponse'. |
||||
|
2022-08-23 22:21:39.858 +08:00 [INF] Executed action Lion.AbpPro.BasicManagement.Systems.AccountController.LoginAsync (Lion.AbpPro.BasicManagement.HttpApi) in 93.438ms |
||||
|
2022-08-23 22:21:39.862 +08:00 [INF] Executed endpoint 'Lion.AbpPro.BasicManagement.Systems.AccountController.LoginAsync (Lion.AbpPro.BasicManagement.HttpApi)' |
||||
|
2022-08-23 22:21:40.175 +08:00 [INF] Request finished HTTP/1.1 POST http://localhost:44324/api/app/account/login application/json 46 - 500 - application/json;+charset=utf-8 424.1464ms |
||||
@ -0,0 +1,16 @@ |
|||||
|
2022-08-23 22:11:33.863 +08:00 [INF] Starting web host. |
||||
|
2022-08-23 22:11:39.197 +08:00 [FTL] Host terminated unexpectedly! |
||||
|
Microsoft.Extensions.Hosting.HostFactoryResolver+HostingListener+StopTheHostException: Exception of type 'Microsoft.Extensions.Hosting.HostFactoryResolver+HostingListener+StopTheHostException' was thrown. |
||||
|
at Microsoft.Extensions.Hosting.HostFactoryResolver.HostingListener.OnNext(KeyValuePair`2 value) |
||||
|
at System.Diagnostics.DiagnosticListener.Write(String name, Object value) |
||||
|
at Microsoft.Extensions.Hosting.HostBuilder.Build() |
||||
|
at Microsoft.AspNetCore.Builder.WebApplicationBuilder.Build() |
||||
|
at Lion.AbpPro.BasicManagement.Program.Main(String[] args) in D:\github\WangJunZzz\abp-vnext-pro\aspnet-core\modules\BasicManagement\host\Lion.AbpPro.BasicManagement.HttpApi.Host\Program.cs:line 36 |
||||
|
2022-08-23 22:13:21.209 +08:00 [INF] Starting web host. |
||||
|
2022-08-23 22:13:22.124 +08:00 [FTL] Host terminated unexpectedly! |
||||
|
Microsoft.Extensions.Hosting.HostFactoryResolver+HostingListener+StopTheHostException: Exception of type 'Microsoft.Extensions.Hosting.HostFactoryResolver+HostingListener+StopTheHostException' was thrown. |
||||
|
at Microsoft.Extensions.Hosting.HostFactoryResolver.HostingListener.OnNext(KeyValuePair`2 value) |
||||
|
at System.Diagnostics.DiagnosticListener.Write(String name, Object value) |
||||
|
at Microsoft.Extensions.Hosting.HostBuilder.Build() |
||||
|
at Microsoft.AspNetCore.Builder.WebApplicationBuilder.Build() |
||||
|
at Lion.AbpPro.BasicManagement.Program.Main(String[] args) in D:\github\WangJunZzz\abp-vnext-pro\aspnet-core\modules\BasicManagement\host\Lion.AbpPro.BasicManagement.HttpApi.Host\Program.cs:line 36 |
||||
File diff suppressed because it is too large
@ -0,0 +1,880 @@ |
|||||
|
using System; |
||||
|
using Microsoft.EntityFrameworkCore.Migrations; |
||||
|
|
||||
|
#nullable disable |
||||
|
|
||||
|
namespace Lion.AbpPro.BasicManagement.Migrations |
||||
|
{ |
||||
|
public partial class Init : Migration |
||||
|
{ |
||||
|
protected override void Up(MigrationBuilder migrationBuilder) |
||||
|
{ |
||||
|
migrationBuilder.AlterDatabase() |
||||
|
.Annotation("MySql:CharSet", "utf8mb4"); |
||||
|
|
||||
|
migrationBuilder.CreateTable( |
||||
|
name: "AbpAuditLogs", |
||||
|
columns: table => new |
||||
|
{ |
||||
|
Id = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci"), |
||||
|
ApplicationName = table.Column<string>(type: "varchar(96)", maxLength: 96, nullable: true) |
||||
|
.Annotation("MySql:CharSet", "utf8mb4"), |
||||
|
UserId = table.Column<Guid>(type: "char(36)", nullable: true, collation: "ascii_general_ci"), |
||||
|
UserName = table.Column<string>(type: "varchar(256)", maxLength: 256, nullable: true) |
||||
|
.Annotation("MySql:CharSet", "utf8mb4"), |
||||
|
TenantId = table.Column<Guid>(type: "char(36)", nullable: true, collation: "ascii_general_ci"), |
||||
|
TenantName = table.Column<string>(type: "varchar(64)", maxLength: 64, nullable: true) |
||||
|
.Annotation("MySql:CharSet", "utf8mb4"), |
||||
|
ImpersonatorUserId = table.Column<Guid>(type: "char(36)", nullable: true, collation: "ascii_general_ci"), |
||||
|
ImpersonatorUserName = table.Column<string>(type: "varchar(256)", maxLength: 256, nullable: true) |
||||
|
.Annotation("MySql:CharSet", "utf8mb4"), |
||||
|
ImpersonatorTenantId = table.Column<Guid>(type: "char(36)", nullable: true, collation: "ascii_general_ci"), |
||||
|
ImpersonatorTenantName = table.Column<string>(type: "varchar(64)", maxLength: 64, nullable: true) |
||||
|
.Annotation("MySql:CharSet", "utf8mb4"), |
||||
|
ExecutionTime = table.Column<DateTime>(type: "datetime(6)", nullable: false), |
||||
|
ExecutionDuration = table.Column<int>(type: "int", nullable: false), |
||||
|
ClientIpAddress = table.Column<string>(type: "varchar(64)", maxLength: 64, nullable: true) |
||||
|
.Annotation("MySql:CharSet", "utf8mb4"), |
||||
|
ClientName = table.Column<string>(type: "varchar(128)", maxLength: 128, nullable: true) |
||||
|
.Annotation("MySql:CharSet", "utf8mb4"), |
||||
|
ClientId = table.Column<string>(type: "varchar(64)", maxLength: 64, nullable: true) |
||||
|
.Annotation("MySql:CharSet", "utf8mb4"), |
||||
|
CorrelationId = table.Column<string>(type: "varchar(64)", maxLength: 64, nullable: true) |
||||
|
.Annotation("MySql:CharSet", "utf8mb4"), |
||||
|
BrowserInfo = table.Column<string>(type: "varchar(512)", maxLength: 512, nullable: true) |
||||
|
.Annotation("MySql:CharSet", "utf8mb4"), |
||||
|
HttpMethod = table.Column<string>(type: "varchar(16)", maxLength: 16, nullable: true) |
||||
|
.Annotation("MySql:CharSet", "utf8mb4"), |
||||
|
Url = table.Column<string>(type: "varchar(256)", maxLength: 256, nullable: true) |
||||
|
.Annotation("MySql:CharSet", "utf8mb4"), |
||||
|
Exceptions = table.Column<string>(type: "longtext", nullable: true) |
||||
|
.Annotation("MySql:CharSet", "utf8mb4"), |
||||
|
Comments = table.Column<string>(type: "varchar(256)", maxLength: 256, nullable: true) |
||||
|
.Annotation("MySql:CharSet", "utf8mb4"), |
||||
|
HttpStatusCode = table.Column<int>(type: "int", nullable: true), |
||||
|
ExtraProperties = table.Column<string>(type: "longtext", nullable: true) |
||||
|
.Annotation("MySql:CharSet", "utf8mb4"), |
||||
|
ConcurrencyStamp = table.Column<string>(type: "varchar(40)", maxLength: 40, nullable: true) |
||||
|
.Annotation("MySql:CharSet", "utf8mb4") |
||||
|
}, |
||||
|
constraints: table => |
||||
|
{ |
||||
|
table.PrimaryKey("PK_AbpAuditLogs", x => x.Id); |
||||
|
}) |
||||
|
.Annotation("MySql:CharSet", "utf8mb4"); |
||||
|
|
||||
|
migrationBuilder.CreateTable( |
||||
|
name: "AbpBackgroundJobs", |
||||
|
columns: table => new |
||||
|
{ |
||||
|
Id = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci"), |
||||
|
JobName = table.Column<string>(type: "varchar(128)", maxLength: 128, nullable: false) |
||||
|
.Annotation("MySql:CharSet", "utf8mb4"), |
||||
|
JobArgs = table.Column<string>(type: "longtext", maxLength: 1048576, nullable: false) |
||||
|
.Annotation("MySql:CharSet", "utf8mb4"), |
||||
|
TryCount = table.Column<short>(type: "smallint", nullable: false, defaultValue: (short)0), |
||||
|
CreationTime = table.Column<DateTime>(type: "datetime(6)", nullable: false), |
||||
|
NextTryTime = table.Column<DateTime>(type: "datetime(6)", nullable: false), |
||||
|
LastTryTime = table.Column<DateTime>(type: "datetime(6)", nullable: true), |
||||
|
IsAbandoned = table.Column<bool>(type: "tinyint(1)", nullable: false, defaultValue: false), |
||||
|
Priority = table.Column<byte>(type: "tinyint unsigned", nullable: false, defaultValue: (byte)15), |
||||
|
ExtraProperties = table.Column<string>(type: "longtext", nullable: true) |
||||
|
.Annotation("MySql:CharSet", "utf8mb4"), |
||||
|
ConcurrencyStamp = table.Column<string>(type: "varchar(40)", maxLength: 40, nullable: true) |
||||
|
.Annotation("MySql:CharSet", "utf8mb4") |
||||
|
}, |
||||
|
constraints: table => |
||||
|
{ |
||||
|
table.PrimaryKey("PK_AbpBackgroundJobs", x => x.Id); |
||||
|
}) |
||||
|
.Annotation("MySql:CharSet", "utf8mb4"); |
||||
|
|
||||
|
migrationBuilder.CreateTable( |
||||
|
name: "AbpClaimTypes", |
||||
|
columns: table => new |
||||
|
{ |
||||
|
Id = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci"), |
||||
|
Name = table.Column<string>(type: "varchar(256)", maxLength: 256, nullable: false) |
||||
|
.Annotation("MySql:CharSet", "utf8mb4"), |
||||
|
Required = table.Column<bool>(type: "tinyint(1)", nullable: false), |
||||
|
IsStatic = table.Column<bool>(type: "tinyint(1)", nullable: false), |
||||
|
Regex = table.Column<string>(type: "varchar(512)", maxLength: 512, nullable: true) |
||||
|
.Annotation("MySql:CharSet", "utf8mb4"), |
||||
|
RegexDescription = table.Column<string>(type: "varchar(128)", maxLength: 128, nullable: true) |
||||
|
.Annotation("MySql:CharSet", "utf8mb4"), |
||||
|
Description = table.Column<string>(type: "varchar(256)", maxLength: 256, nullable: true) |
||||
|
.Annotation("MySql:CharSet", "utf8mb4"), |
||||
|
ValueType = table.Column<int>(type: "int", nullable: false), |
||||
|
ExtraProperties = table.Column<string>(type: "longtext", nullable: true) |
||||
|
.Annotation("MySql:CharSet", "utf8mb4"), |
||||
|
ConcurrencyStamp = table.Column<string>(type: "varchar(40)", maxLength: 40, nullable: true) |
||||
|
.Annotation("MySql:CharSet", "utf8mb4") |
||||
|
}, |
||||
|
constraints: table => |
||||
|
{ |
||||
|
table.PrimaryKey("PK_AbpClaimTypes", x => x.Id); |
||||
|
}) |
||||
|
.Annotation("MySql:CharSet", "utf8mb4"); |
||||
|
|
||||
|
migrationBuilder.CreateTable( |
||||
|
name: "AbpFeatureValues", |
||||
|
columns: table => new |
||||
|
{ |
||||
|
Id = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci"), |
||||
|
Name = table.Column<string>(type: "varchar(128)", maxLength: 128, nullable: false) |
||||
|
.Annotation("MySql:CharSet", "utf8mb4"), |
||||
|
Value = table.Column<string>(type: "varchar(128)", maxLength: 128, nullable: false) |
||||
|
.Annotation("MySql:CharSet", "utf8mb4"), |
||||
|
ProviderName = table.Column<string>(type: "varchar(64)", maxLength: 64, nullable: true) |
||||
|
.Annotation("MySql:CharSet", "utf8mb4"), |
||||
|
ProviderKey = table.Column<string>(type: "varchar(64)", maxLength: 64, nullable: true) |
||||
|
.Annotation("MySql:CharSet", "utf8mb4") |
||||
|
}, |
||||
|
constraints: table => |
||||
|
{ |
||||
|
table.PrimaryKey("PK_AbpFeatureValues", x => x.Id); |
||||
|
}) |
||||
|
.Annotation("MySql:CharSet", "utf8mb4"); |
||||
|
|
||||
|
migrationBuilder.CreateTable( |
||||
|
name: "AbpLinkUsers", |
||||
|
columns: table => new |
||||
|
{ |
||||
|
Id = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci"), |
||||
|
SourceUserId = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci"), |
||||
|
SourceTenantId = table.Column<Guid>(type: "char(36)", nullable: true, collation: "ascii_general_ci"), |
||||
|
TargetUserId = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci"), |
||||
|
TargetTenantId = table.Column<Guid>(type: "char(36)", nullable: true, collation: "ascii_general_ci") |
||||
|
}, |
||||
|
constraints: table => |
||||
|
{ |
||||
|
table.PrimaryKey("PK_AbpLinkUsers", x => x.Id); |
||||
|
}) |
||||
|
.Annotation("MySql:CharSet", "utf8mb4"); |
||||
|
|
||||
|
migrationBuilder.CreateTable( |
||||
|
name: "AbpOrganizationUnits", |
||||
|
columns: table => new |
||||
|
{ |
||||
|
Id = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci"), |
||||
|
TenantId = table.Column<Guid>(type: "char(36)", nullable: true, collation: "ascii_general_ci"), |
||||
|
ParentId = table.Column<Guid>(type: "char(36)", nullable: true, collation: "ascii_general_ci"), |
||||
|
Code = table.Column<string>(type: "varchar(95)", maxLength: 95, nullable: false) |
||||
|
.Annotation("MySql:CharSet", "utf8mb4"), |
||||
|
DisplayName = table.Column<string>(type: "varchar(128)", maxLength: 128, nullable: false) |
||||
|
.Annotation("MySql:CharSet", "utf8mb4"), |
||||
|
ExtraProperties = table.Column<string>(type: "longtext", nullable: true) |
||||
|
.Annotation("MySql:CharSet", "utf8mb4"), |
||||
|
ConcurrencyStamp = table.Column<string>(type: "varchar(40)", maxLength: 40, nullable: true) |
||||
|
.Annotation("MySql:CharSet", "utf8mb4"), |
||||
|
CreationTime = table.Column<DateTime>(type: "datetime(6)", nullable: false), |
||||
|
CreatorId = table.Column<Guid>(type: "char(36)", nullable: true, collation: "ascii_general_ci"), |
||||
|
LastModificationTime = table.Column<DateTime>(type: "datetime(6)", nullable: true), |
||||
|
LastModifierId = table.Column<Guid>(type: "char(36)", nullable: true, collation: "ascii_general_ci"), |
||||
|
IsDeleted = table.Column<bool>(type: "tinyint(1)", nullable: false, defaultValue: false), |
||||
|
DeleterId = table.Column<Guid>(type: "char(36)", nullable: true, collation: "ascii_general_ci"), |
||||
|
DeletionTime = table.Column<DateTime>(type: "datetime(6)", nullable: true) |
||||
|
}, |
||||
|
constraints: table => |
||||
|
{ |
||||
|
table.PrimaryKey("PK_AbpOrganizationUnits", x => x.Id); |
||||
|
table.ForeignKey( |
||||
|
name: "FK_AbpOrganizationUnits_AbpOrganizationUnits_ParentId", |
||||
|
column: x => x.ParentId, |
||||
|
principalTable: "AbpOrganizationUnits", |
||||
|
principalColumn: "Id"); |
||||
|
}) |
||||
|
.Annotation("MySql:CharSet", "utf8mb4"); |
||||
|
|
||||
|
migrationBuilder.CreateTable( |
||||
|
name: "AbpPermissionGrants", |
||||
|
columns: table => new |
||||
|
{ |
||||
|
Id = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci"), |
||||
|
TenantId = table.Column<Guid>(type: "char(36)", nullable: true, collation: "ascii_general_ci"), |
||||
|
Name = table.Column<string>(type: "varchar(128)", maxLength: 128, nullable: false) |
||||
|
.Annotation("MySql:CharSet", "utf8mb4"), |
||||
|
ProviderName = table.Column<string>(type: "varchar(64)", maxLength: 64, nullable: false) |
||||
|
.Annotation("MySql:CharSet", "utf8mb4"), |
||||
|
ProviderKey = table.Column<string>(type: "varchar(64)", maxLength: 64, nullable: false) |
||||
|
.Annotation("MySql:CharSet", "utf8mb4") |
||||
|
}, |
||||
|
constraints: table => |
||||
|
{ |
||||
|
table.PrimaryKey("PK_AbpPermissionGrants", x => x.Id); |
||||
|
}) |
||||
|
.Annotation("MySql:CharSet", "utf8mb4"); |
||||
|
|
||||
|
migrationBuilder.CreateTable( |
||||
|
name: "AbpRoles", |
||||
|
columns: table => new |
||||
|
{ |
||||
|
Id = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci"), |
||||
|
TenantId = table.Column<Guid>(type: "char(36)", nullable: true, collation: "ascii_general_ci"), |
||||
|
Name = table.Column<string>(type: "varchar(256)", maxLength: 256, nullable: false) |
||||
|
.Annotation("MySql:CharSet", "utf8mb4"), |
||||
|
NormalizedName = table.Column<string>(type: "varchar(256)", maxLength: 256, nullable: false) |
||||
|
.Annotation("MySql:CharSet", "utf8mb4"), |
||||
|
IsDefault = table.Column<bool>(type: "tinyint(1)", nullable: false), |
||||
|
IsStatic = table.Column<bool>(type: "tinyint(1)", nullable: false), |
||||
|
IsPublic = table.Column<bool>(type: "tinyint(1)", nullable: false), |
||||
|
ExtraProperties = table.Column<string>(type: "longtext", nullable: true) |
||||
|
.Annotation("MySql:CharSet", "utf8mb4"), |
||||
|
ConcurrencyStamp = table.Column<string>(type: "varchar(40)", maxLength: 40, nullable: true) |
||||
|
.Annotation("MySql:CharSet", "utf8mb4") |
||||
|
}, |
||||
|
constraints: table => |
||||
|
{ |
||||
|
table.PrimaryKey("PK_AbpRoles", x => x.Id); |
||||
|
}) |
||||
|
.Annotation("MySql:CharSet", "utf8mb4"); |
||||
|
|
||||
|
migrationBuilder.CreateTable( |
||||
|
name: "AbpSecurityLogs", |
||||
|
columns: table => new |
||||
|
{ |
||||
|
Id = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci"), |
||||
|
TenantId = table.Column<Guid>(type: "char(36)", nullable: true, collation: "ascii_general_ci"), |
||||
|
ApplicationName = table.Column<string>(type: "varchar(96)", maxLength: 96, nullable: true) |
||||
|
.Annotation("MySql:CharSet", "utf8mb4"), |
||||
|
Identity = table.Column<string>(type: "varchar(96)", maxLength: 96, nullable: true) |
||||
|
.Annotation("MySql:CharSet", "utf8mb4"), |
||||
|
Action = table.Column<string>(type: "varchar(96)", maxLength: 96, nullable: true) |
||||
|
.Annotation("MySql:CharSet", "utf8mb4"), |
||||
|
UserId = table.Column<Guid>(type: "char(36)", nullable: true, collation: "ascii_general_ci"), |
||||
|
UserName = table.Column<string>(type: "varchar(256)", maxLength: 256, nullable: true) |
||||
|
.Annotation("MySql:CharSet", "utf8mb4"), |
||||
|
TenantName = table.Column<string>(type: "varchar(64)", maxLength: 64, nullable: true) |
||||
|
.Annotation("MySql:CharSet", "utf8mb4"), |
||||
|
ClientId = table.Column<string>(type: "varchar(64)", maxLength: 64, nullable: true) |
||||
|
.Annotation("MySql:CharSet", "utf8mb4"), |
||||
|
CorrelationId = table.Column<string>(type: "varchar(64)", maxLength: 64, nullable: true) |
||||
|
.Annotation("MySql:CharSet", "utf8mb4"), |
||||
|
ClientIpAddress = table.Column<string>(type: "varchar(64)", maxLength: 64, nullable: true) |
||||
|
.Annotation("MySql:CharSet", "utf8mb4"), |
||||
|
BrowserInfo = table.Column<string>(type: "varchar(512)", maxLength: 512, nullable: true) |
||||
|
.Annotation("MySql:CharSet", "utf8mb4"), |
||||
|
CreationTime = table.Column<DateTime>(type: "datetime(6)", nullable: false), |
||||
|
ExtraProperties = table.Column<string>(type: "longtext", nullable: true) |
||||
|
.Annotation("MySql:CharSet", "utf8mb4"), |
||||
|
ConcurrencyStamp = table.Column<string>(type: "varchar(40)", maxLength: 40, nullable: true) |
||||
|
.Annotation("MySql:CharSet", "utf8mb4") |
||||
|
}, |
||||
|
constraints: table => |
||||
|
{ |
||||
|
table.PrimaryKey("PK_AbpSecurityLogs", x => x.Id); |
||||
|
}) |
||||
|
.Annotation("MySql:CharSet", "utf8mb4"); |
||||
|
|
||||
|
migrationBuilder.CreateTable( |
||||
|
name: "AbpSettings", |
||||
|
columns: table => new |
||||
|
{ |
||||
|
Id = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci"), |
||||
|
Name = table.Column<string>(type: "varchar(128)", maxLength: 128, nullable: false) |
||||
|
.Annotation("MySql:CharSet", "utf8mb4"), |
||||
|
Value = table.Column<string>(type: "varchar(2048)", maxLength: 2048, nullable: false) |
||||
|
.Annotation("MySql:CharSet", "utf8mb4"), |
||||
|
ProviderName = table.Column<string>(type: "varchar(64)", maxLength: 64, nullable: true) |
||||
|
.Annotation("MySql:CharSet", "utf8mb4"), |
||||
|
ProviderKey = table.Column<string>(type: "varchar(64)", maxLength: 64, nullable: true) |
||||
|
.Annotation("MySql:CharSet", "utf8mb4") |
||||
|
}, |
||||
|
constraints: table => |
||||
|
{ |
||||
|
table.PrimaryKey("PK_AbpSettings", x => x.Id); |
||||
|
}) |
||||
|
.Annotation("MySql:CharSet", "utf8mb4"); |
||||
|
|
||||
|
migrationBuilder.CreateTable( |
||||
|
name: "AbpTenants", |
||||
|
columns: table => new |
||||
|
{ |
||||
|
Id = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci"), |
||||
|
Name = table.Column<string>(type: "varchar(64)", maxLength: 64, nullable: false) |
||||
|
.Annotation("MySql:CharSet", "utf8mb4"), |
||||
|
ExtraProperties = table.Column<string>(type: "longtext", nullable: true) |
||||
|
.Annotation("MySql:CharSet", "utf8mb4"), |
||||
|
ConcurrencyStamp = table.Column<string>(type: "varchar(40)", maxLength: 40, nullable: true) |
||||
|
.Annotation("MySql:CharSet", "utf8mb4"), |
||||
|
CreationTime = table.Column<DateTime>(type: "datetime(6)", nullable: false), |
||||
|
CreatorId = table.Column<Guid>(type: "char(36)", nullable: true, collation: "ascii_general_ci"), |
||||
|
LastModificationTime = table.Column<DateTime>(type: "datetime(6)", nullable: true), |
||||
|
LastModifierId = table.Column<Guid>(type: "char(36)", nullable: true, collation: "ascii_general_ci"), |
||||
|
IsDeleted = table.Column<bool>(type: "tinyint(1)", nullable: false, defaultValue: false), |
||||
|
DeleterId = table.Column<Guid>(type: "char(36)", nullable: true, collation: "ascii_general_ci"), |
||||
|
DeletionTime = table.Column<DateTime>(type: "datetime(6)", nullable: true) |
||||
|
}, |
||||
|
constraints: table => |
||||
|
{ |
||||
|
table.PrimaryKey("PK_AbpTenants", x => x.Id); |
||||
|
}) |
||||
|
.Annotation("MySql:CharSet", "utf8mb4"); |
||||
|
|
||||
|
migrationBuilder.CreateTable( |
||||
|
name: "AbpUsers", |
||||
|
columns: table => new |
||||
|
{ |
||||
|
Id = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci"), |
||||
|
TenantId = table.Column<Guid>(type: "char(36)", nullable: true, collation: "ascii_general_ci"), |
||||
|
UserName = table.Column<string>(type: "varchar(256)", maxLength: 256, nullable: false) |
||||
|
.Annotation("MySql:CharSet", "utf8mb4"), |
||||
|
NormalizedUserName = table.Column<string>(type: "varchar(256)", maxLength: 256, nullable: false) |
||||
|
.Annotation("MySql:CharSet", "utf8mb4"), |
||||
|
Name = table.Column<string>(type: "varchar(64)", maxLength: 64, nullable: true) |
||||
|
.Annotation("MySql:CharSet", "utf8mb4"), |
||||
|
Surname = table.Column<string>(type: "varchar(64)", maxLength: 64, nullable: true) |
||||
|
.Annotation("MySql:CharSet", "utf8mb4"), |
||||
|
Email = table.Column<string>(type: "varchar(256)", maxLength: 256, nullable: false) |
||||
|
.Annotation("MySql:CharSet", "utf8mb4"), |
||||
|
NormalizedEmail = table.Column<string>(type: "varchar(256)", maxLength: 256, nullable: false) |
||||
|
.Annotation("MySql:CharSet", "utf8mb4"), |
||||
|
EmailConfirmed = table.Column<bool>(type: "tinyint(1)", nullable: false, defaultValue: false), |
||||
|
PasswordHash = table.Column<string>(type: "varchar(256)", maxLength: 256, nullable: true) |
||||
|
.Annotation("MySql:CharSet", "utf8mb4"), |
||||
|
SecurityStamp = table.Column<string>(type: "varchar(256)", maxLength: 256, nullable: false) |
||||
|
.Annotation("MySql:CharSet", "utf8mb4"), |
||||
|
IsExternal = table.Column<bool>(type: "tinyint(1)", nullable: false, defaultValue: false), |
||||
|
PhoneNumber = table.Column<string>(type: "varchar(16)", maxLength: 16, nullable: true) |
||||
|
.Annotation("MySql:CharSet", "utf8mb4"), |
||||
|
PhoneNumberConfirmed = table.Column<bool>(type: "tinyint(1)", nullable: false, defaultValue: false), |
||||
|
IsActive = table.Column<bool>(type: "tinyint(1)", nullable: false), |
||||
|
TwoFactorEnabled = table.Column<bool>(type: "tinyint(1)", nullable: false, defaultValue: false), |
||||
|
LockoutEnd = table.Column<DateTimeOffset>(type: "datetime(6)", nullable: true), |
||||
|
LockoutEnabled = table.Column<bool>(type: "tinyint(1)", nullable: false, defaultValue: false), |
||||
|
AccessFailedCount = table.Column<int>(type: "int", nullable: false, defaultValue: 0), |
||||
|
ExtraProperties = table.Column<string>(type: "longtext", nullable: true) |
||||
|
.Annotation("MySql:CharSet", "utf8mb4"), |
||||
|
ConcurrencyStamp = table.Column<string>(type: "varchar(40)", maxLength: 40, nullable: true) |
||||
|
.Annotation("MySql:CharSet", "utf8mb4"), |
||||
|
CreationTime = table.Column<DateTime>(type: "datetime(6)", nullable: false), |
||||
|
CreatorId = table.Column<Guid>(type: "char(36)", nullable: true, collation: "ascii_general_ci"), |
||||
|
LastModificationTime = table.Column<DateTime>(type: "datetime(6)", nullable: true), |
||||
|
LastModifierId = table.Column<Guid>(type: "char(36)", nullable: true, collation: "ascii_general_ci"), |
||||
|
IsDeleted = table.Column<bool>(type: "tinyint(1)", nullable: false, defaultValue: false), |
||||
|
DeleterId = table.Column<Guid>(type: "char(36)", nullable: true, collation: "ascii_general_ci"), |
||||
|
DeletionTime = table.Column<DateTime>(type: "datetime(6)", nullable: true) |
||||
|
}, |
||||
|
constraints: table => |
||||
|
{ |
||||
|
table.PrimaryKey("PK_AbpUsers", x => x.Id); |
||||
|
}) |
||||
|
.Annotation("MySql:CharSet", "utf8mb4"); |
||||
|
|
||||
|
migrationBuilder.CreateTable( |
||||
|
name: "AbpAuditLogActions", |
||||
|
columns: table => new |
||||
|
{ |
||||
|
Id = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci"), |
||||
|
TenantId = table.Column<Guid>(type: "char(36)", nullable: true, collation: "ascii_general_ci"), |
||||
|
AuditLogId = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci"), |
||||
|
ServiceName = table.Column<string>(type: "varchar(256)", maxLength: 256, nullable: true) |
||||
|
.Annotation("MySql:CharSet", "utf8mb4"), |
||||
|
MethodName = table.Column<string>(type: "varchar(128)", maxLength: 128, nullable: true) |
||||
|
.Annotation("MySql:CharSet", "utf8mb4"), |
||||
|
Parameters = table.Column<string>(type: "varchar(2000)", maxLength: 2000, nullable: true) |
||||
|
.Annotation("MySql:CharSet", "utf8mb4"), |
||||
|
ExecutionTime = table.Column<DateTime>(type: "datetime(6)", nullable: false), |
||||
|
ExecutionDuration = table.Column<int>(type: "int", nullable: false), |
||||
|
ExtraProperties = table.Column<string>(type: "longtext", nullable: true) |
||||
|
.Annotation("MySql:CharSet", "utf8mb4") |
||||
|
}, |
||||
|
constraints: table => |
||||
|
{ |
||||
|
table.PrimaryKey("PK_AbpAuditLogActions", x => x.Id); |
||||
|
table.ForeignKey( |
||||
|
name: "FK_AbpAuditLogActions_AbpAuditLogs_AuditLogId", |
||||
|
column: x => x.AuditLogId, |
||||
|
principalTable: "AbpAuditLogs", |
||||
|
principalColumn: "Id", |
||||
|
onDelete: ReferentialAction.Cascade); |
||||
|
}) |
||||
|
.Annotation("MySql:CharSet", "utf8mb4"); |
||||
|
|
||||
|
migrationBuilder.CreateTable( |
||||
|
name: "AbpEntityChanges", |
||||
|
columns: table => new |
||||
|
{ |
||||
|
Id = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci"), |
||||
|
AuditLogId = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci"), |
||||
|
TenantId = table.Column<Guid>(type: "char(36)", nullable: true, collation: "ascii_general_ci"), |
||||
|
ChangeTime = table.Column<DateTime>(type: "datetime(6)", nullable: false), |
||||
|
ChangeType = table.Column<byte>(type: "tinyint unsigned", nullable: false), |
||||
|
EntityTenantId = table.Column<Guid>(type: "char(36)", nullable: true, collation: "ascii_general_ci"), |
||||
|
EntityId = table.Column<string>(type: "varchar(128)", maxLength: 128, nullable: false) |
||||
|
.Annotation("MySql:CharSet", "utf8mb4"), |
||||
|
EntityTypeFullName = table.Column<string>(type: "varchar(128)", maxLength: 128, nullable: false) |
||||
|
.Annotation("MySql:CharSet", "utf8mb4"), |
||||
|
ExtraProperties = table.Column<string>(type: "longtext", nullable: true) |
||||
|
.Annotation("MySql:CharSet", "utf8mb4") |
||||
|
}, |
||||
|
constraints: table => |
||||
|
{ |
||||
|
table.PrimaryKey("PK_AbpEntityChanges", x => x.Id); |
||||
|
table.ForeignKey( |
||||
|
name: "FK_AbpEntityChanges_AbpAuditLogs_AuditLogId", |
||||
|
column: x => x.AuditLogId, |
||||
|
principalTable: "AbpAuditLogs", |
||||
|
principalColumn: "Id", |
||||
|
onDelete: ReferentialAction.Cascade); |
||||
|
}) |
||||
|
.Annotation("MySql:CharSet", "utf8mb4"); |
||||
|
|
||||
|
migrationBuilder.CreateTable( |
||||
|
name: "AbpOrganizationUnitRoles", |
||||
|
columns: table => new |
||||
|
{ |
||||
|
RoleId = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci"), |
||||
|
OrganizationUnitId = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci"), |
||||
|
TenantId = table.Column<Guid>(type: "char(36)", nullable: true, collation: "ascii_general_ci"), |
||||
|
CreationTime = table.Column<DateTime>(type: "datetime(6)", nullable: false), |
||||
|
CreatorId = table.Column<Guid>(type: "char(36)", nullable: true, collation: "ascii_general_ci") |
||||
|
}, |
||||
|
constraints: table => |
||||
|
{ |
||||
|
table.PrimaryKey("PK_AbpOrganizationUnitRoles", x => new { x.OrganizationUnitId, x.RoleId }); |
||||
|
table.ForeignKey( |
||||
|
name: "FK_AbpOrganizationUnitRoles_AbpOrganizationUnits_OrganizationUn~", |
||||
|
column: x => x.OrganizationUnitId, |
||||
|
principalTable: "AbpOrganizationUnits", |
||||
|
principalColumn: "Id", |
||||
|
onDelete: ReferentialAction.Cascade); |
||||
|
table.ForeignKey( |
||||
|
name: "FK_AbpOrganizationUnitRoles_AbpRoles_RoleId", |
||||
|
column: x => x.RoleId, |
||||
|
principalTable: "AbpRoles", |
||||
|
principalColumn: "Id", |
||||
|
onDelete: ReferentialAction.Cascade); |
||||
|
}) |
||||
|
.Annotation("MySql:CharSet", "utf8mb4"); |
||||
|
|
||||
|
migrationBuilder.CreateTable( |
||||
|
name: "AbpRoleClaims", |
||||
|
columns: table => new |
||||
|
{ |
||||
|
Id = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci"), |
||||
|
RoleId = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci"), |
||||
|
TenantId = table.Column<Guid>(type: "char(36)", nullable: true, collation: "ascii_general_ci"), |
||||
|
ClaimType = table.Column<string>(type: "varchar(256)", maxLength: 256, nullable: false) |
||||
|
.Annotation("MySql:CharSet", "utf8mb4"), |
||||
|
ClaimValue = table.Column<string>(type: "varchar(1024)", maxLength: 1024, nullable: true) |
||||
|
.Annotation("MySql:CharSet", "utf8mb4") |
||||
|
}, |
||||
|
constraints: table => |
||||
|
{ |
||||
|
table.PrimaryKey("PK_AbpRoleClaims", x => x.Id); |
||||
|
table.ForeignKey( |
||||
|
name: "FK_AbpRoleClaims_AbpRoles_RoleId", |
||||
|
column: x => x.RoleId, |
||||
|
principalTable: "AbpRoles", |
||||
|
principalColumn: "Id", |
||||
|
onDelete: ReferentialAction.Cascade); |
||||
|
}) |
||||
|
.Annotation("MySql:CharSet", "utf8mb4"); |
||||
|
|
||||
|
migrationBuilder.CreateTable( |
||||
|
name: "AbpTenantConnectionStrings", |
||||
|
columns: table => new |
||||
|
{ |
||||
|
TenantId = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci"), |
||||
|
Name = table.Column<string>(type: "varchar(64)", maxLength: 64, nullable: false) |
||||
|
.Annotation("MySql:CharSet", "utf8mb4"), |
||||
|
Value = table.Column<string>(type: "varchar(1024)", maxLength: 1024, nullable: false) |
||||
|
.Annotation("MySql:CharSet", "utf8mb4") |
||||
|
}, |
||||
|
constraints: table => |
||||
|
{ |
||||
|
table.PrimaryKey("PK_AbpTenantConnectionStrings", x => new { x.TenantId, x.Name }); |
||||
|
table.ForeignKey( |
||||
|
name: "FK_AbpTenantConnectionStrings_AbpTenants_TenantId", |
||||
|
column: x => x.TenantId, |
||||
|
principalTable: "AbpTenants", |
||||
|
principalColumn: "Id", |
||||
|
onDelete: ReferentialAction.Cascade); |
||||
|
}) |
||||
|
.Annotation("MySql:CharSet", "utf8mb4"); |
||||
|
|
||||
|
migrationBuilder.CreateTable( |
||||
|
name: "AbpUserClaims", |
||||
|
columns: table => new |
||||
|
{ |
||||
|
Id = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci"), |
||||
|
UserId = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci"), |
||||
|
TenantId = table.Column<Guid>(type: "char(36)", nullable: true, collation: "ascii_general_ci"), |
||||
|
ClaimType = table.Column<string>(type: "varchar(256)", maxLength: 256, nullable: false) |
||||
|
.Annotation("MySql:CharSet", "utf8mb4"), |
||||
|
ClaimValue = table.Column<string>(type: "varchar(1024)", maxLength: 1024, nullable: true) |
||||
|
.Annotation("MySql:CharSet", "utf8mb4") |
||||
|
}, |
||||
|
constraints: table => |
||||
|
{ |
||||
|
table.PrimaryKey("PK_AbpUserClaims", x => x.Id); |
||||
|
table.ForeignKey( |
||||
|
name: "FK_AbpUserClaims_AbpUsers_UserId", |
||||
|
column: x => x.UserId, |
||||
|
principalTable: "AbpUsers", |
||||
|
principalColumn: "Id", |
||||
|
onDelete: ReferentialAction.Cascade); |
||||
|
}) |
||||
|
.Annotation("MySql:CharSet", "utf8mb4"); |
||||
|
|
||||
|
migrationBuilder.CreateTable( |
||||
|
name: "AbpUserLogins", |
||||
|
columns: table => new |
||||
|
{ |
||||
|
UserId = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci"), |
||||
|
LoginProvider = table.Column<string>(type: "varchar(64)", maxLength: 64, nullable: false) |
||||
|
.Annotation("MySql:CharSet", "utf8mb4"), |
||||
|
TenantId = table.Column<Guid>(type: "char(36)", nullable: true, collation: "ascii_general_ci"), |
||||
|
ProviderKey = table.Column<string>(type: "varchar(196)", maxLength: 196, nullable: false) |
||||
|
.Annotation("MySql:CharSet", "utf8mb4"), |
||||
|
ProviderDisplayName = table.Column<string>(type: "varchar(128)", maxLength: 128, nullable: true) |
||||
|
.Annotation("MySql:CharSet", "utf8mb4") |
||||
|
}, |
||||
|
constraints: table => |
||||
|
{ |
||||
|
table.PrimaryKey("PK_AbpUserLogins", x => new { x.UserId, x.LoginProvider }); |
||||
|
table.ForeignKey( |
||||
|
name: "FK_AbpUserLogins_AbpUsers_UserId", |
||||
|
column: x => x.UserId, |
||||
|
principalTable: "AbpUsers", |
||||
|
principalColumn: "Id", |
||||
|
onDelete: ReferentialAction.Cascade); |
||||
|
}) |
||||
|
.Annotation("MySql:CharSet", "utf8mb4"); |
||||
|
|
||||
|
migrationBuilder.CreateTable( |
||||
|
name: "AbpUserOrganizationUnits", |
||||
|
columns: table => new |
||||
|
{ |
||||
|
UserId = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci"), |
||||
|
OrganizationUnitId = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci"), |
||||
|
TenantId = table.Column<Guid>(type: "char(36)", nullable: true, collation: "ascii_general_ci"), |
||||
|
CreationTime = table.Column<DateTime>(type: "datetime(6)", nullable: false), |
||||
|
CreatorId = table.Column<Guid>(type: "char(36)", nullable: true, collation: "ascii_general_ci") |
||||
|
}, |
||||
|
constraints: table => |
||||
|
{ |
||||
|
table.PrimaryKey("PK_AbpUserOrganizationUnits", x => new { x.OrganizationUnitId, x.UserId }); |
||||
|
table.ForeignKey( |
||||
|
name: "FK_AbpUserOrganizationUnits_AbpOrganizationUnits_OrganizationUn~", |
||||
|
column: x => x.OrganizationUnitId, |
||||
|
principalTable: "AbpOrganizationUnits", |
||||
|
principalColumn: "Id", |
||||
|
onDelete: ReferentialAction.Cascade); |
||||
|
table.ForeignKey( |
||||
|
name: "FK_AbpUserOrganizationUnits_AbpUsers_UserId", |
||||
|
column: x => x.UserId, |
||||
|
principalTable: "AbpUsers", |
||||
|
principalColumn: "Id", |
||||
|
onDelete: ReferentialAction.Cascade); |
||||
|
}) |
||||
|
.Annotation("MySql:CharSet", "utf8mb4"); |
||||
|
|
||||
|
migrationBuilder.CreateTable( |
||||
|
name: "AbpUserRoles", |
||||
|
columns: table => new |
||||
|
{ |
||||
|
UserId = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci"), |
||||
|
RoleId = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci"), |
||||
|
TenantId = table.Column<Guid>(type: "char(36)", nullable: true, collation: "ascii_general_ci") |
||||
|
}, |
||||
|
constraints: table => |
||||
|
{ |
||||
|
table.PrimaryKey("PK_AbpUserRoles", x => new { x.UserId, x.RoleId }); |
||||
|
table.ForeignKey( |
||||
|
name: "FK_AbpUserRoles_AbpRoles_RoleId", |
||||
|
column: x => x.RoleId, |
||||
|
principalTable: "AbpRoles", |
||||
|
principalColumn: "Id", |
||||
|
onDelete: ReferentialAction.Cascade); |
||||
|
table.ForeignKey( |
||||
|
name: "FK_AbpUserRoles_AbpUsers_UserId", |
||||
|
column: x => x.UserId, |
||||
|
principalTable: "AbpUsers", |
||||
|
principalColumn: "Id", |
||||
|
onDelete: ReferentialAction.Cascade); |
||||
|
}) |
||||
|
.Annotation("MySql:CharSet", "utf8mb4"); |
||||
|
|
||||
|
migrationBuilder.CreateTable( |
||||
|
name: "AbpUserTokens", |
||||
|
columns: table => new |
||||
|
{ |
||||
|
UserId = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci"), |
||||
|
LoginProvider = table.Column<string>(type: "varchar(64)", maxLength: 64, nullable: false) |
||||
|
.Annotation("MySql:CharSet", "utf8mb4"), |
||||
|
Name = table.Column<string>(type: "varchar(128)", maxLength: 128, nullable: false) |
||||
|
.Annotation("MySql:CharSet", "utf8mb4"), |
||||
|
TenantId = table.Column<Guid>(type: "char(36)", nullable: true, collation: "ascii_general_ci"), |
||||
|
Value = table.Column<string>(type: "longtext", nullable: true) |
||||
|
.Annotation("MySql:CharSet", "utf8mb4") |
||||
|
}, |
||||
|
constraints: table => |
||||
|
{ |
||||
|
table.PrimaryKey("PK_AbpUserTokens", x => new { x.UserId, x.LoginProvider, x.Name }); |
||||
|
table.ForeignKey( |
||||
|
name: "FK_AbpUserTokens_AbpUsers_UserId", |
||||
|
column: x => x.UserId, |
||||
|
principalTable: "AbpUsers", |
||||
|
principalColumn: "Id", |
||||
|
onDelete: ReferentialAction.Cascade); |
||||
|
}) |
||||
|
.Annotation("MySql:CharSet", "utf8mb4"); |
||||
|
|
||||
|
migrationBuilder.CreateTable( |
||||
|
name: "AbpEntityPropertyChanges", |
||||
|
columns: table => new |
||||
|
{ |
||||
|
Id = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci"), |
||||
|
TenantId = table.Column<Guid>(type: "char(36)", nullable: true, collation: "ascii_general_ci"), |
||||
|
EntityChangeId = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci"), |
||||
|
NewValue = table.Column<string>(type: "varchar(512)", maxLength: 512, nullable: true) |
||||
|
.Annotation("MySql:CharSet", "utf8mb4"), |
||||
|
OriginalValue = table.Column<string>(type: "varchar(512)", maxLength: 512, nullable: true) |
||||
|
.Annotation("MySql:CharSet", "utf8mb4"), |
||||
|
PropertyName = table.Column<string>(type: "varchar(128)", maxLength: 128, nullable: false) |
||||
|
.Annotation("MySql:CharSet", "utf8mb4"), |
||||
|
PropertyTypeFullName = table.Column<string>(type: "varchar(64)", maxLength: 64, nullable: false) |
||||
|
.Annotation("MySql:CharSet", "utf8mb4") |
||||
|
}, |
||||
|
constraints: table => |
||||
|
{ |
||||
|
table.PrimaryKey("PK_AbpEntityPropertyChanges", x => x.Id); |
||||
|
table.ForeignKey( |
||||
|
name: "FK_AbpEntityPropertyChanges_AbpEntityChanges_EntityChangeId", |
||||
|
column: x => x.EntityChangeId, |
||||
|
principalTable: "AbpEntityChanges", |
||||
|
principalColumn: "Id", |
||||
|
onDelete: ReferentialAction.Cascade); |
||||
|
}) |
||||
|
.Annotation("MySql:CharSet", "utf8mb4"); |
||||
|
|
||||
|
migrationBuilder.CreateIndex( |
||||
|
name: "IX_AbpAuditLogActions_AuditLogId", |
||||
|
table: "AbpAuditLogActions", |
||||
|
column: "AuditLogId"); |
||||
|
|
||||
|
migrationBuilder.CreateIndex( |
||||
|
name: "IX_AbpAuditLogActions_TenantId_ServiceName_MethodName_Execution~", |
||||
|
table: "AbpAuditLogActions", |
||||
|
columns: new[] { "TenantId", "ServiceName", "MethodName", "ExecutionTime" }); |
||||
|
|
||||
|
migrationBuilder.CreateIndex( |
||||
|
name: "IX_AbpAuditLogs_TenantId_ExecutionTime", |
||||
|
table: "AbpAuditLogs", |
||||
|
columns: new[] { "TenantId", "ExecutionTime" }); |
||||
|
|
||||
|
migrationBuilder.CreateIndex( |
||||
|
name: "IX_AbpAuditLogs_TenantId_UserId_ExecutionTime", |
||||
|
table: "AbpAuditLogs", |
||||
|
columns: new[] { "TenantId", "UserId", "ExecutionTime" }); |
||||
|
|
||||
|
migrationBuilder.CreateIndex( |
||||
|
name: "IX_AbpBackgroundJobs_IsAbandoned_NextTryTime", |
||||
|
table: "AbpBackgroundJobs", |
||||
|
columns: new[] { "IsAbandoned", "NextTryTime" }); |
||||
|
|
||||
|
migrationBuilder.CreateIndex( |
||||
|
name: "IX_AbpEntityChanges_AuditLogId", |
||||
|
table: "AbpEntityChanges", |
||||
|
column: "AuditLogId"); |
||||
|
|
||||
|
migrationBuilder.CreateIndex( |
||||
|
name: "IX_AbpEntityChanges_TenantId_EntityTypeFullName_EntityId", |
||||
|
table: "AbpEntityChanges", |
||||
|
columns: new[] { "TenantId", "EntityTypeFullName", "EntityId" }); |
||||
|
|
||||
|
migrationBuilder.CreateIndex( |
||||
|
name: "IX_AbpEntityPropertyChanges_EntityChangeId", |
||||
|
table: "AbpEntityPropertyChanges", |
||||
|
column: "EntityChangeId"); |
||||
|
|
||||
|
migrationBuilder.CreateIndex( |
||||
|
name: "IX_AbpFeatureValues_Name_ProviderName_ProviderKey", |
||||
|
table: "AbpFeatureValues", |
||||
|
columns: new[] { "Name", "ProviderName", "ProviderKey" }, |
||||
|
unique: true); |
||||
|
|
||||
|
migrationBuilder.CreateIndex( |
||||
|
name: "IX_AbpLinkUsers_SourceUserId_SourceTenantId_TargetUserId_Target~", |
||||
|
table: "AbpLinkUsers", |
||||
|
columns: new[] { "SourceUserId", "SourceTenantId", "TargetUserId", "TargetTenantId" }, |
||||
|
unique: true); |
||||
|
|
||||
|
migrationBuilder.CreateIndex( |
||||
|
name: "IX_AbpOrganizationUnitRoles_RoleId_OrganizationUnitId", |
||||
|
table: "AbpOrganizationUnitRoles", |
||||
|
columns: new[] { "RoleId", "OrganizationUnitId" }); |
||||
|
|
||||
|
migrationBuilder.CreateIndex( |
||||
|
name: "IX_AbpOrganizationUnits_Code", |
||||
|
table: "AbpOrganizationUnits", |
||||
|
column: "Code"); |
||||
|
|
||||
|
migrationBuilder.CreateIndex( |
||||
|
name: "IX_AbpOrganizationUnits_ParentId", |
||||
|
table: "AbpOrganizationUnits", |
||||
|
column: "ParentId"); |
||||
|
|
||||
|
migrationBuilder.CreateIndex( |
||||
|
name: "IX_AbpPermissionGrants_TenantId_Name_ProviderName_ProviderKey", |
||||
|
table: "AbpPermissionGrants", |
||||
|
columns: new[] { "TenantId", "Name", "ProviderName", "ProviderKey" }, |
||||
|
unique: true); |
||||
|
|
||||
|
migrationBuilder.CreateIndex( |
||||
|
name: "IX_AbpRoleClaims_RoleId", |
||||
|
table: "AbpRoleClaims", |
||||
|
column: "RoleId"); |
||||
|
|
||||
|
migrationBuilder.CreateIndex( |
||||
|
name: "IX_AbpRoles_NormalizedName", |
||||
|
table: "AbpRoles", |
||||
|
column: "NormalizedName"); |
||||
|
|
||||
|
migrationBuilder.CreateIndex( |
||||
|
name: "IX_AbpSecurityLogs_TenantId_Action", |
||||
|
table: "AbpSecurityLogs", |
||||
|
columns: new[] { "TenantId", "Action" }); |
||||
|
|
||||
|
migrationBuilder.CreateIndex( |
||||
|
name: "IX_AbpSecurityLogs_TenantId_ApplicationName", |
||||
|
table: "AbpSecurityLogs", |
||||
|
columns: new[] { "TenantId", "ApplicationName" }); |
||||
|
|
||||
|
migrationBuilder.CreateIndex( |
||||
|
name: "IX_AbpSecurityLogs_TenantId_Identity", |
||||
|
table: "AbpSecurityLogs", |
||||
|
columns: new[] { "TenantId", "Identity" }); |
||||
|
|
||||
|
migrationBuilder.CreateIndex( |
||||
|
name: "IX_AbpSecurityLogs_TenantId_UserId", |
||||
|
table: "AbpSecurityLogs", |
||||
|
columns: new[] { "TenantId", "UserId" }); |
||||
|
|
||||
|
migrationBuilder.CreateIndex( |
||||
|
name: "IX_AbpSettings_Name_ProviderName_ProviderKey", |
||||
|
table: "AbpSettings", |
||||
|
columns: new[] { "Name", "ProviderName", "ProviderKey" }, |
||||
|
unique: true); |
||||
|
|
||||
|
migrationBuilder.CreateIndex( |
||||
|
name: "IX_AbpTenants_Name", |
||||
|
table: "AbpTenants", |
||||
|
column: "Name"); |
||||
|
|
||||
|
migrationBuilder.CreateIndex( |
||||
|
name: "IX_AbpUserClaims_UserId", |
||||
|
table: "AbpUserClaims", |
||||
|
column: "UserId"); |
||||
|
|
||||
|
migrationBuilder.CreateIndex( |
||||
|
name: "IX_AbpUserLogins_LoginProvider_ProviderKey", |
||||
|
table: "AbpUserLogins", |
||||
|
columns: new[] { "LoginProvider", "ProviderKey" }); |
||||
|
|
||||
|
migrationBuilder.CreateIndex( |
||||
|
name: "IX_AbpUserOrganizationUnits_UserId_OrganizationUnitId", |
||||
|
table: "AbpUserOrganizationUnits", |
||||
|
columns: new[] { "UserId", "OrganizationUnitId" }); |
||||
|
|
||||
|
migrationBuilder.CreateIndex( |
||||
|
name: "IX_AbpUserRoles_RoleId_UserId", |
||||
|
table: "AbpUserRoles", |
||||
|
columns: new[] { "RoleId", "UserId" }); |
||||
|
|
||||
|
migrationBuilder.CreateIndex( |
||||
|
name: "IX_AbpUsers_Email", |
||||
|
table: "AbpUsers", |
||||
|
column: "Email"); |
||||
|
|
||||
|
migrationBuilder.CreateIndex( |
||||
|
name: "IX_AbpUsers_NormalizedEmail", |
||||
|
table: "AbpUsers", |
||||
|
column: "NormalizedEmail"); |
||||
|
|
||||
|
migrationBuilder.CreateIndex( |
||||
|
name: "IX_AbpUsers_NormalizedUserName", |
||||
|
table: "AbpUsers", |
||||
|
column: "NormalizedUserName"); |
||||
|
|
||||
|
migrationBuilder.CreateIndex( |
||||
|
name: "IX_AbpUsers_UserName", |
||||
|
table: "AbpUsers", |
||||
|
column: "UserName"); |
||||
|
} |
||||
|
|
||||
|
protected override void Down(MigrationBuilder migrationBuilder) |
||||
|
{ |
||||
|
migrationBuilder.DropTable( |
||||
|
name: "AbpAuditLogActions"); |
||||
|
|
||||
|
migrationBuilder.DropTable( |
||||
|
name: "AbpBackgroundJobs"); |
||||
|
|
||||
|
migrationBuilder.DropTable( |
||||
|
name: "AbpClaimTypes"); |
||||
|
|
||||
|
migrationBuilder.DropTable( |
||||
|
name: "AbpEntityPropertyChanges"); |
||||
|
|
||||
|
migrationBuilder.DropTable( |
||||
|
name: "AbpFeatureValues"); |
||||
|
|
||||
|
migrationBuilder.DropTable( |
||||
|
name: "AbpLinkUsers"); |
||||
|
|
||||
|
migrationBuilder.DropTable( |
||||
|
name: "AbpOrganizationUnitRoles"); |
||||
|
|
||||
|
migrationBuilder.DropTable( |
||||
|
name: "AbpPermissionGrants"); |
||||
|
|
||||
|
migrationBuilder.DropTable( |
||||
|
name: "AbpRoleClaims"); |
||||
|
|
||||
|
migrationBuilder.DropTable( |
||||
|
name: "AbpSecurityLogs"); |
||||
|
|
||||
|
migrationBuilder.DropTable( |
||||
|
name: "AbpSettings"); |
||||
|
|
||||
|
migrationBuilder.DropTable( |
||||
|
name: "AbpTenantConnectionStrings"); |
||||
|
|
||||
|
migrationBuilder.DropTable( |
||||
|
name: "AbpUserClaims"); |
||||
|
|
||||
|
migrationBuilder.DropTable( |
||||
|
name: "AbpUserLogins"); |
||||
|
|
||||
|
migrationBuilder.DropTable( |
||||
|
name: "AbpUserOrganizationUnits"); |
||||
|
|
||||
|
migrationBuilder.DropTable( |
||||
|
name: "AbpUserRoles"); |
||||
|
|
||||
|
migrationBuilder.DropTable( |
||||
|
name: "AbpUserTokens"); |
||||
|
|
||||
|
migrationBuilder.DropTable( |
||||
|
name: "AbpEntityChanges"); |
||||
|
|
||||
|
migrationBuilder.DropTable( |
||||
|
name: "AbpTenants"); |
||||
|
|
||||
|
migrationBuilder.DropTable( |
||||
|
name: "AbpOrganizationUnits"); |
||||
|
|
||||
|
migrationBuilder.DropTable( |
||||
|
name: "AbpRoles"); |
||||
|
|
||||
|
migrationBuilder.DropTable( |
||||
|
name: "AbpUsers"); |
||||
|
|
||||
|
migrationBuilder.DropTable( |
||||
|
name: "AbpAuditLogs"); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
File diff suppressed because it is too large
@ -0,0 +1,32 @@ |
|||||
|
using System; |
||||
|
using System.Threading.Tasks; |
||||
|
using Microsoft.AspNetCore.Builder; |
||||
|
using Microsoft.Extensions.DependencyInjection; |
||||
|
using Microsoft.Extensions.Hosting; |
||||
|
using Serilog; |
||||
|
using Serilog.Events; |
||||
|
|
||||
|
namespace Lion.AbpPro.BasicManagement; |
||||
|
|
||||
|
public class Program |
||||
|
{ |
||||
|
public static void Main(string[] args) |
||||
|
{ |
||||
|
CreateHostBuilder(args).Build().Run(); |
||||
|
|
||||
|
} |
||||
|
|
||||
|
private static IHostBuilder CreateHostBuilder(string[] args) => |
||||
|
Host.CreateDefaultBuilder(args) |
||||
|
.ConfigureWebHostDefaults(webBuilder => |
||||
|
{ |
||||
|
webBuilder.ConfigureKestrel((context, options) => { options.Limits.MaxRequestBodySize = 1024 * 50; }); |
||||
|
webBuilder.UseStartup<Startup>(); |
||||
|
}) |
||||
|
.UseSerilog((context, loggerConfiguration) => |
||||
|
{ |
||||
|
SerilogToEsExtensions.SetSerilogConfiguration( |
||||
|
loggerConfiguration, |
||||
|
context.Configuration); |
||||
|
}).UseAutofac(); |
||||
|
} |
||||
@ -0,0 +1,12 @@ |
|||||
|
{ |
||||
|
"profiles": { |
||||
|
"Lion.AbpPro.BasicManagement.HttpApi.Host": { |
||||
|
"commandName": "Project", |
||||
|
"launchBrowser": true, |
||||
|
"applicationUrl": "http://localhost:44324", |
||||
|
"environmentVariables": { |
||||
|
"ASPNETCORE_ENVIRONMENT": "Development" |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,15 @@ |
|||||
|
using Serilog; |
||||
|
|
||||
|
namespace Lion.AbpPro.BasicManagement |
||||
|
{ |
||||
|
public static class SerilogToEsExtensions |
||||
|
{ |
||||
|
public static void SetSerilogConfiguration(LoggerConfiguration loggerConfiguration, IConfiguration configuration) |
||||
|
{ |
||||
|
// 默认读取 configuration 中 "Serilog" 节点下的配置
|
||||
|
loggerConfiguration |
||||
|
.ReadFrom.Configuration(configuration) |
||||
|
.Enrich.FromLogContext(); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,15 @@ |
|||||
|
namespace Lion.AbpPro.BasicManagement |
||||
|
{ |
||||
|
public class Startup |
||||
|
{ |
||||
|
public void ConfigureServices(IServiceCollection services) |
||||
|
{ |
||||
|
services.AddApplication<BasicManagementHttpApiHostModule>(); |
||||
|
} |
||||
|
|
||||
|
public void Configure(IApplicationBuilder app, IWebHostEnvironment env, ILoggerFactory loggerFactory) |
||||
|
{ |
||||
|
app.InitializeApplication(); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,48 @@ |
|||||
|
{ |
||||
|
"Serilog": { |
||||
|
"Using": [ |
||||
|
"Serilog.Sinks.Console", |
||||
|
"Serilog.Sinks.File" |
||||
|
], |
||||
|
"MinimumLevel": { |
||||
|
"Default": "Debug", |
||||
|
"Override": { |
||||
|
"Microsoft": "Information", |
||||
|
"Volo.Abp": "Information", |
||||
|
"Hangfire": "Information", |
||||
|
"DotNetCore.CAP": "Information", |
||||
|
"Serilog.AspNetCore": "Information", |
||||
|
"Microsoft.EntityFrameworkCore": "Warning", |
||||
|
"Microsoft.AspNetCore": "Information" |
||||
|
} |
||||
|
}, |
||||
|
"WriteTo": [ |
||||
|
{ |
||||
|
"Name": "Console" |
||||
|
}, |
||||
|
{ |
||||
|
"Name": "File", |
||||
|
"Args": { |
||||
|
"path": "logs/logs-.txt", |
||||
|
"rollingInterval": "Day" |
||||
|
} |
||||
|
} |
||||
|
] |
||||
|
}, |
||||
|
"App": { |
||||
|
"SelfUrl": "http://localhost:44315", |
||||
|
"CorsOrigins": "https://*.AbpPro.com,http://localhost:4200,http://localhost:3100" |
||||
|
}, |
||||
|
"ConnectionStrings": { |
||||
|
"Default": "Data Source=localhost;Port=3306;Database=LionAbpProBasicManagementDB;uid=root;pwd=1q2w3E*;charset=utf8mb4;Allow User Variables=true;AllowLoadLocalInfile=true" |
||||
|
}, |
||||
|
"Redis": { |
||||
|
"Configuration": "localhost,password=mypassword,defaultdatabase=1" |
||||
|
}, |
||||
|
"Jwt": { |
||||
|
"Audience": "Lion.AbpPro.BasicManagement", |
||||
|
"SecurityKey": "dzehzRz9a8asdfasfdadfasdfasdfafsdadfasbasdf=", |
||||
|
"Issuer": "Lion.AbpPro", |
||||
|
"ExpirationTime": 30 |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,43 @@ |
|||||
|
namespace Lion.AbpPro.BasicManagement.AuditLogs |
||||
|
{ |
||||
|
public class GetAuditLogPageListOutput |
||||
|
{ |
||||
|
public string ApplicationName { get; set; } |
||||
|
|
||||
|
public Guid? UserId { get; set; } |
||||
|
|
||||
|
public string UserName { get; set; } |
||||
|
|
||||
|
public Guid? TenantId { get; set; } |
||||
|
|
||||
|
public string TenantName { get; set; } |
||||
|
|
||||
|
public Guid? ImpersonatorUserId { get; set; } |
||||
|
|
||||
|
public Guid? ImpersonatorTenantId { get; set; } |
||||
|
|
||||
|
public DateTime ExecutionTime { get; set; } |
||||
|
|
||||
|
public int ExecutionDuration { get; set; } |
||||
|
|
||||
|
public string ClientIpAddress { get; set; } |
||||
|
|
||||
|
public string ClientName { get; set; } |
||||
|
|
||||
|
public string ClientId { get; set; } |
||||
|
|
||||
|
public string CorrelationId { get; set; } |
||||
|
|
||||
|
public string BrowserInfo { get; set; } |
||||
|
|
||||
|
public string HttpMethod { get; set; } |
||||
|
|
||||
|
public string Url { get; set; } |
||||
|
|
||||
|
public string Exceptions { get; set; } |
||||
|
|
||||
|
public string Comments { get; set; } |
||||
|
|
||||
|
public int? HttpStatusCode { get; set; } |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,12 @@ |
|||||
|
namespace Lion.AbpPro.BasicManagement.AuditLogs |
||||
|
{ |
||||
|
public interface IAuditLogAppService : IApplicationService |
||||
|
{ |
||||
|
/// <summary>
|
||||
|
/// 分页查询审计日志
|
||||
|
/// </summary>
|
||||
|
/// <param name="input"></param>
|
||||
|
/// <returns></returns>
|
||||
|
Task<PagedResultDto<GetAuditLogPageListOutput>> GetListAsync(PagingAuditLogListInput input); |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,67 @@ |
|||||
|
using System.Net; |
||||
|
|
||||
|
namespace Lion.AbpPro.BasicManagement.AuditLogs |
||||
|
{ |
||||
|
public class PagingAuditLogListInput : PagingBase |
||||
|
{ |
||||
|
/// <summary>
|
||||
|
/// 排序
|
||||
|
/// </summary>
|
||||
|
public string Sorting { get; set; } |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 开始时间
|
||||
|
/// </summary>
|
||||
|
public DateTime? StartTime { get; set; } |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 结束时间
|
||||
|
/// </summary>
|
||||
|
public DateTime? EndTime { get; set; } |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 请求方法
|
||||
|
/// </summary>
|
||||
|
public string HttpMethod { get; set; } |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 请求地址
|
||||
|
/// </summary>
|
||||
|
public string Url { get; set; } |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 用户名
|
||||
|
/// </summary>
|
||||
|
public string UserName { get; set; } |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 应用程序名称
|
||||
|
/// </summary>
|
||||
|
public string ApplicationName { get; set; } |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// RequestId
|
||||
|
/// </summary>
|
||||
|
public string CorrelationId { get; set; } |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 最大执行时间
|
||||
|
/// </summary>
|
||||
|
public int? MaxExecutionDuration { get; set; } |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 最小执行时间
|
||||
|
/// </summary>
|
||||
|
public int? MinExecutionDuration { get; set; } |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 是否有异常
|
||||
|
/// </summary>
|
||||
|
public bool? HasException { get; set; } |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// http 状态码
|
||||
|
/// </summary>
|
||||
|
public HttpStatusCode? HttpStatusCode { get; set; } |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,25 @@ |
|||||
|
using Volo.Abp.Account; |
||||
|
using Volo.Abp.Application; |
||||
|
using Volo.Abp.Modularity; |
||||
|
using Volo.Abp.Authorization; |
||||
|
using Volo.Abp.FeatureManagement; |
||||
|
using Volo.Abp.Identity; |
||||
|
using Volo.Abp.SettingManagement; |
||||
|
|
||||
|
namespace Lion.AbpPro.BasicManagement; |
||||
|
|
||||
|
[DependsOn( |
||||
|
typeof(BasicManagementDomainSharedModule), |
||||
|
typeof(AbpDddApplicationContractsModule), |
||||
|
typeof(AbpAuthorizationModule), |
||||
|
typeof(AbpAccountApplicationContractsModule), |
||||
|
typeof(AbpFeatureManagementApplicationContractsModule), |
||||
|
typeof(AbpIdentityApplicationContractsModule), |
||||
|
typeof(AbpPermissionManagementApplicationContractsModule), |
||||
|
typeof(AbpSettingManagementApplicationContractsModule), |
||||
|
typeof(AbpTenantManagementApplicationContractsModule) |
||||
|
)] |
||||
|
public class BasicManagementApplicationContractsModule : AbpModule |
||||
|
{ |
||||
|
|
||||
|
} |
||||
@ -0,0 +1,8 @@ |
|||||
|
namespace Lion.AbpPro.BasicManagement; |
||||
|
|
||||
|
public class BasicManagementRemoteServiceConsts |
||||
|
{ |
||||
|
public const string RemoteServiceName = "BasicManagement"; |
||||
|
|
||||
|
public const string ModuleName = "basicManagement"; |
||||
|
} |
||||
@ -0,0 +1,25 @@ |
|||||
|
namespace Lion.AbpPro.BasicManagement.ConfigurationOptions |
||||
|
{ |
||||
|
public class JwtOptions |
||||
|
{ |
||||
|
/// <summary>
|
||||
|
/// 过期时间 单位小时
|
||||
|
/// </summary>
|
||||
|
public int ExpirationTime { get; set; } |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// Audience
|
||||
|
/// </summary>
|
||||
|
public string Audience { get; set; } |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 密钥
|
||||
|
/// </summary>
|
||||
|
public string SecurityKey { get; set; } |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// Issuer
|
||||
|
/// </summary>
|
||||
|
public string Issuer { get; set; } |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,3 @@ |
|||||
|
<Weavers xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="FodyWeavers.xsd"> |
||||
|
<ConfigureAwait ContinueOnCapturedContext="false" /> |
||||
|
</Weavers> |
||||
@ -0,0 +1,30 @@ |
|||||
|
<?xml version="1.0" encoding="utf-8"?> |
||||
|
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> |
||||
|
<!-- This file was generated by Fody. Manual changes to this file will be lost when your project is rebuilt. --> |
||||
|
<xs:element name="Weavers"> |
||||
|
<xs:complexType> |
||||
|
<xs:all> |
||||
|
<xs:element name="ConfigureAwait" minOccurs="0" maxOccurs="1"> |
||||
|
<xs:complexType> |
||||
|
<xs:attribute name="ContinueOnCapturedContext" type="xs:boolean" /> |
||||
|
</xs:complexType> |
||||
|
</xs:element> |
||||
|
</xs:all> |
||||
|
<xs:attribute name="VerifyAssembly" type="xs:boolean"> |
||||
|
<xs:annotation> |
||||
|
<xs:documentation>'true' to run assembly verification (PEVerify) on the target assembly after all weavers have been executed.</xs:documentation> |
||||
|
</xs:annotation> |
||||
|
</xs:attribute> |
||||
|
<xs:attribute name="VerifyIgnoreCodes" type="xs:string"> |
||||
|
<xs:annotation> |
||||
|
<xs:documentation>A comma-separated list of error codes that can be safely ignored in assembly verification.</xs:documentation> |
||||
|
</xs:annotation> |
||||
|
</xs:attribute> |
||||
|
<xs:attribute name="GenerateXsd" type="xs:boolean"> |
||||
|
<xs:annotation> |
||||
|
<xs:documentation>'false' to turn off automatic generation of the XML Schema file.</xs:documentation> |
||||
|
</xs:annotation> |
||||
|
</xs:attribute> |
||||
|
</xs:complexType> |
||||
|
</xs:element> |
||||
|
</xs:schema> |
||||
@ -0,0 +1,11 @@ |
|||||
|
// Global using directives
|
||||
|
|
||||
|
global using System.ComponentModel.DataAnnotations; |
||||
|
global using Lion.AbpPro.BasicManagement.OrganizationUnits.Dto; |
||||
|
global using Lion.AbpPro.BasicManagement.Tenants.Dtos; |
||||
|
global using Lion.AbpPro.Extension.Customs.Dtos; |
||||
|
global using Volo.Abp.Application.Dtos; |
||||
|
global using Volo.Abp.Application.Services; |
||||
|
global using Volo.Abp.AspNetCore.Mvc.MultiTenancy; |
||||
|
global using Volo.Abp.PermissionManagement; |
||||
|
global using Volo.Abp.TenantManagement; |
||||
@ -0,0 +1,22 @@ |
|||||
|
<Project Sdk="Microsoft.NET.Sdk"> |
||||
|
<PropertyGroup> |
||||
|
<TargetFramework>net6.0</TargetFramework> |
||||
|
<RootNamespace>Lion.AbpPro.BasicManagement</RootNamespace> |
||||
|
</PropertyGroup> |
||||
|
|
||||
|
<ItemGroup> |
||||
|
<PackageReference Include="Volo.Abp.AspNetCore.Mvc.Contracts" /> |
||||
|
<PackageReference Include="Volo.Abp.Ddd.Application.Contracts" /> |
||||
|
<PackageReference Include="Volo.Abp.Authorization" /> |
||||
|
<PackageReference Include="Volo.Abp.Account.Application.Contracts" /> |
||||
|
<PackageReference Include="Volo.Abp.Identity.Application.Contracts" /> |
||||
|
<PackageReference Include="Volo.Abp.PermissionManagement.Application.Contracts" /> |
||||
|
<PackageReference Include="Volo.Abp.TenantManagement.Application.Contracts" /> |
||||
|
<PackageReference Include="Volo.Abp.FeatureManagement.Application.Contracts" /> |
||||
|
<PackageReference Include="Volo.Abp.SettingManagement.Application.Contracts" /> |
||||
|
<PackageReference Include="Magicodes.IE.Excel.AspNetCore" /> |
||||
|
<ProjectReference Include="..\..\..\..\frameworks\Extensions\src\Lion.AbpPro.Extension\Lion.AbpPro.Extension.csproj" /> |
||||
|
<ProjectReference Include="..\Lion.AbpPro.BasicManagement.Domain.Shared\Lion.AbpPro.BasicManagement.Domain.Shared.csproj" /> |
||||
|
</ItemGroup> |
||||
|
|
||||
|
</Project> |
||||
@ -0,0 +1,8 @@ |
|||||
|
namespace Lion.AbpPro.BasicManagement.OrganizationUnits.Dto; |
||||
|
|
||||
|
public class AddRoleToOrganizationUnitInput |
||||
|
{ |
||||
|
public List<Guid> RoleId { get; set; } |
||||
|
|
||||
|
public Guid OrganizationUnitId { get; set; } |
||||
|
} |
||||
@ -0,0 +1,8 @@ |
|||||
|
namespace Lion.AbpPro.BasicManagement.OrganizationUnits.Dto; |
||||
|
|
||||
|
public class AddUserToOrganizationUnitInput |
||||
|
{ |
||||
|
public List<Guid> UserId { get; set; } |
||||
|
|
||||
|
public Guid OrganizationUnitId { get; set; } |
||||
|
} |
||||
@ -0,0 +1,9 @@ |
|||||
|
namespace Lion.AbpPro.BasicManagement.OrganizationUnits.Dto; |
||||
|
|
||||
|
public class CreateOrganizationUnitInput |
||||
|
{ |
||||
|
[Required] |
||||
|
public string DisplayName { get; set; } |
||||
|
|
||||
|
public Guid? ParentId { get; set; } |
||||
|
} |
||||
@ -0,0 +1,7 @@ |
|||||
|
namespace Lion.AbpPro.BasicManagement.OrganizationUnits.Dto; |
||||
|
|
||||
|
public class GetOrganizationUnitRoleInput : PagingBase |
||||
|
{ |
||||
|
public Guid OrganizationUnitId { get; set; } |
||||
|
|
||||
|
} |
||||
@ -0,0 +1,8 @@ |
|||||
|
namespace Lion.AbpPro.BasicManagement.OrganizationUnits.Dto; |
||||
|
|
||||
|
public class GetOrganizationUnitRoleOutput |
||||
|
{ |
||||
|
public Guid Id { get; set; } |
||||
|
|
||||
|
public string Name { get; set; } |
||||
|
} |
||||
@ -0,0 +1,8 @@ |
|||||
|
namespace Lion.AbpPro.BasicManagement.OrganizationUnits.Dto; |
||||
|
|
||||
|
public class GetOrganizationUnitUserInput : PagingBase |
||||
|
{ |
||||
|
public Guid OrganizationUnitId { get; set; } |
||||
|
|
||||
|
public string Filter { get; set; } |
||||
|
} |
||||
@ -0,0 +1,10 @@ |
|||||
|
namespace Lion.AbpPro.BasicManagement.OrganizationUnits.Dto; |
||||
|
|
||||
|
public class GetOrganizationUnitUserOutput |
||||
|
{ |
||||
|
public Guid Id { get; set; } |
||||
|
|
||||
|
public string UserName { get; set; } |
||||
|
|
||||
|
public string Email { get; set; } |
||||
|
} |
||||
@ -0,0 +1,8 @@ |
|||||
|
namespace Lion.AbpPro.BasicManagement.OrganizationUnits.Dto; |
||||
|
|
||||
|
public class GetUnAddRoleInput : PagingBase |
||||
|
{ |
||||
|
public Guid OrganizationUnitId { get; set; } |
||||
|
|
||||
|
public string Filter { get; set; } |
||||
|
} |
||||
@ -0,0 +1,8 @@ |
|||||
|
namespace Lion.AbpPro.BasicManagement.OrganizationUnits.Dto; |
||||
|
|
||||
|
public class GetUnAddRoleOutput |
||||
|
{ |
||||
|
public Guid Id { get; set; } |
||||
|
|
||||
|
public string Name { get; set; } |
||||
|
} |
||||
@ -0,0 +1,8 @@ |
|||||
|
namespace Lion.AbpPro.BasicManagement.OrganizationUnits.Dto; |
||||
|
|
||||
|
public class GetUnAddUserInput : PagingBase |
||||
|
{ |
||||
|
public Guid OrganizationUnitId { get; set; } |
||||
|
|
||||
|
public string Filter { get; set; } |
||||
|
} |
||||
@ -0,0 +1,10 @@ |
|||||
|
namespace Lion.AbpPro.BasicManagement.OrganizationUnits.Dto; |
||||
|
|
||||
|
public class GetUnAddUserOutput |
||||
|
{ |
||||
|
public Guid Id { get; set; } |
||||
|
|
||||
|
public string UserName { get; set; } |
||||
|
|
||||
|
public string Email { get; set; } |
||||
|
} |
||||
@ -0,0 +1,14 @@ |
|||||
|
namespace Lion.AbpPro.BasicManagement.OrganizationUnits.Dto; |
||||
|
|
||||
|
public class OrganizationUnitDto |
||||
|
{ |
||||
|
public Guid Id { get; set; } |
||||
|
|
||||
|
public Guid? TenantId { get; set; } |
||||
|
|
||||
|
public string Code { get; set; } |
||||
|
|
||||
|
public string DisplayName { get; set; } |
||||
|
|
||||
|
public Guid? ParentId { get; set; } |
||||
|
} |
||||
@ -0,0 +1,8 @@ |
|||||
|
namespace Lion.AbpPro.BasicManagement.OrganizationUnits.Dto; |
||||
|
|
||||
|
public class RemoveRoleToOrganizationUnitInput |
||||
|
{ |
||||
|
public Guid RoleId { get; set; } |
||||
|
|
||||
|
public Guid OrganizationUnitId { get; set; } |
||||
|
} |
||||
@ -0,0 +1,8 @@ |
|||||
|
namespace Lion.AbpPro.BasicManagement.OrganizationUnits.Dto; |
||||
|
|
||||
|
public class RemoveUserToOrganizationUnitInput |
||||
|
{ |
||||
|
public Guid UserId { get; set; } |
||||
|
|
||||
|
public Guid OrganizationUnitId { get; set; } |
||||
|
} |
||||
@ -0,0 +1,10 @@ |
|||||
|
namespace Lion.AbpPro.BasicManagement.OrganizationUnits.Dto; |
||||
|
|
||||
|
public class TreeOutput |
||||
|
{ |
||||
|
public string Title { get; set; } |
||||
|
|
||||
|
public Guid Key { get; set; } |
||||
|
|
||||
|
public List<TreeOutput> Children { get; set; } |
||||
|
} |
||||
@ -0,0 +1,9 @@ |
|||||
|
namespace Lion.AbpPro.BasicManagement.OrganizationUnits.Dto; |
||||
|
|
||||
|
public class UpdateOrganizationUnitInput |
||||
|
{ |
||||
|
[Required] |
||||
|
public string DisplayName { get; set; } |
||||
|
|
||||
|
public Guid Id { get; set; } |
||||
|
} |
||||
@ -0,0 +1,66 @@ |
|||||
|
namespace Lion.AbpPro.BasicManagement.OrganizationUnits; |
||||
|
|
||||
|
public interface IOrganizationUnitAppService : IApplicationService |
||||
|
{ |
||||
|
/// <summary>
|
||||
|
/// 获取组织机构树结构
|
||||
|
/// </summary>
|
||||
|
/// <returns></returns>
|
||||
|
Task<List<TreeOutput>> GetTreeAsync(); |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 创建组织机构
|
||||
|
/// </summary>
|
||||
|
Task CreateAsync(CreateOrganizationUnitInput input); |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 删除组织机构
|
||||
|
/// </summary>
|
||||
|
Task DeleteAsync(IdInput input); |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 编辑组织机构
|
||||
|
/// </summary>
|
||||
|
Task UpdateAsync(UpdateOrganizationUnitInput input); |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 向组织机构添加角色
|
||||
|
/// </summary>
|
||||
|
Task AddRoleToOrganizationUnitAsync(AddRoleToOrganizationUnitInput input); |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 向组织机构删除角色
|
||||
|
/// </summary>
|
||||
|
Task RemoveRoleFromOrganizationUnitAsync(RemoveRoleToOrganizationUnitInput input); |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 向组织机构添加用户
|
||||
|
/// </summary>
|
||||
|
Task AddUserToOrganizationUnitAsync(AddUserToOrganizationUnitInput input); |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 向组织机构删除用户
|
||||
|
/// </summary>
|
||||
|
Task RemoveUserFromOrganizationUnitAsync(RemoveUserToOrganizationUnitInput input); |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 分页获取组织机构下用户
|
||||
|
/// </summary>
|
||||
|
Task<PagedResultDto<GetOrganizationUnitUserOutput>> GetUsersAsync(GetOrganizationUnitUserInput input); |
||||
|
|
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 分页获取组织机构下角色
|
||||
|
/// </summary>
|
||||
|
Task<PagedResultDto<GetOrganizationUnitRoleOutput>> GetRolesAsync(GetOrganizationUnitRoleInput input); |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 获取不在组织机构的用户
|
||||
|
/// </summary>
|
||||
|
Task<PagedResultDto<GetUnAddUserOutput>> GetUnAddUsersAsync(GetUnAddUserInput input); |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 获取不在组织机构的角色
|
||||
|
/// </summary>
|
||||
|
Task<PagedResultDto<GetUnAddRoleOutput>> GetUnAddRolessAsync(GetUnAddRoleInput input); |
||||
|
} |
||||
@ -0,0 +1,44 @@ |
|||||
|
using Lion.AbpPro.BasicManagement.Localization; |
||||
|
using Volo.Abp.Authorization.Permissions; |
||||
|
using Volo.Abp.Identity; |
||||
|
using Volo.Abp.Localization; |
||||
|
|
||||
|
namespace Lion.AbpPro.BasicManagement.Permissions; |
||||
|
|
||||
|
public class BasicManagementPermissionDefinitionProvider : PermissionDefinitionProvider |
||||
|
{ |
||||
|
public override void Define(IPermissionDefinitionContext context) |
||||
|
{ |
||||
|
var abpIdentityGroup = context.GetGroup(IdentityPermissions.GroupName); |
||||
|
var userManagement = abpIdentityGroup.GetPermissionOrNull(IdentityPermissions.Users.Default); |
||||
|
userManagement.AddChild(BasicManagementPermissions.SystemManagement.UserEnable, L("Permission:Enable")); |
||||
|
userManagement.AddChild(BasicManagementPermissions.SystemManagement.UserExport, L("Permission:Export")); |
||||
|
|
||||
|
var auditManagement = |
||||
|
abpIdentityGroup.AddPermission(BasicManagementPermissions.SystemManagement.AuditLog, L("Permission:AuditLogManagement")); |
||||
|
var esManagement = abpIdentityGroup.AddPermission(BasicManagementPermissions.SystemManagement.ES, L("Permission:ESManagement")); |
||||
|
var settingManagement = abpIdentityGroup.AddPermission(BasicManagementPermissions.SystemManagement.Setting, L("Permission:SettingManagement")); |
||||
|
var organizationUnitManagement = abpIdentityGroup.AddPermission(BasicManagementPermissions.SystemManagement.OrganizationUnit, L("Permission:OrganizationUnitManagement")); |
||||
|
organizationUnitManagement.AddChild |
||||
|
( |
||||
|
BasicManagementPermissions.SystemManagement.OrganizationUnitManagement.Create, |
||||
|
L("Permission:Create") |
||||
|
); |
||||
|
organizationUnitManagement.AddChild |
||||
|
( |
||||
|
BasicManagementPermissions.SystemManagement.OrganizationUnitManagement.Update, |
||||
|
L("Permission:Update") |
||||
|
); |
||||
|
organizationUnitManagement.AddChild |
||||
|
( |
||||
|
BasicManagementPermissions.SystemManagement.OrganizationUnitManagement.Delete, |
||||
|
L("Permission:Delete") |
||||
|
); |
||||
|
|
||||
|
} |
||||
|
|
||||
|
private static LocalizableString L(string name) |
||||
|
{ |
||||
|
return LocalizableString.Create<BasicManagementResource>(name); |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,32 @@ |
|||||
|
using Volo.Abp.Reflection; |
||||
|
|
||||
|
namespace Lion.AbpPro.BasicManagement.Permissions; |
||||
|
|
||||
|
public class BasicManagementPermissions |
||||
|
{ |
||||
|
/// <summary>
|
||||
|
/// 系统管理扩展权限
|
||||
|
/// </summary>
|
||||
|
public static class SystemManagement |
||||
|
{ |
||||
|
public const string Default = "AbpIdentity"; |
||||
|
public const string UserEnable = Default + ".Users.Enable"; |
||||
|
public const string UserExport = Default + ".Users.Export"; |
||||
|
public const string AuditLog = Default + ".AuditLog"; |
||||
|
public const string ES = Default + ".ES"; |
||||
|
public const string Setting = Default + ".Setting"; |
||||
|
public const string OrganizationUnit = Default + ".OrganizationUnitManagement"; |
||||
|
public static class OrganizationUnitManagement |
||||
|
{ |
||||
|
public const string Default = SystemManagement.Default + ".OrganizationUnitManagement"; |
||||
|
public const string Create = Default + ".Create"; |
||||
|
public const string Update = Default + ".Update"; |
||||
|
public const string Delete = Default + ".Delete"; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
public static string[] GetAll() |
||||
|
{ |
||||
|
return ReflectionHelper.GetPublicConstantsRecursively(typeof(BasicManagementPermissions)); |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,10 @@ |
|||||
|
namespace Lion.AbpPro.BasicManagement.Roles.Dtos |
||||
|
{ |
||||
|
public class GetPermissionInput |
||||
|
{ |
||||
|
[Required] |
||||
|
public string ProviderName { get; set; } |
||||
|
[Required] |
||||
|
public string ProviderKey { get; set; } |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,7 @@ |
|||||
|
namespace Lion.AbpPro.BasicManagement.Roles.Dtos |
||||
|
{ |
||||
|
public class PagingRoleListInput : PagingBase |
||||
|
{ |
||||
|
public string Filter { get; set; } |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,19 @@ |
|||||
|
namespace Lion.AbpPro.BasicManagement.Roles.Dtos |
||||
|
{ |
||||
|
public class PermissionOutput { |
||||
|
public List<string> Grants { get; set; } = new List<string>(); |
||||
|
|
||||
|
public List<string> AllGrants { get; set; } = new List<string>(); |
||||
|
|
||||
|
public List<PermissionTreeDto> Permissions { get; set; } = new List<PermissionTreeDto>(); |
||||
|
} |
||||
|
|
||||
|
public class PermissionTreeDto |
||||
|
{ |
||||
|
public string Title { get; set; } |
||||
|
|
||||
|
public string Key { get; set; } |
||||
|
|
||||
|
public List<PermissionTreeDto> Children { get; set; }=new List<PermissionTreeDto>(); |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,11 @@ |
|||||
|
using Volo.Abp.Identity; |
||||
|
|
||||
|
namespace Lion.AbpPro.BasicManagement.Roles.Dtos |
||||
|
{ |
||||
|
public class UpdateRoleInput |
||||
|
{ |
||||
|
public Guid RoleId { get; set; } |
||||
|
|
||||
|
public IdentityRoleUpdateDto RoleInfo { get; set; } |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,13 @@ |
|||||
|
namespace Lion.AbpPro.BasicManagement.Roles.Dtos |
||||
|
{ |
||||
|
public class UpdateRolePermissionsInput |
||||
|
{ |
||||
|
[Required] |
||||
|
public string ProviderName { get; set; } |
||||
|
|
||||
|
[Required] |
||||
|
public string ProviderKey { get; set; } |
||||
|
|
||||
|
public UpdatePermissionsDto UpdatePermissionsDto { get; set; } |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,18 @@ |
|||||
|
using Lion.AbpPro.BasicManagement.Roles.Dtos; |
||||
|
using Volo.Abp.Identity; |
||||
|
|
||||
|
namespace Lion.AbpPro.BasicManagement.Roles |
||||
|
{ |
||||
|
public interface IRoleAppService : IApplicationService |
||||
|
{ |
||||
|
Task<ListResultDto<IdentityRoleDto>> AllListAsync(); |
||||
|
|
||||
|
Task<PagedResultDto<IdentityRoleDto>> ListAsync(PagingRoleListInput input); |
||||
|
|
||||
|
Task<IdentityRoleDto> CreateAsync(IdentityRoleCreateDto input); |
||||
|
|
||||
|
Task<IdentityRoleDto> UpdateAsync(UpdateRoleInput input); |
||||
|
|
||||
|
Task DeleteAsync(IdInput input); |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,12 @@ |
|||||
|
using Lion.AbpPro.BasicManagement.Roles.Dtos; |
||||
|
|
||||
|
namespace Lion.AbpPro.BasicManagement.Roles |
||||
|
{ |
||||
|
public interface IRolePermissionAppService : IApplicationService |
||||
|
{ |
||||
|
|
||||
|
Task<PermissionOutput> GetPermissionAsync(GetPermissionInput input); |
||||
|
|
||||
|
Task UpdatePermissionAsync(UpdateRolePermissionsInput input); |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,25 @@ |
|||||
|
namespace Lion.AbpPro.BasicManagement.Roles; |
||||
|
|
||||
|
public class PermissionOptions |
||||
|
{ |
||||
|
/// <summary>
|
||||
|
/// 需要排除的权限
|
||||
|
/// </summary>
|
||||
|
public List<string> Excludes { get; } |
||||
|
|
||||
|
public PermissionOptions() |
||||
|
{ |
||||
|
Excludes = new List<string>(); |
||||
|
} |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 权限是否排除
|
||||
|
/// </summary>
|
||||
|
/// <param name="permission">权限名称</param>
|
||||
|
/// <returns>bool</returns>
|
||||
|
public bool IsExclude(string permission) |
||||
|
{ |
||||
|
if (permission.IsNullOrWhiteSpace()) return false; |
||||
|
return Excludes.Any(e => e.ToLower() == permission.ToLower()); |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,59 @@ |
|||||
|
namespace Lion.AbpPro.BasicManagement.Settings.Dtos |
||||
|
{ |
||||
|
public class SettingOutput |
||||
|
{ |
||||
|
/// <summary>
|
||||
|
/// 分组
|
||||
|
/// </summary>
|
||||
|
public string Group { get; set; } |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 分组显示名称
|
||||
|
/// </summary>
|
||||
|
public string GroupDisplayName { get; set; } |
||||
|
|
||||
|
public List<SettingItemOutput> SettingItemOutput { get; set; } |
||||
|
|
||||
|
public SettingOutput() |
||||
|
{ |
||||
|
SettingItemOutput = new List<SettingItemOutput>(); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
public class SettingItemOutput |
||||
|
{ |
||||
|
public SettingItemOutput(string name, string displayName, string value, string type,string description) |
||||
|
{ |
||||
|
Name = name; |
||||
|
DisplayName = displayName; |
||||
|
Value = value; |
||||
|
Type = type ?? "Text"; |
||||
|
Description = description; |
||||
|
} |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 名称
|
||||
|
/// </summary>
|
||||
|
public string Name { get; set; } |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 显示名称
|
||||
|
/// </summary>
|
||||
|
public string DisplayName { get; set; } |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 描述
|
||||
|
/// </summary>
|
||||
|
public string Description { get; set; } |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 值
|
||||
|
/// </summary>
|
||||
|
public string Value { get; set; } |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 前端控件类型
|
||||
|
/// </summary>
|
||||
|
public string Type { get; set; } |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,12 @@ |
|||||
|
namespace Lion.AbpPro.BasicManagement.Settings.Dtos |
||||
|
{ |
||||
|
public class UpdateSettingInput |
||||
|
{ |
||||
|
public Dictionary<string, string> Values { get; set; } |
||||
|
|
||||
|
public UpdateSettingInput() |
||||
|
{ |
||||
|
Values = new Dictionary<string, string>(); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,19 @@ |
|||||
|
using Lion.AbpPro.BasicManagement.Settings.Dtos; |
||||
|
|
||||
|
namespace Lion.AbpPro.BasicManagement.Settings |
||||
|
{ |
||||
|
public interface ISettingAppService : IApplicationService |
||||
|
{ |
||||
|
/// <summary>
|
||||
|
/// 获取setting信息
|
||||
|
/// </summary>
|
||||
|
/// <returns></returns>
|
||||
|
Task<List<SettingOutput>> GetAsync(); |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 更新setting
|
||||
|
/// </summary>
|
||||
|
/// <returns></returns>
|
||||
|
Task UpdateAsync(UpdateSettingInput input); |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,7 @@ |
|||||
|
namespace Lion.AbpPro.BasicManagement.Tenants.Dtos |
||||
|
{ |
||||
|
public class FindTenantByNameInput |
||||
|
{ |
||||
|
public string Name { get; set; } |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,7 @@ |
|||||
|
namespace Lion.AbpPro.BasicManagement.Tenants.Dtos |
||||
|
{ |
||||
|
public class PagingTenantInput : PagingBase |
||||
|
{ |
||||
|
public string Filter { get; set; } |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,8 @@ |
|||||
|
namespace Lion.AbpPro.BasicManagement.Tenants.Dtos |
||||
|
{ |
||||
|
public class UpdateConnectionStringInput |
||||
|
{ |
||||
|
public Guid Id { get; set; } |
||||
|
[Required(ErrorMessage = "连接字符串不能为空")] public string ConnectionString { get; set; } |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,9 @@ |
|||||
|
namespace Lion.AbpPro.BasicManagement.Tenants.Dtos |
||||
|
{ |
||||
|
public class UpdateTenantInput |
||||
|
{ |
||||
|
public Guid Id { get; set; } |
||||
|
|
||||
|
[Required(ErrorMessage = "租户名称不能为空")] public string Name { get; set; } |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,21 @@ |
|||||
|
namespace Lion.AbpPro.BasicManagement.Tenants |
||||
|
{ |
||||
|
public interface IVoloTenantAppService : IApplicationService |
||||
|
{ |
||||
|
Task<FindTenantResultDto> FindTenantByNameAsync(FindTenantByNameInput input); |
||||
|
|
||||
|
Task<PagedResultDto<TenantDto>> ListAsync(PagingTenantInput input); |
||||
|
|
||||
|
Task<TenantDto> CreateAsync(TenantCreateDto input); |
||||
|
|
||||
|
Task<TenantDto> UpdateAsync(UpdateTenantInput input); |
||||
|
|
||||
|
Task DeleteAsync(IdInput input); |
||||
|
|
||||
|
Task<string> GetDefaultConnectionStringAsync(IdInput input); |
||||
|
|
||||
|
Task UpdateDefaultConnectionStringAsync(UpdateConnectionStringInput input); |
||||
|
|
||||
|
Task DeleteDefaultConnectionStringAsync(IdInput input); |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,32 @@ |
|||||
|
using Magicodes.ExporterAndImporter.Core; |
||||
|
|
||||
|
namespace Lion.AbpPro.BasicManagement.Users.Dtos |
||||
|
{ |
||||
|
public class ExportIdentityUserOutput |
||||
|
{ |
||||
|
[ExporterHeader(DisplayName = "用户名")] |
||||
|
public string UserName { get; set; } |
||||
|
|
||||
|
[ExporterHeader(DisplayName = "真实名称")] |
||||
|
public string Name { get; set; } |
||||
|
|
||||
|
[ExporterHeader(DisplayName = "邮箱")] |
||||
|
public string Email { get; set; } |
||||
|
|
||||
|
[ExporterHeader(DisplayName = "手机号码")] |
||||
|
public string PhoneNumber { get; set; } |
||||
|
|
||||
|
[ExporterHeader(IsIgnore = true)] |
||||
|
public bool IsActive { get; set; } |
||||
|
|
||||
|
|
||||
|
[ExporterHeader(DisplayName = "状态")] |
||||
|
public string Status => IsActive ? "启用" : "禁用"; |
||||
|
|
||||
|
[ExporterHeader(IsIgnore = true)] |
||||
|
public DateTime CreationTime { get; set; } |
||||
|
|
||||
|
[ExporterHeader(DisplayName = "创建时间")] |
||||
|
public string CreationTimeFormat => CreationTime.ToString("yyyy-MM-dd hh:mm:ss"); |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,24 @@ |
|||||
|
using Newtonsoft.Json; |
||||
|
|
||||
|
namespace Lion.AbpPro.BasicManagement.Users.Dtos; |
||||
|
|
||||
|
public class GithubAccessTokenResponse |
||||
|
{ |
||||
|
/// <summary>
|
||||
|
/// access_token
|
||||
|
/// </summary>
|
||||
|
[JsonProperty("access_token")] |
||||
|
public string Access_token { get; set; } |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// scope
|
||||
|
/// </summary>
|
||||
|
[JsonProperty("scope")] |
||||
|
public string Scope { get; set; } |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// token_type
|
||||
|
/// </summary>
|
||||
|
[JsonProperty("token_type")] |
||||
|
public string TokenType { get; set; } |
||||
|
} |
||||
@ -0,0 +1,11 @@ |
|||||
|
namespace Lion.AbpPro.BasicManagement.Users.Dtos |
||||
|
{ |
||||
|
public class LockUserInput |
||||
|
{ |
||||
|
[Required] |
||||
|
public Guid UserId { get; set; } |
||||
|
|
||||
|
[Required] |
||||
|
public bool Locked { get; set; } |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,99 @@ |
|||||
|
namespace Lion.AbpPro.BasicManagement.Users.Dtos; |
||||
|
|
||||
|
public class LoginGithubResponse |
||||
|
{ |
||||
|
public string login { get; set; } |
||||
|
|
||||
|
|
||||
|
public int id { get; set; } |
||||
|
|
||||
|
|
||||
|
public string node_id { get; set; } |
||||
|
|
||||
|
|
||||
|
public string avatar_url { get; set; } |
||||
|
|
||||
|
|
||||
|
public string gravatar_id { get; set; } |
||||
|
|
||||
|
|
||||
|
public string url { get; set; } |
||||
|
|
||||
|
|
||||
|
public string html_url { get; set; } |
||||
|
|
||||
|
|
||||
|
public string followers_url { get; set; } |
||||
|
|
||||
|
|
||||
|
public string following_url { get; set; } |
||||
|
|
||||
|
|
||||
|
public string gists_url { get; set; } |
||||
|
|
||||
|
|
||||
|
public string starred_url { get; set; } |
||||
|
|
||||
|
|
||||
|
public string subscriptions_url { get; set; } |
||||
|
|
||||
|
|
||||
|
public string organizations_url { get; set; } |
||||
|
|
||||
|
|
||||
|
public string repos_url { get; set; } |
||||
|
|
||||
|
|
||||
|
public string events_url { get; set; } |
||||
|
|
||||
|
|
||||
|
public string received_events_url { get; set; } |
||||
|
|
||||
|
|
||||
|
public string type { get; set; } |
||||
|
|
||||
|
|
||||
|
public string site_admin { get; set; } |
||||
|
|
||||
|
|
||||
|
public string name { get; set; } |
||||
|
|
||||
|
|
||||
|
public string company { get; set; } |
||||
|
|
||||
|
|
||||
|
public string blog { get; set; } |
||||
|
|
||||
|
|
||||
|
public string location { get; set; } |
||||
|
|
||||
|
|
||||
|
public string email { get; set; } |
||||
|
|
||||
|
|
||||
|
public string hireable { get; set; } |
||||
|
|
||||
|
|
||||
|
public string bio { get; set; } |
||||
|
|
||||
|
|
||||
|
public string twitter_username { get; set; } |
||||
|
|
||||
|
|
||||
|
public int public_repos { get; set; } |
||||
|
|
||||
|
|
||||
|
public int public_gists { get; set; } |
||||
|
|
||||
|
|
||||
|
public int followers { get; set; } |
||||
|
|
||||
|
|
||||
|
public int following { get; set; } |
||||
|
|
||||
|
|
||||
|
public string created_at { get; set; } |
||||
|
|
||||
|
|
||||
|
public string updated_at { get; set; } |
||||
|
} |
||||
@ -0,0 +1,35 @@ |
|||||
|
using Volo.Abp.Auditing; |
||||
|
|
||||
|
namespace Lion.AbpPro.BasicManagement.Users.Dtos |
||||
|
{ |
||||
|
/// <summary>
|
||||
|
/// 登录
|
||||
|
/// </summary>
|
||||
|
public class LoginInput : IValidatableObject |
||||
|
{ |
||||
|
/// <summary>
|
||||
|
/// 用户名或者邮箱
|
||||
|
/// </summary>
|
||||
|
public string Name { get; set; } |
||||
|
|
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 密码
|
||||
|
/// </summary>
|
||||
|
[DisableAuditing] |
||||
|
public string Password { get; set; } |
||||
|
|
||||
|
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext) |
||||
|
{ |
||||
|
if (Name.IsNullOrWhiteSpace()) |
||||
|
{ |
||||
|
yield return new ValidationResult("Email can not be null", new[] { "Email" }); |
||||
|
} |
||||
|
|
||||
|
if (Password.IsNullOrWhiteSpace()) |
||||
|
{ |
||||
|
yield return new ValidationResult("Password can not be null", new[] { "Password" }); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,15 @@ |
|||||
|
namespace Lion.AbpPro.BasicManagement.Users.Dtos |
||||
|
{ |
||||
|
public class LoginOutput |
||||
|
{ |
||||
|
public Guid Id { get; set; } |
||||
|
|
||||
|
public string Name { get; set; } |
||||
|
|
||||
|
public string UserName { get; set; } |
||||
|
|
||||
|
public string Token { get; set; } |
||||
|
|
||||
|
public List<string> Roles { get; set; } = new List<string>(); |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,21 @@ |
|||||
|
namespace Lion.AbpPro.BasicManagement.Users.Dtos |
||||
|
{ |
||||
|
public class LoginStsResponse |
||||
|
{ |
||||
|
public string name { get; set; } |
||||
|
|
||||
|
public string preferred_username { get; set; } |
||||
|
|
||||
|
public string family_name { get; set; } |
||||
|
|
||||
|
public string email { get; set; } |
||||
|
|
||||
|
public string given_name { get; set; } |
||||
|
|
||||
|
public string avatar { get; set; } |
||||
|
|
||||
|
public string sub { get; set; } |
||||
|
|
||||
|
public Guid? tenantId { get; set; } |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,10 @@ |
|||||
|
namespace Lion.AbpPro.BasicManagement.Users.Dtos |
||||
|
{ |
||||
|
public class PagingUserListInput : PagingBase |
||||
|
{ |
||||
|
/// <summary>
|
||||
|
/// 关键字
|
||||
|
/// </summary>
|
||||
|
public string Filter { get; set; } |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,11 @@ |
|||||
|
using Volo.Abp.Identity; |
||||
|
|
||||
|
namespace Lion.AbpPro.BasicManagement.Users.Dtos |
||||
|
{ |
||||
|
public class UpdateUserInput |
||||
|
{ |
||||
|
public Guid UserId { get; set; } |
||||
|
|
||||
|
public IdentityUserUpdateDto UserInfo { get; set; } |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,12 @@ |
|||||
|
using Lion.AbpPro.BasicManagement.Users.Dtos; |
||||
|
|
||||
|
namespace Lion.AbpPro.BasicManagement.Users |
||||
|
{ |
||||
|
public interface IAccountAppService: IApplicationService |
||||
|
{ |
||||
|
/// <summary>
|
||||
|
/// 用户名密码登录
|
||||
|
/// </summary>
|
||||
|
Task<LoginOutput> LoginAsync(LoginInput input); |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,51 @@ |
|||||
|
using Lion.AbpPro.BasicManagement.Users.Dtos; |
||||
|
using Microsoft.AspNetCore.Mvc; |
||||
|
using Volo.Abp.Account; |
||||
|
using Volo.Abp.Identity; |
||||
|
|
||||
|
namespace Lion.AbpPro.BasicManagement.Users |
||||
|
{ |
||||
|
public interface IUserAppService : IApplicationService |
||||
|
{ |
||||
|
/// <summary>
|
||||
|
/// 分页查询用户
|
||||
|
/// </summary>
|
||||
|
Task<PagedResultDto<IdentityUserDto>> ListAsync(PagingUserListInput input); |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 用户导出列表
|
||||
|
/// </summary>
|
||||
|
Task<ActionResult> ExportAsync(PagingUserListInput input); |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 新增用户
|
||||
|
/// </summary>
|
||||
|
Task<IdentityUserDto> CreateAsync(IdentityUserCreateDto input); |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 更新用户
|
||||
|
/// </summary>
|
||||
|
Task<IdentityUserDto> UpdateAsync(UpdateUserInput input); |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 删除用户
|
||||
|
/// </summary>
|
||||
|
Task DeleteAsync(IdInput input); |
||||
|
|
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 获取用户角色信息
|
||||
|
/// </summary>
|
||||
|
Task<ListResultDto<IdentityRoleDto>> GetRoleByUserId(IdInput input); |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 修改密码
|
||||
|
/// </summary>
|
||||
|
Task<bool> ChangePasswordAsync(ChangePasswordInput input); |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 锁定用户
|
||||
|
/// </summary>
|
||||
|
Task LockAsync(LockUserInput input); |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,339 @@ |
|||||
|
namespace Lion.AbpPro.BasicManagement.ApplicationConfigurations; |
||||
|
|
||||
|
[Dependency(ReplaceServices = true)] |
||||
|
public class LionAbpApplicationConfigurationAppService : ApplicationService, IAbpApplicationConfigurationAppService |
||||
|
{ |
||||
|
private readonly AbpLocalizationOptions _localizationOptions; |
||||
|
private readonly AbpMultiTenancyOptions _multiTenancyOptions; |
||||
|
private readonly IServiceProvider _serviceProvider; |
||||
|
private readonly IAbpAuthorizationPolicyProvider _abpAuthorizationPolicyProvider; |
||||
|
private readonly IPermissionDefinitionManager _permissionDefinitionManager; |
||||
|
private readonly DefaultAuthorizationPolicyProvider _defaultAuthorizationPolicyProvider; |
||||
|
private readonly IPermissionChecker _permissionChecker; |
||||
|
private readonly IAuthorizationService _authorizationService; |
||||
|
private readonly ICurrentUser _currentUser; |
||||
|
private readonly ISettingProvider _settingProvider; |
||||
|
private readonly ISettingDefinitionManager _settingDefinitionManager; |
||||
|
private readonly IFeatureDefinitionManager _featureDefinitionManager; |
||||
|
private readonly ILanguageProvider _languageProvider; |
||||
|
private readonly ITimezoneProvider _timezoneProvider; |
||||
|
private readonly AbpClockOptions _abpClockOptions; |
||||
|
private readonly ICachedObjectExtensionsDtoService _cachedObjectExtensionsDtoService; |
||||
|
|
||||
|
public LionAbpApplicationConfigurationAppService( |
||||
|
IOptions<AbpLocalizationOptions> localizationOptions, |
||||
|
IOptions<AbpMultiTenancyOptions> multiTenancyOptions, |
||||
|
IServiceProvider serviceProvider, |
||||
|
IAbpAuthorizationPolicyProvider abpAuthorizationPolicyProvider, |
||||
|
IPermissionDefinitionManager permissionDefinitionManager, |
||||
|
DefaultAuthorizationPolicyProvider defaultAuthorizationPolicyProvider, |
||||
|
IPermissionChecker permissionChecker, |
||||
|
IAuthorizationService authorizationService, |
||||
|
ICurrentUser currentUser, |
||||
|
ISettingProvider settingProvider, |
||||
|
ISettingDefinitionManager settingDefinitionManager, |
||||
|
IFeatureDefinitionManager featureDefinitionManager, |
||||
|
ILanguageProvider languageProvider, |
||||
|
ITimezoneProvider timezoneProvider, |
||||
|
IOptions<AbpClockOptions> abpClockOptions, |
||||
|
ICachedObjectExtensionsDtoService cachedObjectExtensionsDtoService) |
||||
|
{ |
||||
|
_serviceProvider = serviceProvider; |
||||
|
_abpAuthorizationPolicyProvider = abpAuthorizationPolicyProvider; |
||||
|
_permissionDefinitionManager = permissionDefinitionManager; |
||||
|
_defaultAuthorizationPolicyProvider = defaultAuthorizationPolicyProvider; |
||||
|
_permissionChecker = permissionChecker; |
||||
|
_authorizationService = authorizationService; |
||||
|
_currentUser = currentUser; |
||||
|
_settingProvider = settingProvider; |
||||
|
_settingDefinitionManager = settingDefinitionManager; |
||||
|
_featureDefinitionManager = featureDefinitionManager; |
||||
|
_languageProvider = languageProvider; |
||||
|
_timezoneProvider = timezoneProvider; |
||||
|
_abpClockOptions = abpClockOptions.Value; |
||||
|
_cachedObjectExtensionsDtoService = cachedObjectExtensionsDtoService; |
||||
|
_localizationOptions = localizationOptions.Value; |
||||
|
_multiTenancyOptions = multiTenancyOptions.Value; |
||||
|
} |
||||
|
|
||||
|
public virtual async Task<ApplicationConfigurationDto> GetAsync() |
||||
|
{ |
||||
|
//TODO: Optimize & cache..?
|
||||
|
|
||||
|
Logger.LogDebug("Executing AbpApplicationConfigurationAppService.GetAsync()..."); |
||||
|
|
||||
|
var result = new ApplicationConfigurationDto |
||||
|
{ |
||||
|
Auth = await GetAuthConfigAsync(), |
||||
|
Features = await GetFeaturesConfigAsync(), |
||||
|
Localization = await GetLocalizationConfigAsync(), |
||||
|
CurrentUser = GetCurrentUser(), |
||||
|
Setting = await GetSettingConfigAsync(), |
||||
|
MultiTenancy = GetMultiTenancy(), |
||||
|
CurrentTenant = GetCurrentTenant(), |
||||
|
Timing = await GetTimingConfigAsync(), |
||||
|
Clock = GetClockConfig(), |
||||
|
ObjectExtensions = _cachedObjectExtensionsDtoService.Get() |
||||
|
}; |
||||
|
|
||||
|
Logger.LogDebug("Executed AbpApplicationConfigurationAppService.GetAsync()."); |
||||
|
|
||||
|
return result; |
||||
|
} |
||||
|
|
||||
|
protected virtual CurrentTenantDto GetCurrentTenant() |
||||
|
{ |
||||
|
return new CurrentTenantDto() |
||||
|
{ |
||||
|
Id = CurrentTenant.Id, |
||||
|
Name = CurrentTenant.Name, |
||||
|
IsAvailable = CurrentTenant.IsAvailable |
||||
|
}; |
||||
|
} |
||||
|
|
||||
|
protected virtual MultiTenancyInfoDto GetMultiTenancy() |
||||
|
{ |
||||
|
return new MultiTenancyInfoDto |
||||
|
{ |
||||
|
IsEnabled = _multiTenancyOptions.IsEnabled |
||||
|
}; |
||||
|
} |
||||
|
|
||||
|
protected virtual CurrentUserDto GetCurrentUser() |
||||
|
{ |
||||
|
return new CurrentUserDto |
||||
|
{ |
||||
|
IsAuthenticated = _currentUser.IsAuthenticated, |
||||
|
Id = _currentUser.Id, |
||||
|
TenantId = _currentUser.TenantId, |
||||
|
ImpersonatorUserId = _currentUser.FindImpersonatorUserId(), |
||||
|
ImpersonatorTenantId = _currentUser.FindImpersonatorTenantId(), |
||||
|
UserName = _currentUser.UserName, |
||||
|
SurName = _currentUser.SurName, |
||||
|
Name = _currentUser.Name, |
||||
|
Email = _currentUser.Email, |
||||
|
EmailVerified = _currentUser.EmailVerified, |
||||
|
PhoneNumber = _currentUser.PhoneNumber, |
||||
|
PhoneNumberVerified = _currentUser.PhoneNumberVerified, |
||||
|
Roles = _currentUser.Roles |
||||
|
}; |
||||
|
} |
||||
|
|
||||
|
protected virtual async Task<ApplicationAuthConfigurationDto> GetAuthConfigAsync() |
||||
|
{ |
||||
|
var authConfig = new ApplicationAuthConfigurationDto(); |
||||
|
|
||||
|
var policyNames = await _abpAuthorizationPolicyProvider.GetPoliciesNamesAsync(); |
||||
|
var abpPolicyNames = new List<string>(); |
||||
|
var otherPolicyNames = new List<string>(); |
||||
|
|
||||
|
foreach (var policyName in policyNames) |
||||
|
{ |
||||
|
if (await _defaultAuthorizationPolicyProvider.GetPolicyAsync(policyName) == null && _permissionDefinitionManager.GetOrNull(policyName) != null) |
||||
|
{ |
||||
|
abpPolicyNames.Add(policyName); |
||||
|
} |
||||
|
else |
||||
|
{ |
||||
|
otherPolicyNames.Add(policyName); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
foreach (var policyName in otherPolicyNames) |
||||
|
{ |
||||
|
authConfig.Policies[policyName] = true; |
||||
|
|
||||
|
if (await _authorizationService.IsGrantedAsync(policyName)) |
||||
|
{ |
||||
|
authConfig.GrantedPolicies[policyName] = true; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
var result = await _permissionChecker.IsGrantedAsync(abpPolicyNames.ToArray()); |
||||
|
foreach (var (key, value) in result.Result) |
||||
|
{ |
||||
|
authConfig.Policies[key] = true; |
||||
|
if (value == PermissionGrantResult.Granted) |
||||
|
{ |
||||
|
authConfig.GrantedPolicies[key] = true; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
var policies = BuildGrantedPolicies(authConfig.GrantedPolicies.Select(e => e.Key).ToList()); |
||||
|
foreach (var item in policies) |
||||
|
{ |
||||
|
if (authConfig.GrantedPolicies.Any(e => e.Key == item)) continue; |
||||
|
authConfig.GrantedPolicies.Add(item, true); |
||||
|
} |
||||
|
|
||||
|
return authConfig; |
||||
|
} |
||||
|
|
||||
|
private List<string> BuildGrantedPolicies(List<string> grantedPolicies) |
||||
|
{ |
||||
|
var result = new List<string>(); |
||||
|
foreach (var policy in grantedPolicies) |
||||
|
{ |
||||
|
result.AddRange(GetPolicy(policy)); |
||||
|
} |
||||
|
|
||||
|
return result.Distinct().ToList(); |
||||
|
} |
||||
|
|
||||
|
private List<string> GetPolicy(string policy) |
||||
|
{ |
||||
|
var result = new List<string>(); |
||||
|
var split = policy.Split('.', StringSplitOptions.RemoveEmptyEntries); |
||||
|
if (split.Length <= 0) return result; |
||||
|
var currentPolicy = string.Empty; |
||||
|
for (int i = 0; i < split.Length - 1; i++) |
||||
|
{ |
||||
|
if (i == 0) |
||||
|
{ |
||||
|
currentPolicy += split[i]; |
||||
|
} |
||||
|
else |
||||
|
{ |
||||
|
currentPolicy += "." + split[i]; |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
if (!currentPolicy.IsNullOrWhiteSpace()) |
||||
|
{ |
||||
|
result.Add(currentPolicy); |
||||
|
result.AddRange(GetPolicy(currentPolicy)); |
||||
|
} |
||||
|
|
||||
|
return result; |
||||
|
} |
||||
|
|
||||
|
|
||||
|
protected virtual async Task<ApplicationLocalizationConfigurationDto> GetLocalizationConfigAsync() |
||||
|
{ |
||||
|
var localizationConfig = new ApplicationLocalizationConfigurationDto(); |
||||
|
|
||||
|
localizationConfig.Languages.AddRange(await _languageProvider.GetLanguagesAsync()); |
||||
|
|
||||
|
foreach (var resource in _localizationOptions.Resources.Values) |
||||
|
{ |
||||
|
var dictionary = new Dictionary<string, string>(); |
||||
|
|
||||
|
var localizer = _serviceProvider.GetRequiredService( |
||||
|
typeof(IStringLocalizer<>).MakeGenericType(resource.ResourceType) |
||||
|
) as IStringLocalizer; |
||||
|
|
||||
|
foreach (var localizedString in localizer.GetAllStrings()) |
||||
|
{ |
||||
|
dictionary[localizedString.Name] = localizedString.Value; |
||||
|
} |
||||
|
|
||||
|
localizationConfig.Values[resource.ResourceName] = dictionary; |
||||
|
} |
||||
|
|
||||
|
localizationConfig.CurrentCulture = GetCurrentCultureInfo(); |
||||
|
|
||||
|
if (_localizationOptions.DefaultResourceType != null) |
||||
|
{ |
||||
|
localizationConfig.DefaultResourceName = LocalizationResourceNameAttribute.GetName( |
||||
|
_localizationOptions.DefaultResourceType |
||||
|
); |
||||
|
} |
||||
|
|
||||
|
localizationConfig.LanguagesMap = _localizationOptions.LanguagesMap; |
||||
|
localizationConfig.LanguageFilesMap = _localizationOptions.LanguageFilesMap; |
||||
|
|
||||
|
return localizationConfig; |
||||
|
} |
||||
|
|
||||
|
private static CurrentCultureDto GetCurrentCultureInfo() |
||||
|
{ |
||||
|
return new CurrentCultureDto |
||||
|
{ |
||||
|
Name = CultureInfo.CurrentUICulture.Name, |
||||
|
DisplayName = CultureInfo.CurrentUICulture.DisplayName, |
||||
|
EnglishName = CultureInfo.CurrentUICulture.EnglishName, |
||||
|
NativeName = CultureInfo.CurrentUICulture.NativeName, |
||||
|
IsRightToLeft = CultureInfo.CurrentUICulture.TextInfo.IsRightToLeft, |
||||
|
CultureName = CultureInfo.CurrentUICulture.TextInfo.CultureName, |
||||
|
TwoLetterIsoLanguageName = CultureInfo.CurrentUICulture.TwoLetterISOLanguageName, |
||||
|
ThreeLetterIsoLanguageName = CultureInfo.CurrentUICulture.ThreeLetterISOLanguageName, |
||||
|
DateTimeFormat = new DateTimeFormatDto |
||||
|
{ |
||||
|
CalendarAlgorithmType = |
||||
|
CultureInfo.CurrentUICulture.DateTimeFormat.Calendar.AlgorithmType.ToString(), |
||||
|
DateTimeFormatLong = CultureInfo.CurrentUICulture.DateTimeFormat.LongDatePattern, |
||||
|
ShortDatePattern = CultureInfo.CurrentUICulture.DateTimeFormat.ShortDatePattern, |
||||
|
FullDateTimePattern = CultureInfo.CurrentUICulture.DateTimeFormat.FullDateTimePattern, |
||||
|
DateSeparator = CultureInfo.CurrentUICulture.DateTimeFormat.DateSeparator, |
||||
|
ShortTimePattern = CultureInfo.CurrentUICulture.DateTimeFormat.ShortTimePattern, |
||||
|
LongTimePattern = CultureInfo.CurrentUICulture.DateTimeFormat.LongTimePattern, |
||||
|
} |
||||
|
}; |
||||
|
} |
||||
|
|
||||
|
private async Task<ApplicationSettingConfigurationDto> GetSettingConfigAsync() |
||||
|
{ |
||||
|
var result = new ApplicationSettingConfigurationDto |
||||
|
{ |
||||
|
Values = new Dictionary<string, string>() |
||||
|
}; |
||||
|
|
||||
|
var settingDefinitions = _settingDefinitionManager.GetAll().Where(x => x.IsVisibleToClients); |
||||
|
|
||||
|
var settingValues = await _settingProvider.GetAllAsync(settingDefinitions.Select(x => x.Name).ToArray()); |
||||
|
|
||||
|
foreach (var settingValue in settingValues) |
||||
|
{ |
||||
|
result.Values[settingValue.Name] = settingValue.Value; |
||||
|
} |
||||
|
|
||||
|
return result; |
||||
|
} |
||||
|
|
||||
|
protected virtual async Task<ApplicationFeatureConfigurationDto> GetFeaturesConfigAsync() |
||||
|
{ |
||||
|
var result = new ApplicationFeatureConfigurationDto(); |
||||
|
|
||||
|
foreach (var featureDefinition in _featureDefinitionManager.GetAll()) |
||||
|
{ |
||||
|
if (!featureDefinition.IsVisibleToClients) |
||||
|
{ |
||||
|
continue; |
||||
|
} |
||||
|
|
||||
|
result.Values[featureDefinition.Name] = await FeatureChecker.GetOrNullAsync(featureDefinition.Name); |
||||
|
} |
||||
|
|
||||
|
return result; |
||||
|
} |
||||
|
|
||||
|
protected virtual async Task<TimingDto> GetTimingConfigAsync() |
||||
|
{ |
||||
|
var windowsTimeZoneId = await _settingProvider.GetOrNullAsync(TimingSettingNames.TimeZone); |
||||
|
|
||||
|
return new TimingDto |
||||
|
{ |
||||
|
TimeZone = new Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.TimeZone |
||||
|
{ |
||||
|
Windows = new WindowsTimeZone |
||||
|
{ |
||||
|
TimeZoneId = windowsTimeZoneId |
||||
|
}, |
||||
|
Iana = new IanaTimeZone |
||||
|
{ |
||||
|
TimeZoneName = windowsTimeZoneId.IsNullOrWhiteSpace() |
||||
|
? null |
||||
|
: _timezoneProvider.WindowsToIana(windowsTimeZoneId) |
||||
|
} |
||||
|
} |
||||
|
}; |
||||
|
} |
||||
|
|
||||
|
protected virtual ClockDto GetClockConfig() |
||||
|
{ |
||||
|
return new ClockDto |
||||
|
{ |
||||
|
Kind = Enum.GetName(typeof(DateTimeKind), _abpClockOptions.Kind) |
||||
|
}; |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,54 @@ |
|||||
|
namespace Lion.AbpPro.BasicManagement.AuditLogs |
||||
|
{ |
||||
|
[Authorize] |
||||
|
public class AuditLogAppService : BasicManagementAppService, IAuditLogAppService |
||||
|
{ |
||||
|
private readonly IAuditLogRepository _auditLogRepository; |
||||
|
|
||||
|
public AuditLogAppService(IAuditLogRepository auditLogRepository) |
||||
|
{ |
||||
|
_auditLogRepository = auditLogRepository; |
||||
|
} |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 分页查询审计日志
|
||||
|
/// </summary>
|
||||
|
[Authorize(Policy = BasicManagementPermissions.SystemManagement.AuditLog)] |
||||
|
public async Task<PagedResultDto<GetAuditLogPageListOutput>> GetListAsync(PagingAuditLogListInput input) |
||||
|
{ |
||||
|
var list = await _auditLogRepository.GetListAsync( |
||||
|
input.Sorting, |
||||
|
input.PageSize, |
||||
|
input.SkipCount, |
||||
|
input.StartTime?.Date, |
||||
|
input.EndTime?.Date, |
||||
|
input.HttpMethod, |
||||
|
input.Url, |
||||
|
null, |
||||
|
input.UserName, |
||||
|
input.ApplicationName, |
||||
|
input.CorrelationId, |
||||
|
null, |
||||
|
input.MaxExecutionDuration, |
||||
|
input.MinExecutionDuration, |
||||
|
input.HasException, |
||||
|
input.HttpStatusCode); |
||||
|
var totalCount = await _auditLogRepository.GetCountAsync( |
||||
|
input.StartTime?.Date, |
||||
|
input.EndTime?.Date, |
||||
|
input.HttpMethod, |
||||
|
input.Url, |
||||
|
null, |
||||
|
input.UserName, |
||||
|
input.ApplicationName, |
||||
|
null, |
||||
|
input.CorrelationId, |
||||
|
input.MaxExecutionDuration, |
||||
|
input.MinExecutionDuration, |
||||
|
input.HasException, |
||||
|
input.HttpStatusCode); |
||||
|
return new PagedResultDto<GetAuditLogPageListOutput>(totalCount, |
||||
|
ObjectMapper.Map<List<AuditLog>, List<GetAuditLogPageListOutput>>(list)); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,12 @@ |
|||||
|
using Lion.AbpPro.BasicManagement.Localization; |
||||
|
|
||||
|
namespace Lion.AbpPro.BasicManagement; |
||||
|
|
||||
|
public abstract class BasicManagementAppService : ApplicationService |
||||
|
{ |
||||
|
protected BasicManagementAppService() |
||||
|
{ |
||||
|
LocalizationResource = typeof(BasicManagementResource); |
||||
|
ObjectMapperContext = typeof(BasicManagementApplicationModule); |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,23 @@ |
|||||
|
using AutoMapper; |
||||
|
using Lion.AbpPro.BasicManagement.AuditLogs; |
||||
|
using Lion.AbpPro.BasicManagement.Users.Dtos; |
||||
|
|
||||
|
namespace Lion.AbpPro.BasicManagement; |
||||
|
|
||||
|
public class BasicManagementApplicationAutoMapperProfile : Profile |
||||
|
{ |
||||
|
public BasicManagementApplicationAutoMapperProfile() |
||||
|
{ |
||||
|
CreateMap<AuditLog, GetAuditLogPageListOutput>(); |
||||
|
CreateMap<Volo.Abp.Identity.IdentityUser, LoginOutput>() |
||||
|
.ForMember(dest => dest.Token, opt => opt.Ignore()); |
||||
|
CreateMap<IdentityUser, ExportIdentityUserOutput>() |
||||
|
.ForMember(e => e.CreationTimeFormat, opt => opt.Ignore()) |
||||
|
.ForMember(e => e.Status, opt => opt.Ignore()); |
||||
|
CreateMap<OrganizationUnit, OrganizationUnitDto>(); |
||||
|
CreateMap<IdentityUser, GetOrganizationUnitUserOutput>(); |
||||
|
CreateMap<IdentityUser, GetUnAddUserOutput>(); |
||||
|
CreateMap<IdentityRole, GetOrganizationUnitRoleOutput>(); |
||||
|
CreateMap<IdentityRole, GetUnAddRoleOutput>(); |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,65 @@ |
|||||
|
using Lion.AbpPro.BasicManagement.ConfigurationOptions; |
||||
|
using Lion.AbpPro.BasicManagement.Roles; |
||||
|
using Magicodes.ExporterAndImporter.Core; |
||||
|
using Magicodes.ExporterAndImporter.Excel; |
||||
|
using Volo.Abp.Account; |
||||
|
using Volo.Abp.AutoMapper; |
||||
|
using Volo.Abp.Modularity; |
||||
|
using Volo.Abp.Application; |
||||
|
using Volo.Abp.FeatureManagement; |
||||
|
using Volo.Abp.PermissionManagement; |
||||
|
using Volo.Abp.SettingManagement; |
||||
|
|
||||
|
namespace Lion.AbpPro.BasicManagement; |
||||
|
|
||||
|
[DependsOn( |
||||
|
typeof(BasicManagementDomainModule), |
||||
|
typeof(BasicManagementApplicationContractsModule), |
||||
|
typeof(AbpDddApplicationModule), |
||||
|
typeof(AbpAutoMapperModule), |
||||
|
typeof(AbpAccountApplicationModule), |
||||
|
typeof(AbpIdentityApplicationModule), |
||||
|
typeof(AbpPermissionManagementApplicationModule), |
||||
|
typeof(AbpTenantManagementApplicationModule), |
||||
|
typeof(AbpFeatureManagementApplicationModule), |
||||
|
typeof(AbpSettingManagementApplicationModule), |
||||
|
typeof(AbpAuditLoggingDomainModule) |
||||
|
)] |
||||
|
public class BasicManagementApplicationModule : AbpModule |
||||
|
{ |
||||
|
public override void ConfigureServices(ServiceConfigurationContext context) |
||||
|
{ |
||||
|
context.Services.AddAutoMapperObjectMapper<BasicManagementApplicationModule>(); |
||||
|
Configure<AbpAutoMapperOptions>(options => |
||||
|
{ |
||||
|
options.AddMaps<BasicManagementApplicationModule>(validate: true); |
||||
|
}); |
||||
|
|
||||
|
Configure<PermissionOptions>(options => |
||||
|
{ |
||||
|
options.Excludes.Add("AbpIdentity.Users.ManagePermissions"); |
||||
|
options.Excludes.Add("AbpIdentity.UserLookup"); |
||||
|
options.Excludes.Add("FeatureManagement"); |
||||
|
options.Excludes.Add("FeatureManagement.ManageHostFeatures"); |
||||
|
options.Excludes.Add("SettingManagement"); |
||||
|
options.Excludes.Add("SettingManagement.Emailing"); |
||||
|
options.Excludes.Add("AbpTenantManagement"); |
||||
|
options.Excludes.Add("AbpTenantManagement.Tenants.ManageFeatures"); |
||||
|
options.Excludes.Add("AbpTenantManagement.Tenants.ManageConnectionStrings"); |
||||
|
}); |
||||
|
|
||||
|
context.Services.Configure<JwtOptions>(context.Services.GetConfiguration().GetSection("Jwt")); |
||||
|
|
||||
|
ConfigureMagicodes(context); |
||||
|
} |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 配置Magicodes.IE
|
||||
|
/// Excel导入导出
|
||||
|
/// </summary>
|
||||
|
private void ConfigureMagicodes(ServiceConfigurationContext context) |
||||
|
{ |
||||
|
context.Services.AddTransient<IExporter, ExcelExporter>(); |
||||
|
context.Services.AddTransient<IExcelExporter, ExcelExporter>(); |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,3 @@ |
|||||
|
<Weavers xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="FodyWeavers.xsd"> |
||||
|
<ConfigureAwait ContinueOnCapturedContext="false" /> |
||||
|
</Weavers> |
||||
@ -0,0 +1,30 @@ |
|||||
|
<?xml version="1.0" encoding="utf-8"?> |
||||
|
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> |
||||
|
<!-- This file was generated by Fody. Manual changes to this file will be lost when your project is rebuilt. --> |
||||
|
<xs:element name="Weavers"> |
||||
|
<xs:complexType> |
||||
|
<xs:all> |
||||
|
<xs:element name="ConfigureAwait" minOccurs="0" maxOccurs="1"> |
||||
|
<xs:complexType> |
||||
|
<xs:attribute name="ContinueOnCapturedContext" type="xs:boolean" /> |
||||
|
</xs:complexType> |
||||
|
</xs:element> |
||||
|
</xs:all> |
||||
|
<xs:attribute name="VerifyAssembly" type="xs:boolean"> |
||||
|
<xs:annotation> |
||||
|
<xs:documentation>'true' to run assembly verification (PEVerify) on the target assembly after all weavers have been executed.</xs:documentation> |
||||
|
</xs:annotation> |
||||
|
</xs:attribute> |
||||
|
<xs:attribute name="VerifyIgnoreCodes" type="xs:string"> |
||||
|
<xs:annotation> |
||||
|
<xs:documentation>A comma-separated list of error codes that can be safely ignored in assembly verification.</xs:documentation> |
||||
|
</xs:annotation> |
||||
|
</xs:attribute> |
||||
|
<xs:attribute name="GenerateXsd" type="xs:boolean"> |
||||
|
<xs:annotation> |
||||
|
<xs:documentation>'false' to turn off automatic generation of the XML Schema file.</xs:documentation> |
||||
|
</xs:annotation> |
||||
|
</xs:attribute> |
||||
|
</xs:complexType> |
||||
|
</xs:element> |
||||
|
</xs:schema> |
||||
@ -0,0 +1,31 @@ |
|||||
|
// Global using directives
|
||||
|
|
||||
|
global using System.Globalization; |
||||
|
global using AutoMapper.Internal.Mappers; |
||||
|
global using Lion.AbpPro.BasicManagement.OrganizationUnits.Dto; |
||||
|
global using Lion.AbpPro.BasicManagement.Permissions; |
||||
|
global using Lion.AbpPro.BasicManagement.Tenants.Dtos; |
||||
|
global using Lion.AbpPro.Extension.Customs.Dtos; |
||||
|
global using Microsoft.AspNetCore.Authorization; |
||||
|
global using Microsoft.Extensions.DependencyInjection; |
||||
|
global using Microsoft.Extensions.Localization; |
||||
|
global using Microsoft.Extensions.Logging; |
||||
|
global using Microsoft.Extensions.Options; |
||||
|
global using Volo.Abp; |
||||
|
global using Volo.Abp.Application.Dtos; |
||||
|
global using Volo.Abp.Application.Services; |
||||
|
global using Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations; |
||||
|
global using Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ObjectExtending; |
||||
|
global using Volo.Abp.AspNetCore.Mvc.MultiTenancy; |
||||
|
global using Volo.Abp.AuditLogging; |
||||
|
global using Volo.Abp.Authorization; |
||||
|
global using Volo.Abp.Authorization.Permissions; |
||||
|
global using Volo.Abp.DependencyInjection; |
||||
|
global using Volo.Abp.Features; |
||||
|
global using Volo.Abp.Identity; |
||||
|
global using Volo.Abp.Localization; |
||||
|
global using Volo.Abp.MultiTenancy; |
||||
|
global using Volo.Abp.Settings; |
||||
|
global using Volo.Abp.TenantManagement; |
||||
|
global using Volo.Abp.Timing; |
||||
|
global using Volo.Abp.Users; |
||||
@ -0,0 +1,25 @@ |
|||||
|
<Project Sdk="Microsoft.NET.Sdk"> |
||||
|
|
||||
|
<PropertyGroup> |
||||
|
<TargetFramework>net6.0</TargetFramework> |
||||
|
<RootNamespace>Lion.AbpPro.BasicManagement</RootNamespace> |
||||
|
</PropertyGroup> |
||||
|
|
||||
|
<ItemGroup> |
||||
|
<PackageReference Include="Volo.Abp.AutoMapper" /> |
||||
|
<PackageReference Include="Volo.Abp.Ddd.Application" /> |
||||
|
<PackageReference Include="Volo.Abp.Account.Application" /> |
||||
|
<PackageReference Include="Volo.Abp.AspNetCore.Mvc" /> |
||||
|
<PackageReference Include="Volo.Abp.Identity.Application" /> |
||||
|
<PackageReference Include="Volo.Abp.PermissionManagement.Application" /> |
||||
|
<PackageReference Include="Volo.Abp.TenantManagement.Application" /> |
||||
|
<PackageReference Include="Volo.Abp.FeatureManagement.Application" /> |
||||
|
<PackageReference Include="Volo.Abp.SettingManagement.Application" /> |
||||
|
<PackageReference Include="Microsoft.IdentityModel.Tokens" /> |
||||
|
<PackageReference Include="System.IdentityModel.Tokens.Jwt" /> |
||||
|
<PackageReference Include="IdentityModel" /> |
||||
|
<ProjectReference Include="..\Lion.AbpPro.BasicManagement.Application.Contracts\Lion.AbpPro.BasicManagement.Application.Contracts.csproj" /> |
||||
|
<ProjectReference Include="..\Lion.AbpPro.BasicManagement.Domain\Lion.AbpPro.BasicManagement.Domain.csproj" /> |
||||
|
</ItemGroup> |
||||
|
|
||||
|
</Project> |
||||
@ -0,0 +1,198 @@ |
|||||
|
namespace Lion.AbpPro.BasicManagement.OrganizationUnits; |
||||
|
|
||||
|
[Authorize] |
||||
|
public class OrganizationUnitAppService : BasicManagementAppService, IOrganizationUnitAppService |
||||
|
{ |
||||
|
private readonly OrganizationUnitManager _organizationUnitManager; |
||||
|
private readonly IdentityUserManager _identityUserManager; |
||||
|
private readonly IOrganizationUnitRepository _organizationUnitRepository; |
||||
|
|
||||
|
public OrganizationUnitAppService( |
||||
|
OrganizationUnitManager OrganizationUnitManager, |
||||
|
IdentityUserManager identityUserManager, |
||||
|
IOrganizationUnitRepository organizationUnitRepository) |
||||
|
{ |
||||
|
_organizationUnitManager = OrganizationUnitManager; |
||||
|
_identityUserManager = identityUserManager; |
||||
|
_organizationUnitRepository = organizationUnitRepository; |
||||
|
} |
||||
|
|
||||
|
public async Task<List<TreeOutput>> GetTreeAsync() |
||||
|
{ |
||||
|
var organizationUnits = await _organizationUnitRepository.GetListAsync(); |
||||
|
var organizationUnitDtos = ObjectMapper.Map<List<OrganizationUnit>, List<OrganizationUnitDto>>(organizationUnits); |
||||
|
return ConvertToTree(organizationUnitDtos); |
||||
|
} |
||||
|
|
||||
|
[Authorize(BasicManagementPermissions.SystemManagement.OrganizationUnitManagement.Create)] |
||||
|
public async Task CreateAsync(CreateOrganizationUnitInput input) |
||||
|
{ |
||||
|
var entity = new OrganizationUnit |
||||
|
( |
||||
|
GuidGenerator.Create(), |
||||
|
input.DisplayName, |
||||
|
input.ParentId, |
||||
|
CurrentTenant.Id |
||||
|
); |
||||
|
await _organizationUnitManager.CreateAsync(entity); |
||||
|
} |
||||
|
|
||||
|
[Authorize(BasicManagementPermissions.SystemManagement.OrganizationUnitManagement.Delete)] |
||||
|
public Task DeleteAsync(IdInput input) |
||||
|
{ |
||||
|
return _organizationUnitManager.DeleteAsync(input.Id); |
||||
|
} |
||||
|
|
||||
|
[Authorize(BasicManagementPermissions.SystemManagement.OrganizationUnitManagement.Update)] |
||||
|
public async Task UpdateAsync(UpdateOrganizationUnitInput input) |
||||
|
{ |
||||
|
var entity = await _organizationUnitRepository.FindAsync(input.Id); |
||||
|
if (entity != null) |
||||
|
{ |
||||
|
entity.DisplayName = input.DisplayName; |
||||
|
await _organizationUnitManager.UpdateAsync(entity); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
[Authorize(BasicManagementPermissions.SystemManagement.OrganizationUnitManagement.Create)] |
||||
|
public async Task AddRoleToOrganizationUnitAsync(AddRoleToOrganizationUnitInput input) |
||||
|
{ |
||||
|
foreach (var roleId in input.RoleId) |
||||
|
{ |
||||
|
await _organizationUnitManager.AddRoleToOrganizationUnitAsync(roleId, input.OrganizationUnitId); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
[Authorize(BasicManagementPermissions.SystemManagement.OrganizationUnitManagement.Delete)] |
||||
|
public async Task RemoveRoleFromOrganizationUnitAsync(RemoveRoleToOrganizationUnitInput input) |
||||
|
{ |
||||
|
await _organizationUnitManager.RemoveRoleFromOrganizationUnitAsync(input.RoleId, input.OrganizationUnitId); |
||||
|
} |
||||
|
|
||||
|
[Authorize(BasicManagementPermissions.SystemManagement.OrganizationUnitManagement.Create)] |
||||
|
public async Task AddUserToOrganizationUnitAsync(AddUserToOrganizationUnitInput input) |
||||
|
{ |
||||
|
foreach (var userId in input.UserId) |
||||
|
{ |
||||
|
await _identityUserManager.AddToOrganizationUnitAsync(userId, input.OrganizationUnitId); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
[Authorize(BasicManagementPermissions.SystemManagement.OrganizationUnitManagement.Delete)] |
||||
|
public async Task RemoveUserFromOrganizationUnitAsync(RemoveUserToOrganizationUnitInput input) |
||||
|
{ |
||||
|
await _identityUserManager.RemoveFromOrganizationUnitAsync(input.UserId, input.OrganizationUnitId); |
||||
|
} |
||||
|
|
||||
|
public async Task<PagedResultDto<GetOrganizationUnitUserOutput>> GetUsersAsync(GetOrganizationUnitUserInput input) |
||||
|
{ |
||||
|
var listResult = new List<GetOrganizationUnitUserOutput>(); |
||||
|
var organizationUnit = await _organizationUnitRepository.FindAsync(input.OrganizationUnitId); |
||||
|
if (organizationUnit == null) throw new BusinessException(BasicManagementErrorCodes.OrganizationUnitNotExist); |
||||
|
|
||||
|
var count = await _organizationUnitRepository.GetMembersCountAsync(organizationUnit, filter: input.Filter); |
||||
|
if (count > 0) |
||||
|
{ |
||||
|
var list = await _organizationUnitRepository.GetMembersAsync |
||||
|
( |
||||
|
organizationUnit, |
||||
|
maxResultCount: input.PageSize, |
||||
|
skipCount: input.SkipCount, |
||||
|
filter: input.Filter |
||||
|
); |
||||
|
listResult = ObjectMapper.Map<List<IdentityUser>, List<GetOrganizationUnitUserOutput>>(list); |
||||
|
} |
||||
|
|
||||
|
return new PagedResultDto<GetOrganizationUnitUserOutput>(count, listResult); |
||||
|
} |
||||
|
|
||||
|
public async Task<PagedResultDto<GetUnAddUserOutput>> GetUnAddUsersAsync(GetUnAddUserInput input) |
||||
|
{ |
||||
|
var listResult = new List<GetUnAddUserOutput>(); |
||||
|
var organizationUnit = await _organizationUnitRepository.FindAsync(input.OrganizationUnitId); |
||||
|
if (organizationUnit == null) throw new BusinessException(BasicManagementErrorCodes.OrganizationUnitNotExist); |
||||
|
var count = await _organizationUnitRepository.GetUnaddedUsersCountAsync(organizationUnit, input.Filter); |
||||
|
if (count > 0) |
||||
|
{ |
||||
|
var users = await _organizationUnitRepository.GetUnaddedUsersAsync |
||||
|
( |
||||
|
organizationUnit, |
||||
|
maxResultCount: input.PageSize, |
||||
|
skipCount: input.SkipCount, |
||||
|
filter: input.Filter |
||||
|
); |
||||
|
listResult = ObjectMapper.Map<List<IdentityUser>, List<GetUnAddUserOutput>>(users); |
||||
|
} |
||||
|
|
||||
|
return new PagedResultDto<GetUnAddUserOutput>(count, listResult); |
||||
|
} |
||||
|
|
||||
|
public async Task<PagedResultDto<GetOrganizationUnitRoleOutput>> GetRolesAsync(GetOrganizationUnitRoleInput input) |
||||
|
{ |
||||
|
var listResult = new List<GetOrganizationUnitRoleOutput>(); |
||||
|
var organizationUnit = await _organizationUnitRepository.FindAsync(input.OrganizationUnitId); |
||||
|
if (organizationUnit == null) throw new BusinessException(BasicManagementErrorCodes.OrganizationUnitNotExist); |
||||
|
|
||||
|
var count = await _organizationUnitRepository.GetRolesCountAsync(organizationUnit); |
||||
|
if (count > 0) |
||||
|
{ |
||||
|
var list = await _organizationUnitRepository.GetRolesAsync(organizationUnit, maxResultCount: input.PageSize, skipCount: input.SkipCount); |
||||
|
listResult = ObjectMapper.Map<List<IdentityRole>, List<GetOrganizationUnitRoleOutput>>(list); |
||||
|
} |
||||
|
|
||||
|
return new PagedResultDto<GetOrganizationUnitRoleOutput>(count, listResult); |
||||
|
} |
||||
|
|
||||
|
public async Task<PagedResultDto<GetUnAddRoleOutput>> GetUnAddRolessAsync(GetUnAddRoleInput input) |
||||
|
{ |
||||
|
var listResult = new List<GetUnAddRoleOutput>(); |
||||
|
var organizationUnit = await _organizationUnitRepository.FindAsync(input.OrganizationUnitId); |
||||
|
if (organizationUnit == null) throw new BusinessException(BasicManagementErrorCodes.OrganizationUnitNotExist); |
||||
|
var count = await _organizationUnitRepository.GetUnaddedRolesCountAsync(organizationUnit, input.Filter); |
||||
|
if (count > 0) |
||||
|
{ |
||||
|
var roles = await _organizationUnitRepository.GetUnaddedRolesAsync |
||||
|
( |
||||
|
organizationUnit, |
||||
|
maxResultCount: input.PageSize, |
||||
|
skipCount: input.SkipCount, |
||||
|
filter: input.Filter |
||||
|
); |
||||
|
listResult = ObjectMapper.Map<List<IdentityRole>, List<GetUnAddRoleOutput>>(roles); |
||||
|
} |
||||
|
|
||||
|
return new PagedResultDto<GetUnAddRoleOutput>(count, listResult); |
||||
|
} |
||||
|
|
||||
|
#region 私有方法
|
||||
|
|
||||
|
private List<TreeOutput> ConvertToTree( |
||||
|
List<OrganizationUnitDto> list, |
||||
|
Guid? Id = null) |
||||
|
{ |
||||
|
var result = new List<TreeOutput>(); |
||||
|
var childList = Children(list, Id); |
||||
|
foreach (var item in childList) |
||||
|
{ |
||||
|
var tree = new TreeOutput |
||||
|
{ |
||||
|
Key = item.Id, |
||||
|
Title = item.DisplayName, |
||||
|
Children = ConvertToTree(list, item.Id) |
||||
|
}; |
||||
|
result.Add(tree); |
||||
|
} |
||||
|
|
||||
|
return result; |
||||
|
} |
||||
|
|
||||
|
private List<OrganizationUnitDto> Children( |
||||
|
List<OrganizationUnitDto> list, |
||||
|
Guid? Id) |
||||
|
{ |
||||
|
var childList = list.Where(x => x.ParentId == Id).ToList(); |
||||
|
return childList; |
||||
|
} |
||||
|
|
||||
|
#endregion
|
||||
|
} |
||||
@ -0,0 +1,87 @@ |
|||||
|
using Lion.AbpPro.BasicManagement.Roles.Dtos; |
||||
|
|
||||
|
namespace Lion.AbpPro.BasicManagement.Roles |
||||
|
{ |
||||
|
[Authorize] |
||||
|
public class RoleAppService : BasicManagementAppService, IRoleAppService |
||||
|
{ |
||||
|
private readonly IIdentityRoleAppService _identityRoleAppService; |
||||
|
|
||||
|
private readonly IIdentityRoleRepository _roleRepository; |
||||
|
|
||||
|
public RoleAppService( |
||||
|
IIdentityRoleAppService identityRoleAppService, |
||||
|
IIdentityRoleRepository roleRepository) |
||||
|
{ |
||||
|
_identityRoleAppService = identityRoleAppService; |
||||
|
|
||||
|
_roleRepository = roleRepository; |
||||
|
} |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 获取所有角色
|
||||
|
/// </summary>
|
||||
|
|
||||
|
public async Task<ListResultDto<IdentityRoleDto>> AllListAsync() |
||||
|
{ |
||||
|
List<IdentityRole> source = |
||||
|
await _roleRepository.GetListAsync() |
||||
|
.ConfigureAwait(continueOnCapturedContext: false); |
||||
|
return new ListResultDto<IdentityRoleDto>( |
||||
|
ObjectMapper.Map<List<IdentityRole>, List<IdentityRoleDto>>(source)); |
||||
|
} |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 分页查询角色
|
||||
|
/// </summary>
|
||||
|
/// <param name="input"></param>
|
||||
|
/// <returns></returns>
|
||||
|
public async Task<PagedResultDto<IdentityRoleDto>> ListAsync(PagingRoleListInput input) |
||||
|
{ |
||||
|
var request = new GetIdentityRolesInput |
||||
|
{ |
||||
|
Filter = input.Filter?.Trim(), MaxResultCount = input.PageSize, |
||||
|
SkipCount = input.SkipCount |
||||
|
}; |
||||
|
List<IdentityRole> list = await _roleRepository |
||||
|
.GetListAsync(request.Sorting, request.MaxResultCount, request.SkipCount, |
||||
|
request.Filter) |
||||
|
.ConfigureAwait(continueOnCapturedContext: false); |
||||
|
return new PagedResultDto<IdentityRoleDto>( |
||||
|
await _roleRepository.GetCountAsync(request.Filter) |
||||
|
.ConfigureAwait(continueOnCapturedContext: false), |
||||
|
ObjectMapper.Map<List<IdentityRole>, List<IdentityRoleDto>>(list)); |
||||
|
} |
||||
|
|
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 创建角色
|
||||
|
/// </summary>
|
||||
|
/// <param name="input"></param>
|
||||
|
/// <returns></returns>
|
||||
|
[Authorize(IdentityPermissions.Roles.Create)] |
||||
|
public async Task<IdentityRoleDto> CreateAsync(IdentityRoleCreateDto input) |
||||
|
{ |
||||
|
return await _identityRoleAppService.CreateAsync(input); |
||||
|
} |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 更新角色
|
||||
|
/// </summary>
|
||||
|
[Authorize(IdentityPermissions.Roles.Update)] |
||||
|
public async Task<IdentityRoleDto> UpdateAsync(UpdateRoleInput input) |
||||
|
{ |
||||
|
return await _identityRoleAppService.UpdateAsync(input.RoleId, input.RoleInfo); |
||||
|
} |
||||
|
|
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 删除角色
|
||||
|
/// </summary>
|
||||
|
[Authorize(IdentityPermissions.Roles.Delete)] |
||||
|
public async Task DeleteAsync(IdInput input) |
||||
|
{ |
||||
|
await _identityRoleAppService.DeleteAsync(input.Id); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,120 @@ |
|||||
|
using Lion.AbpPro.BasicManagement.Roles.Dtos; |
||||
|
using Volo.Abp.PermissionManagement; |
||||
|
|
||||
|
namespace Lion.AbpPro.BasicManagement.Roles |
||||
|
{ |
||||
|
[Authorize] |
||||
|
public class RolePermissionAppService : BasicManagementAppService, IRolePermissionAppService |
||||
|
{ |
||||
|
private readonly IPermissionAppService _rolePermissionAppService; |
||||
|
private readonly PermissionOptions _permissionOptions; |
||||
|
|
||||
|
public RolePermissionAppService(IPermissionAppService rolePermissionAppService, IOptions<PermissionOptions> permissionOptions) |
||||
|
{ |
||||
|
_rolePermissionAppService = rolePermissionAppService; |
||||
|
_permissionOptions = permissionOptions.Value; |
||||
|
} |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 获取所有权限
|
||||
|
/// </summary>
|
||||
|
/// <returns></returns>
|
||||
|
public async Task<PermissionOutput> GetPermissionAsync(GetPermissionInput input) |
||||
|
{ |
||||
|
var permissions = |
||||
|
await _rolePermissionAppService.GetAsync(input.ProviderName, input.ProviderKey); |
||||
|
return BuildTreeData(permissions.Groups); |
||||
|
} |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 更新权限
|
||||
|
/// </summary>
|
||||
|
/// <param name="input"></param>
|
||||
|
[Authorize(IdentityPermissions.Roles.ManagePermissions)] |
||||
|
public async Task UpdatePermissionAsync(UpdateRolePermissionsInput input) |
||||
|
{ |
||||
|
await _rolePermissionAppService.UpdateAsync(input.ProviderName, input.ProviderKey, |
||||
|
input.UpdatePermissionsDto); |
||||
|
} |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 生成权限树
|
||||
|
/// </summary>
|
||||
|
/// <param name="input"></param>
|
||||
|
/// <returns></returns>
|
||||
|
private PermissionOutput BuildTreeData(List<PermissionGroupDto> input) |
||||
|
{ |
||||
|
var result = new PermissionOutput(); |
||||
|
|
||||
|
|
||||
|
var permissions = new List<PermissionTreeDto>(); |
||||
|
|
||||
|
foreach (var group in input) |
||||
|
{ |
||||
|
if (_permissionOptions.IsExclude(group.Name)) continue; |
||||
|
|
||||
|
// 获取分组信息
|
||||
|
var groupPermission = new PermissionTreeDto |
||||
|
{ |
||||
|
Key = group.Name, |
||||
|
Title = group.Name == "AbpIdentity" |
||||
|
? L[$"Permission:SystemManagement"] |
||||
|
: group.DisplayName |
||||
|
}; |
||||
|
result.Grants.Add(group.Name); |
||||
|
// 获取所有已授权和未授权权限集合
|
||||
|
foreach (var item in group.Permissions) |
||||
|
{ |
||||
|
if (_permissionOptions.IsExclude(item.Name)) continue; |
||||
|
|
||||
|
result.AllGrants.Add(item.Name); |
||||
|
if (item.IsGranted) |
||||
|
{ |
||||
|
result.Grants.Add(item.Name); |
||||
|
} |
||||
|
else |
||||
|
{ |
||||
|
// 只要没有授权的,就移除顶级的分组
|
||||
|
result.Grants.Remove(group.Name); |
||||
|
result.Grants.Remove(item.ParentName); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
// 递归菜单
|
||||
|
var childTreeMenu = RecursionMenu(group.Permissions, null); |
||||
|
|
||||
|
groupPermission.Children.AddRange(childTreeMenu.Children); |
||||
|
|
||||
|
permissions.Add(groupPermission); |
||||
|
} |
||||
|
|
||||
|
|
||||
|
result.Permissions = permissions; |
||||
|
return result; |
||||
|
} |
||||
|
|
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 递归菜单
|
||||
|
/// </summary>
|
||||
|
private PermissionTreeDto RecursionMenu(List<PermissionGrantInfoDto> permissionGrantInfoDtos, |
||||
|
string parentName) |
||||
|
{ |
||||
|
var tree = new PermissionTreeDto(); |
||||
|
var permissions = permissionGrantInfoDtos |
||||
|
.Where(e => e.ParentName == parentName && !_permissionOptions.IsExclude(e.Name)).ToList(); |
||||
|
foreach (var item in permissions) |
||||
|
{ |
||||
|
var child = new PermissionTreeDto |
||||
|
{ |
||||
|
Key = item.Name, |
||||
|
Title = item.DisplayName |
||||
|
}; |
||||
|
child.Children.AddRange(RecursionMenu(permissionGrantInfoDtos, item.Name).Children); |
||||
|
tree.Children.Add(child); |
||||
|
} |
||||
|
|
||||
|
return tree; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,97 @@ |
|||||
|
using Lion.AbpPro.BasicManagement.Settings.Dtos; |
||||
|
using Volo.Abp.SettingManagement; |
||||
|
|
||||
|
namespace Lion.AbpPro.BasicManagement.Settings |
||||
|
{ |
||||
|
[Authorize(policy: BasicManagementPermissions.SystemManagement.Setting)] |
||||
|
public class SettingAppService : BasicManagementAppService, ISettingAppService |
||||
|
{ |
||||
|
private readonly ISettingDefinitionManager _settingDefinitionManager; |
||||
|
private readonly ISettingManager _settingManager; |
||||
|
private readonly IStringLocalizerFactory _factory; |
||||
|
|
||||
|
public SettingAppService( |
||||
|
ISettingDefinitionManager settingDefinitionManager, |
||||
|
ISettingManager settingManager, |
||||
|
IStringLocalizerFactory factory) |
||||
|
{ |
||||
|
_settingDefinitionManager = settingDefinitionManager; |
||||
|
_settingManager = settingManager; |
||||
|
_factory = factory; |
||||
|
} |
||||
|
|
||||
|
public async Task<List<SettingOutput>> GetAsync() |
||||
|
{ |
||||
|
var allSettings = _settingDefinitionManager.GetAll().ToList(); |
||||
|
var settings = allSettings |
||||
|
.Where(e => e.Properties.ContainsKey(BasicManagementSettings.Group.Default)).ToList(); |
||||
|
|
||||
|
var settingOutput = settings |
||||
|
.GroupBy(e => e.Properties[BasicManagementSettings.Group.Default].ToString()).Select(s => |
||||
|
new SettingOutput |
||||
|
{ |
||||
|
Group = s.Key, |
||||
|
GroupDisplayName = _factory.CreateDefaultOrNull()[s.Key] |
||||
|
}).ToList(); |
||||
|
|
||||
|
foreach (var item in settingOutput) |
||||
|
{ |
||||
|
var currentSettings = settings.Where(e => e.Properties.ContainsValue(item.Group)); |
||||
|
foreach (var itemDefinition in currentSettings) |
||||
|
{ |
||||
|
var value = await SettingProvider.GetOrNullAsync(itemDefinition.Name); |
||||
|
var type = itemDefinition.Properties |
||||
|
.FirstOrDefault(f => f.Key == BasicManagementSettings.ControlType.Default).Value |
||||
|
.ToString(); |
||||
|
|
||||
|
item.SettingItemOutput.Add(new SettingItemOutput( |
||||
|
itemDefinition.Name, |
||||
|
itemDefinition.DisplayName.Localize(_factory), |
||||
|
value, |
||||
|
type, |
||||
|
itemDefinition.Description.Localize(_factory))); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
return await Task.FromResult(settingOutput); |
||||
|
} |
||||
|
|
||||
|
public async Task UpdateAsync(UpdateSettingInput input) |
||||
|
{ |
||||
|
foreach (var kv in input.Values) |
||||
|
{ |
||||
|
// The key of the settingValues is in camel_Case, like "setting_Abp_Localization_DefaultLanguage",
|
||||
|
// change it to "Abp.Localization.DefaultLanguage" form
|
||||
|
if (!kv.Key.StartsWith(BasicManagementSettings.Prefix)) |
||||
|
{ |
||||
|
continue; |
||||
|
} |
||||
|
|
||||
|
string name = kv.Key.RemovePreFix(BasicManagementSettings.Prefix); |
||||
|
var setting = _settingDefinitionManager.GetOrNull(name); |
||||
|
if (setting == null) |
||||
|
{ |
||||
|
continue; |
||||
|
} |
||||
|
|
||||
|
await SetSetting(setting, kv.Value); |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
private Task SetSetting(SettingDefinition setting, string value) |
||||
|
{ |
||||
|
if (setting.Providers.Any(p => p == UserSettingValueProvider.ProviderName)) |
||||
|
{ |
||||
|
return _settingManager.SetForCurrentUserAsync(setting.Name, value); |
||||
|
} |
||||
|
|
||||
|
if (setting.Providers.Any(p => p == TenantSettingValueProvider.ProviderName)) |
||||
|
{ |
||||
|
return _settingManager.SetForCurrentTenantAsync(setting.Name, value); |
||||
|
} |
||||
|
|
||||
|
|
||||
|
return _settingManager.SetGlobalAsync(setting.Name, value); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,73 @@ |
|||||
|
namespace Lion.AbpPro.BasicManagement.Tenants |
||||
|
{ |
||||
|
[Authorize] |
||||
|
public class VoloTenantAppService : BasicManagementAppService, IVoloTenantAppService |
||||
|
{ |
||||
|
private readonly IAbpTenantAppService _abpTenantAppService; |
||||
|
private readonly ITenantAppService _tenantAppService; |
||||
|
|
||||
|
public VoloTenantAppService( |
||||
|
IAbpTenantAppService abpTenantAppService, |
||||
|
ITenantAppService tenantAppService) |
||||
|
{ |
||||
|
_abpTenantAppService = abpTenantAppService; |
||||
|
_tenantAppService = tenantAppService; |
||||
|
} |
||||
|
|
||||
|
public async Task<FindTenantResultDto> FindTenantByNameAsync(FindTenantByNameInput input) |
||||
|
{ |
||||
|
return await _abpTenantAppService.FindTenantByNameAsync(input.Name); |
||||
|
} |
||||
|
|
||||
|
|
||||
|
public Task<PagedResultDto<TenantDto>> ListAsync(PagingTenantInput input) |
||||
|
{ |
||||
|
var request = new GetTenantsInput |
||||
|
{ |
||||
|
Filter = input.Filter, SkipCount = input.SkipCount, MaxResultCount = input.PageSize |
||||
|
}; |
||||
|
return _tenantAppService.GetListAsync(request); |
||||
|
} |
||||
|
|
||||
|
[Authorize(policy:TenantManagementPermissions.Tenants.Create)] |
||||
|
public Task<TenantDto> CreateAsync(TenantCreateDto input) |
||||
|
{ |
||||
|
return _tenantAppService.CreateAsync(input); |
||||
|
} |
||||
|
|
||||
|
[Authorize(policy:TenantManagementPermissions.Tenants.Update)] |
||||
|
public Task<TenantDto> UpdateAsync(UpdateTenantInput input) |
||||
|
{ |
||||
|
var request = new TenantUpdateDto() |
||||
|
{ |
||||
|
Name = input.Name.Trim() |
||||
|
}; |
||||
|
return _tenantAppService.UpdateAsync(input.Id, request); |
||||
|
} |
||||
|
|
||||
|
[Authorize(policy:TenantManagementPermissions.Tenants.Delete)] |
||||
|
public Task DeleteAsync(IdInput input) |
||||
|
{ |
||||
|
return _tenantAppService.DeleteAsync(input.Id); |
||||
|
} |
||||
|
|
||||
|
[Authorize(TenantManagementPermissions.Tenants.ManageConnectionStrings)] |
||||
|
public Task<string> GetDefaultConnectionStringAsync(IdInput input) |
||||
|
{ |
||||
|
return _tenantAppService.GetDefaultConnectionStringAsync(input.Id); |
||||
|
} |
||||
|
|
||||
|
[Authorize(TenantManagementPermissions.Tenants.ManageConnectionStrings)] |
||||
|
public Task UpdateDefaultConnectionStringAsync(UpdateConnectionStringInput input) |
||||
|
{ |
||||
|
return _tenantAppService.UpdateDefaultConnectionStringAsync(input.Id, |
||||
|
input.ConnectionString); |
||||
|
} |
||||
|
|
||||
|
[Authorize(TenantManagementPermissions.Tenants.ManageConnectionStrings)] |
||||
|
public Task DeleteDefaultConnectionStringAsync(IdInput input) |
||||
|
{ |
||||
|
return _tenantAppService.DeleteDefaultConnectionStringAsync(input.Id); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,103 @@ |
|||||
|
using System.IdentityModel.Tokens.Jwt; |
||||
|
using System.Security.Claims; |
||||
|
using System.Text; |
||||
|
using IdentityModel; |
||||
|
using Lion.AbpPro.BasicManagement.ConfigurationOptions; |
||||
|
using Lion.AbpPro.BasicManagement.Users.Dtos; |
||||
|
using Microsoft.IdentityModel.Tokens; |
||||
|
using Volo.Abp.Security.Claims; |
||||
|
|
||||
|
namespace Lion.AbpPro.BasicManagement.Users |
||||
|
{ |
||||
|
public class AccountAppService : BasicManagementAppService, IAccountAppService |
||||
|
{ |
||||
|
private readonly IdentityUserManager _userManager; |
||||
|
private readonly JwtOptions _jwtOptions; |
||||
|
private readonly Microsoft.AspNetCore.Identity.SignInManager<IdentityUser> _signInManager; |
||||
|
|
||||
|
public AccountAppService( |
||||
|
IdentityUserManager userManager, |
||||
|
IOptionsSnapshot<JwtOptions> jwtOptions, |
||||
|
Microsoft.AspNetCore.Identity.SignInManager<IdentityUser> signInManager) |
||||
|
{ |
||||
|
_userManager = userManager; |
||||
|
_jwtOptions = jwtOptions.Value; |
||||
|
_signInManager = signInManager; |
||||
|
} |
||||
|
|
||||
|
|
||||
|
public async Task<LoginOutput> LoginAsync(LoginInput input) |
||||
|
{ |
||||
|
var result = await _signInManager.PasswordSignInAsync(input.Name, input.Password, false, true); |
||||
|
if (result.IsNotAllowed) |
||||
|
{ |
||||
|
throw new BusinessException(BasicManagementErrorCodes.UserLockedOut); |
||||
|
} |
||||
|
|
||||
|
if (!result.Succeeded) |
||||
|
{ |
||||
|
throw new BusinessException(BasicManagementErrorCodes.UserOrPasswordMismatch); |
||||
|
} |
||||
|
|
||||
|
var user = await _userManager.FindByNameAsync(input.Name); |
||||
|
return await BuildResult(user); |
||||
|
} |
||||
|
|
||||
|
#region 私有方法
|
||||
|
|
||||
|
|
||||
|
private async Task<LoginOutput> BuildResult(IdentityUser user) |
||||
|
{ |
||||
|
if (!user.IsActive) throw new BusinessException(BasicManagementErrorCodes.UserLockedOut); |
||||
|
var roles = await _userManager.GetRolesAsync(user); |
||||
|
if (roles == null || roles.Count == 0) throw new AbpAuthorizationException(); |
||||
|
var token = GenerateJwt(user.Id, user.UserName, user.Name, user.Email, |
||||
|
user.TenantId.ToString(), roles.ToList()); |
||||
|
var loginOutput = ObjectMapper.Map<IdentityUser, LoginOutput>(user); |
||||
|
loginOutput.Token = token; |
||||
|
loginOutput.Roles = roles.ToList(); |
||||
|
return loginOutput; |
||||
|
} |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 生成jwt token
|
||||
|
/// </summary>
|
||||
|
/// <returns></returns>
|
||||
|
private string GenerateJwt(Guid userId, string userName, string name, string email, |
||||
|
string tenantId, List<string> roles) |
||||
|
{ |
||||
|
var dateNow = DateTime.Now; |
||||
|
var expirationTime = dateNow + TimeSpan.FromHours(_jwtOptions.ExpirationTime); |
||||
|
var key = Encoding.ASCII.GetBytes(_jwtOptions.SecurityKey); |
||||
|
|
||||
|
var claims = new List<Claim> |
||||
|
{ |
||||
|
new Claim(JwtClaimTypes.Audience, _jwtOptions.Audience), |
||||
|
new Claim(JwtClaimTypes.Issuer, _jwtOptions.Issuer), |
||||
|
new Claim(AbpClaimTypes.UserId, userId.ToString()), |
||||
|
new Claim(AbpClaimTypes.Name, name), |
||||
|
new Claim(AbpClaimTypes.UserName, userName), |
||||
|
new Claim(AbpClaimTypes.Email, email), |
||||
|
new Claim(AbpClaimTypes.TenantId, tenantId) |
||||
|
}; |
||||
|
|
||||
|
foreach (var item in roles) |
||||
|
{ |
||||
|
claims.Add(new Claim(JwtClaimTypes.Role, item)); |
||||
|
} |
||||
|
|
||||
|
var tokenDescriptor = new SecurityTokenDescriptor() |
||||
|
{ |
||||
|
Subject = new ClaimsIdentity(claims), |
||||
|
Expires = expirationTime, |
||||
|
SigningCredentials = new SigningCredentials(new SymmetricSecurityKey(key), |
||||
|
SecurityAlgorithms.HmacSha256Signature) |
||||
|
}; |
||||
|
var handler = new JwtSecurityTokenHandler(); |
||||
|
var token = handler.CreateToken(tokenDescriptor); |
||||
|
return handler.WriteToken(token); |
||||
|
} |
||||
|
|
||||
|
#endregion
|
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,154 @@ |
|||||
|
using Lion.AbpPro.BasicManagement.Users.Dtos; |
||||
|
using Magicodes.ExporterAndImporter.Excel; |
||||
|
using Magicodes.ExporterAndImporter.Excel.AspNetCore; |
||||
|
using Microsoft.AspNetCore.Identity; |
||||
|
using Microsoft.AspNetCore.Mvc; |
||||
|
using Volo.Abp.Account; |
||||
|
|
||||
|
namespace Lion.AbpPro.BasicManagement.Users |
||||
|
{ |
||||
|
[Authorize] |
||||
|
public class UserAppService : BasicManagementAppService, IUserAppService |
||||
|
{ |
||||
|
private readonly IIdentityUserAppService _identityUserAppService; |
||||
|
private readonly IdentityUserManager _userManager; |
||||
|
private readonly IIdentityUserRepository _identityUserRepository; |
||||
|
private readonly IExcelExporter _excelExporter; |
||||
|
private readonly IOptions<IdentityOptions> _options; |
||||
|
public UserAppService( |
||||
|
IIdentityUserAppService identityUserAppService, |
||||
|
IdentityUserManager userManager, |
||||
|
IIdentityUserRepository userRepository, |
||||
|
IExcelExporter excelExporter, |
||||
|
IOptions<IdentityOptions> options) |
||||
|
{ |
||||
|
_identityUserAppService = identityUserAppService; |
||||
|
_userManager = userManager; |
||||
|
_identityUserRepository = userRepository; |
||||
|
_excelExporter = excelExporter; |
||||
|
_options = options; |
||||
|
} |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 分页查询用户
|
||||
|
/// </summary>
|
||||
|
public async Task<PagedResultDto<IdentityUserDto>> ListAsync(PagingUserListInput input) |
||||
|
{ |
||||
|
var request = new GetIdentityUsersInput |
||||
|
{ |
||||
|
Filter = input.Filter?.Trim(), |
||||
|
MaxResultCount = input.PageSize, |
||||
|
SkipCount = input.SkipCount, |
||||
|
Sorting = " LastModificationTime desc" |
||||
|
}; |
||||
|
|
||||
|
var count = await _identityUserRepository.GetCountAsync(request.Filter); |
||||
|
var source = await _identityUserRepository |
||||
|
.GetListAsync(request.Sorting, request.MaxResultCount, request.SkipCount, request.Filter); |
||||
|
|
||||
|
return new PagedResultDto<IdentityUserDto>(count, |
||||
|
base.ObjectMapper.Map<List<Volo.Abp.Identity.IdentityUser>, List<IdentityUserDto>>(source)); |
||||
|
} |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 用户导出列表
|
||||
|
/// </summary>
|
||||
|
/// <returns></returns>
|
||||
|
[Authorize(BasicManagementPermissions.SystemManagement.UserExport)] |
||||
|
public async Task<ActionResult> ExportAsync(PagingUserListInput input) |
||||
|
{ |
||||
|
var request = new GetIdentityUsersInput |
||||
|
{ |
||||
|
Filter = input.Filter?.Trim(), |
||||
|
MaxResultCount = input.PageSize, |
||||
|
SkipCount = input.SkipCount, |
||||
|
Sorting = " LastModificationTime desc" |
||||
|
}; |
||||
|
var source = await _identityUserRepository |
||||
|
.GetListAsync(request.Sorting, request.MaxResultCount, request.SkipCount, request.Filter); |
||||
|
var result = ObjectMapper.Map<List<Volo.Abp.Identity.IdentityUser>, List<ExportIdentityUserOutput>>(source); |
||||
|
var bytes = await _excelExporter.ExportAsByteArray<ExportIdentityUserOutput>(result); |
||||
|
return new XlsxFileResult(bytes: bytes, fileDownloadName: $"用户导出列表{DateTime.Now:yyyyMMdd}"); |
||||
|
} |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 新增用户
|
||||
|
/// </summary>
|
||||
|
/// <param name="input"></param>
|
||||
|
/// <returns></returns>
|
||||
|
[Authorize(IdentityPermissions.Users.Create)] |
||||
|
public async Task<IdentityUserDto> CreateAsync(IdentityUserCreateDto input) |
||||
|
{ |
||||
|
// abp 5.0 之后新增字段,是否运行用户登录,默认设置为true
|
||||
|
input.IsActive = true; |
||||
|
return await _identityUserAppService.CreateAsync(input); |
||||
|
} |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 更新用户
|
||||
|
/// </summary>
|
||||
|
/// <param name="input"></param>
|
||||
|
/// <returns></returns>
|
||||
|
[Authorize(IdentityPermissions.Users.Update)] |
||||
|
public virtual async Task<IdentityUserDto> UpdateAsync(UpdateUserInput input) |
||||
|
{ |
||||
|
input.UserInfo.IsActive = true; |
||||
|
return await _identityUserAppService.UpdateAsync(input.UserId, input.UserInfo); |
||||
|
} |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 删除用户
|
||||
|
/// </summary>
|
||||
|
[Authorize(IdentityPermissions.Users.Delete)] |
||||
|
public virtual async Task DeleteAsync(IdInput input) |
||||
|
{ |
||||
|
await _identityUserAppService.DeleteAsync(input.Id); |
||||
|
} |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 获取用户角色信息
|
||||
|
/// </summary>
|
||||
|
/// <returns></returns>
|
||||
|
public async Task<ListResultDto<IdentityRoleDto>> GetRoleByUserId(IdInput input) |
||||
|
{ |
||||
|
return await _identityUserAppService.GetRolesAsync(input.Id); |
||||
|
} |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 修改密码
|
||||
|
/// </summary>
|
||||
|
/// <param name="input"></param>
|
||||
|
/// <returns></returns>
|
||||
|
public async Task<bool> ChangePasswordAsync(ChangePasswordInput input) |
||||
|
{ |
||||
|
await _options.SetAsync(); |
||||
|
var identityUser = await _userManager.GetByIdAsync(base.CurrentUser.GetId()); |
||||
|
IdentityResult result; |
||||
|
if (identityUser.PasswordHash == null) |
||||
|
{ |
||||
|
result = await _userManager.AddPasswordAsync(identityUser, input.NewPassword); |
||||
|
} |
||||
|
else |
||||
|
{ |
||||
|
result = await _userManager.ChangePasswordAsync(identityUser, input.CurrentPassword, input.NewPassword); |
||||
|
} |
||||
|
|
||||
|
return !result.Succeeded |
||||
|
? throw new UserFriendlyException(result?.Errors?.FirstOrDefault()?.Description) |
||||
|
: result.Succeeded; |
||||
|
} |
||||
|
|
||||
|
/// <summary>
|
||||
|
/// 锁定用户
|
||||
|
/// </summary>
|
||||
|
/// <param name="input"></param>
|
||||
|
/// <returns></returns>
|
||||
|
[Authorize(BasicManagementPermissions.SystemManagement.UserEnable)] |
||||
|
public async Task LockAsync(LockUserInput input) |
||||
|
{ |
||||
|
var identityUser = await _userManager.GetByIdAsync(input.UserId); |
||||
|
identityUser.SetIsActive(input.Locked); |
||||
|
await _userManager.UpdateAsync(identityUser); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,9 @@ |
|||||
|
namespace Lion.AbpPro.BasicManagement; |
||||
|
|
||||
|
public static class BasicManagementConsts |
||||
|
{ |
||||
|
/// <summary>名称空间</summary>
|
||||
|
public const string NameSpace = "Lion.AbpPro.BasicManagement"; |
||||
|
/// <summary>默认语言</summary>
|
||||
|
public const string DefaultCultureName = "zh-Hans"; |
||||
|
} |
||||
@ -0,0 +1,39 @@ |
|||||
|
namespace Lion.AbpPro.BasicManagement; |
||||
|
|
||||
|
[DependsOn( |
||||
|
typeof(AbpAuditLoggingDomainSharedModule), |
||||
|
typeof(AbpBackgroundJobsDomainSharedModule), |
||||
|
typeof(AbpFeatureManagementDomainSharedModule), |
||||
|
typeof(AbpIdentityDomainSharedModule), |
||||
|
typeof(AbpPermissionManagementDomainSharedModule), |
||||
|
typeof(AbpSettingManagementDomainSharedModule), |
||||
|
typeof(AbpTenantManagementDomainSharedModule) |
||||
|
)] |
||||
|
public class BasicManagementDomainSharedModule : AbpModule |
||||
|
{ |
||||
|
public override void ConfigureServices(ServiceConfigurationContext context) |
||||
|
{ |
||||
|
Configure<AbpVirtualFileSystemOptions>(options => |
||||
|
{ |
||||
|
options.FileSets.AddEmbedded<BasicManagementDomainSharedModule>(BasicManagementConsts.NameSpace); |
||||
|
}); |
||||
|
|
||||
|
Configure<AbpLocalizationOptions>(options => |
||||
|
{ |
||||
|
options.Resources |
||||
|
.Add<BasicManagementResource>(BasicManagementConsts.DefaultCultureName) |
||||
|
.AddVirtualJson("/Localization/AbpPro") |
||||
|
.AddBaseTypes(typeof(IdentityResource)) |
||||
|
.AddBaseTypes(typeof(AbpValidationResource)) |
||||
|
.AddBaseTypes(typeof(AbpLocalizationResource)) |
||||
|
.AddBaseTypes(typeof(AbpSettingManagementResource)); |
||||
|
|
||||
|
options.DefaultResourceType = typeof(BasicManagementResource); |
||||
|
}); |
||||
|
|
||||
|
Configure<AbpExceptionLocalizationOptions>(options => |
||||
|
{ |
||||
|
options.MapCodeNamespace(BasicManagementConsts.NameSpace, typeof(BasicManagementResource)); |
||||
|
}); |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,8 @@ |
|||||
|
namespace Lion.AbpPro.BasicManagement; |
||||
|
|
||||
|
public static class BasicManagementErrorCodes |
||||
|
{ |
||||
|
public const string OrganizationUnitNotExist =BasicManagementConsts.NameSpace+ ":100001"; |
||||
|
public const string UserLockedOut =BasicManagementConsts.NameSpace+ ":100002"; |
||||
|
public const string UserOrPasswordMismatch =BasicManagementConsts.NameSpace+ ":100003"; |
||||
|
} |
||||
@ -0,0 +1,3 @@ |
|||||
|
<Weavers xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="FodyWeavers.xsd"> |
||||
|
<ConfigureAwait ContinueOnCapturedContext="false" /> |
||||
|
</Weavers> |
||||
@ -0,0 +1,30 @@ |
|||||
|
<?xml version="1.0" encoding="utf-8"?> |
||||
|
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> |
||||
|
<!-- This file was generated by Fody. Manual changes to this file will be lost when your project is rebuilt. --> |
||||
|
<xs:element name="Weavers"> |
||||
|
<xs:complexType> |
||||
|
<xs:all> |
||||
|
<xs:element name="ConfigureAwait" minOccurs="0" maxOccurs="1"> |
||||
|
<xs:complexType> |
||||
|
<xs:attribute name="ContinueOnCapturedContext" type="xs:boolean" /> |
||||
|
</xs:complexType> |
||||
|
</xs:element> |
||||
|
</xs:all> |
||||
|
<xs:attribute name="VerifyAssembly" type="xs:boolean"> |
||||
|
<xs:annotation> |
||||
|
<xs:documentation>'true' to run assembly verification (PEVerify) on the target assembly after all weavers have been executed.</xs:documentation> |
||||
|
</xs:annotation> |
||||
|
</xs:attribute> |
||||
|
<xs:attribute name="VerifyIgnoreCodes" type="xs:string"> |
||||
|
<xs:annotation> |
||||
|
<xs:documentation>A comma-separated list of error codes that can be safely ignored in assembly verification.</xs:documentation> |
||||
|
</xs:annotation> |
||||
|
</xs:attribute> |
||||
|
<xs:attribute name="GenerateXsd" type="xs:boolean"> |
||||
|
<xs:annotation> |
||||
|
<xs:documentation>'false' to turn off automatic generation of the XML Schema file.</xs:documentation> |
||||
|
</xs:annotation> |
||||
|
</xs:attribute> |
||||
|
</xs:complexType> |
||||
|
</xs:element> |
||||
|
</xs:schema> |
||||
@ -0,0 +1,19 @@ |
|||||
|
// Global using directives
|
||||
|
|
||||
|
global using Lion.AbpPro.BasicManagement.Localization; |
||||
|
global using Volo.Abp.AuditLogging; |
||||
|
global using Volo.Abp.BackgroundJobs; |
||||
|
global using Volo.Abp.FeatureManagement; |
||||
|
global using Volo.Abp.Identity; |
||||
|
global using Volo.Abp.Identity.Localization; |
||||
|
global using Volo.Abp.Localization; |
||||
|
global using Volo.Abp.Localization.ExceptionHandling; |
||||
|
global using Volo.Abp.Localization.Resources.AbpLocalization; |
||||
|
global using Volo.Abp.Modularity; |
||||
|
global using Volo.Abp.PermissionManagement; |
||||
|
global using Volo.Abp.SettingManagement; |
||||
|
global using Volo.Abp.SettingManagement.Localization; |
||||
|
global using Volo.Abp.TenantManagement; |
||||
|
global using Volo.Abp.Validation; |
||||
|
global using Volo.Abp.Validation.Localization; |
||||
|
global using Volo.Abp.VirtualFileSystem; |
||||
@ -0,0 +1,27 @@ |
|||||
|
<Project Sdk="Microsoft.NET.Sdk"> |
||||
|
|
||||
|
<PropertyGroup> |
||||
|
<TargetFramework>net6.0</TargetFramework> |
||||
|
<RootNamespace>Lion.AbpPro.BasicManagement</RootNamespace> |
||||
|
<GenerateEmbeddedFilesManifest>true</GenerateEmbeddedFilesManifest> |
||||
|
</PropertyGroup> |
||||
|
|
||||
|
<ItemGroup> |
||||
|
<PackageReference Include="Microsoft.Extensions.FileProviders.Embedded" /> |
||||
|
<PackageReference Include="Volo.Abp.Validation" /> |
||||
|
<PackageReference Include="Volo.Abp.Identity.Domain.Shared" /> |
||||
|
<PackageReference Include="Volo.Abp.BackgroundJobs.Domain.Shared" /> |
||||
|
<PackageReference Include="Volo.Abp.AuditLogging.Domain.Shared" /> |
||||
|
<PackageReference Include="Volo.Abp.TenantManagement.Domain.Shared" /> |
||||
|
<PackageReference Include="Volo.Abp.FeatureManagement.Domain.Shared" /> |
||||
|
<PackageReference Include="Volo.Abp.PermissionManagement.Domain.Shared" /> |
||||
|
<PackageReference Include="Volo.Abp.SettingManagement.Domain.Shared" /> |
||||
|
</ItemGroup> |
||||
|
|
||||
|
|
||||
|
<ItemGroup> |
||||
|
<EmbeddedResource Include="Localization\BasicManagement\*.json" /> |
||||
|
<Content Remove="Localization\BasicManagement\*.json" /> |
||||
|
</ItemGroup> |
||||
|
|
||||
|
</Project> |
||||
@ -0,0 +1,7 @@ |
|||||
|
{ |
||||
|
"culture": "ar", |
||||
|
"texts": { |
||||
|
"MyAccount": "إدارة ملفى", |
||||
|
"SamplePageMessage": "صفحة نموذجية للوحدة النمطية BasicManagement" |
||||
|
} |
||||
|
} |
||||
Some files were not shown because too many files changed in this diff
Loading…
Reference in new issue