Browse Source

👕 解决冲突

blazor2
王军 4 years ago
parent
commit
e0838b67bc
  1. 14
      .github/workflows/dotnet-unit-test.yml
  2. 4
      .gitignore
  3. 2
      aspnet-core/Directory.Build.props
  4. 3
      aspnet-core/gateways/Lion.AbpPro.WebGateway/Dockerfile
  5. 8
      aspnet-core/gateways/Lion.AbpPro.WebGateway/appsettings.Consul.json
  6. 52
      aspnet-core/gateways/Lion.AbpPro.WebGateway/appsettings.Production.json
  7. 2
      aspnet-core/modules/NotificationManagement/src/Lion.AbpPro.NotificationManagement.Application/Notifications/DistributedEventHandlers/NotificationCreatedDistributedEventHandler.cs
  8. 2
      aspnet-core/services/host/Lion.AbpPro.HttpApi.Host/Dockerfile
  9. 2
      aspnet-core/services/host/Lion.AbpPro.HttpApi.Host/Startup.cs
  10. 61
      aspnet-core/services/host/Lion.AbpPro.HttpApi.Host/appsettings.Consul.json
  11. 10
      aspnet-core/services/host/Lion.AbpPro.IdentityServer/AbpProIdentityServerModule.cs
  12. 3
      aspnet-core/services/host/Lion.AbpPro.IdentityServer/Dockerfile
  13. 2
      aspnet-core/services/host/Lion.AbpPro.IdentityServer/appsettings.Development.json
  14. 6
      aspnet-core/services/host/Lion.AbpPro.IdentityServer/appsettings.json
  15. 7
      aspnet-core/services/src/Lion.AbpPro.Application.Contracts/Permissions/AbpProPermissions.cs
  16. 3
      aspnet-core/services/src/Lion.AbpPro.Application/Users/UserAppService.cs
  17. 9
      aspnet-core/services/src/Lion.AbpPro.Domain.Shared/AbpProDomainSharedModule.cs
  18. 5
      aspnet-core/services/src/Lion.AbpPro.Domain.Shared/Lion.AbpPro.Domain.Shared.csproj
  19. 5
      aspnet-core/services/src/Lion.AbpPro.Domain.Shared/Localization/AbpPro/en.json
  20. 5
      aspnet-core/services/src/Lion.AbpPro.Domain.Shared/Localization/AbpPro/zh-Hans.json
  21. 24
      aspnet-core/services/src/Lion.AbpPro.Domain.Shared/Localization/Extensions/EnumLocalicationExtension.cs
  22. 65
      aspnet-core/services/src/Lion.AbpPro.Domain.Shared/Localization/LocalizationHelper.cs
  23. 2
      aspnet-core/services/src/Lion.AbpPro.Domain/Data/Seeds/AbpSettingDataSeedContributor.cs
  24. 4
      aspnet-core/services/src/Lion.AbpPro.Domain/Settings/AbpProSettingDefinitionProvider.cs
  25. 1
      aspnet-core/services/src/Lion.AbpPro.Domain/Settings/AbpProSettings.cs
  26. 7
      aspnet-core/services/test/Lion.AbpPro.Domain.Tests/AbpProDomainTestBase.cs
  27. 46
      aspnet-core/services/test/Lion.AbpPro.Domain.Tests/Localizations/LocalizationHelper_Tests.cs
  28. 9
      aspnet-core/services/test/Lion.AbpPro.Domain.Tests/Localizations/TestType.cs
  29. 14
      aspnet-core/shared/Lion.AbpPro.Shared.Hosting.Microservices/SharedHostingMicroserviceModule.cs
  30. 63
      docker-compose.yaml
  31. 7
      vben271/.env.production
  32. 936
      vben271/package-lock.json
  33. 3
      vben271/src/router/guard/permissionGuard.ts
  34. 3
      vben271/src/store/modules/permission.ts
  35. 4
      vben271/src/store/modules/user.ts
  36. 3
      vben271/src/views/admin/settings/Setting.vue

14
.github/workflows/dotnet.yml → .github/workflows/dotnet-unit-test.yml

@ -1,10 +1,4 @@
name: CI name: Unit Test
# on:
# push:
# tags:
# - "*"
on: on:
push: push:
branches: branches:
@ -24,9 +18,3 @@ jobs:
run: dotnet build aspnet-core/Lion.AbpPro.sln run: dotnet build aspnet-core/Lion.AbpPro.sln
- name: Test - name: Test
run: dotnet test aspnet-core/services/test/Lion.AbpPro.Domain.Tests/Lion.AbpPro.Domain.Tests.csproj run: dotnet test aspnet-core/services/test/Lion.AbpPro.Domain.Tests/Lion.AbpPro.Domain.Tests.csproj
#- name: Restore dependencies
# run: dotnet restore
#- name: Build
# run: dotnet build --no-restore
# https://blog-resouce.oss-cn-shenzhen.aliyuncs.com/images/lion.png

4
.gitignore

@ -273,3 +273,7 @@ vben271/yarn.lock
/vben271/_nginx.zip /vben271/_nginx.zip
/aspnet-core/services/host/Lion.AbpPro.HttpApi.Host/logs /aspnet-core/services/host/Lion.AbpPro.HttpApi.Host/logs
/aspnet-core/services/host/Lion.AbpPro.IdentityServer/Logs /aspnet-core/services/host/Lion.AbpPro.IdentityServer/Logs
/aspnet-core/services/host/Lion.AbpPro.IdentityServer/Logs
/aspnet-core/gateways/Lion.AbpPro.WebGateway/appsettings.Production.json
/aspnet-core/services/host/Lion.AbpPro.IdentityServer/appsettings.Production.json
/aspnet-core/services/host/Lion.AbpPro.HttpApi.Host/appsettings.Production.json

2
aspnet-core/Directory.Build.props

@ -10,7 +10,7 @@
<MicrosoftNETTestSdkVersion>17.0.0</MicrosoftNETTestSdkVersion> <MicrosoftNETTestSdkVersion>17.0.0</MicrosoftNETTestSdkVersion>
<FreeSqlVersion>2.5.200</FreeSqlVersion> <FreeSqlVersion>2.5.200</FreeSqlVersion>
<MiniProfilerVersion>4.2.22</MiniProfilerVersion> <MiniProfilerVersion>4.2.22</MiniProfilerVersion>
<MicrosoftAspNetCoreHttpAbstractionsVersion>2.2.0</MicrosoftAspNetCoreHttpAbstractionsVersion>
<SerilogVersion>2.10.0</SerilogVersion> <SerilogVersion>2.10.0</SerilogVersion>
<SerilogExtensionsLoggingVersion>3.0.1</SerilogExtensionsLoggingVersion> <SerilogExtensionsLoggingVersion>3.0.1</SerilogExtensionsLoggingVersion>
<SerilogSinksAsyncVersion>1.4.0</SerilogSinksAsyncVersion> <SerilogSinksAsyncVersion>1.4.0</SerilogSinksAsyncVersion>

3
aspnet-core/gateways/Lion.AbpPro.WebGateway/Dockerfile

@ -11,6 +11,9 @@ WORKDIR /app
# 暴露80端口 # 暴露80端口
EXPOSE 80 EXPOSE 80
# 设置时区 .net6 才有这个问题
ENV TZ=Asia/Shanghai
# 设置环境变量 # 设置环境变量
ENV ASPNETCORE_ENVIRONMENT=Production ENV ASPNETCORE_ENVIRONMENT=Production

8
aspnet-core/gateways/Lion.AbpPro.WebGateway/appsettings.Consul.json

@ -8,8 +8,8 @@
}, },
"AllowedHosts": "*", "AllowedHosts": "*",
"App": { "App": {
"SelfUrl": "http://localhost:44314", "SelfUrl": "http://120.24.194.14:8014",
"CorsOrigins": "http://localhost:4200" "CorsOrigins": "http://localhost:4200,http://120.24.194.14:8012,http://120.24.194.14:8011,http://120.24.194.14:8013"
}, },
"GlobalConfiguration": { "GlobalConfiguration": {
}, },
@ -17,7 +17,7 @@
{ {
"DownstreamPathTemplate": "/{url}", "DownstreamPathTemplate": "/{url}",
"DownstreamScheme": "http", "DownstreamScheme": "http",
"ServiceName": "Project-Service", "ServiceName": "AbpPro-Service",
"LoadBalancerOptions": { "LoadBalancerOptions": {
"Type": "LeastConnection" "Type": "LeastConnection"
}, },
@ -32,7 +32,7 @@
{ {
"DownstreamPathTemplate": "/{url}", "DownstreamPathTemplate": "/{url}",
"DownstreamScheme": "ws", "DownstreamScheme": "ws",
"ServiceName": "Project-Service", "ServiceName": "AbpPro-Service",
"LoadBalancerOptions": { "LoadBalancerOptions": {
"Type": "LeastConnection" "Type": "LeastConnection"
}, },

52
aspnet-core/gateways/Lion.AbpPro.WebGateway/appsettings.Production.json

@ -1,52 +0,0 @@
{
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "Information"
}
},
"AllowedHosts": "*",
"App": {
"SelfUrl": "http://localhost:44314",
"CorsOrigins": "http://localhost:4200"
},
"GlobalConfiguration": {
},
"Routes": [
{
"DownstreamPathTemplate": "/{url}",
"DownstreamScheme": "http",
"DownstreamHostAndPorts": [
{
"Host": "localhost",
"Port": 44315
}
],
"UpstreamPathTemplate": "/gateway/{url}",
"UpstreamHttpMethod": [
"Get",
"Post",
"Put",
"Delete"
]
},
{
"DownstreamPathTemplate": "/{url}",
"DownstreamScheme": "ws",
"DownstreamHostAndPorts": [
{
"Host": "localhost",
"Port": 44315
}
],
"UpstreamPathTemplate": "/ws/{url}",
"UpstreamHttpMethod": [
"Get",
"Post",
"Put",
"Delete"
]
}
]
}

2
aspnet-core/modules/NotificationManagement/src/Lion.AbpPro.NotificationManagement.Application/Notifications/DistributedEventHandlers/NotificationCreatedDistributedEventHandler.cs

@ -20,7 +20,7 @@ namespace Lion.AbpPro.NotificationManagement.Notifications.DistributedEventHandl
_hubAppService = hubAppService; _hubAppService = hubAppService;
} }
public Task HandleEventAsync(CreatedNotificationDistributedEvent eventData) public virtual Task HandleEventAsync(CreatedNotificationDistributedEvent eventData)
{ {
return _hubAppService.SendMessageAsync( return _hubAppService.SendMessageAsync(
eventData.NotificationEto.Title, eventData.NotificationEto.Title,

2
aspnet-core/services/host/Lion.AbpPro.HttpApi.Host/Dockerfile

@ -10,6 +10,8 @@ WORKDIR /app
# 暴露80端口 # 暴露80端口
EXPOSE 80 EXPOSE 80
# 设置时区 .net6 才有这个问题
ENV TZ=Asia/Shanghai
# 设置环境变量 # 设置环境变量
ENV ASPNETCORE_ENVIRONMENT=Production ENV ASPNETCORE_ENVIRONMENT=Production

2
aspnet-core/services/host/Lion.AbpPro.HttpApi.Host/Startup.cs

@ -1,3 +1,4 @@
using Lion.AbpPro.Localization;
using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
@ -15,6 +16,7 @@ namespace Lion.AbpPro
public void Configure(IApplicationBuilder app, IWebHostEnvironment env, ILoggerFactory loggerFactory) public void Configure(IApplicationBuilder app, IWebHostEnvironment env, ILoggerFactory loggerFactory)
{ {
app.InitializeApplication(); app.InitializeApplication();
app.InitializeLocalization();
} }
} }
} }

61
aspnet-core/services/host/Lion.AbpPro.HttpApi.Host/appsettings.Consul.json

@ -1,61 +0,0 @@
{
"Serilog": {
"MinimumLevel": {
"Default": "Information",
"Override": {
"Microsoft": "Information",
"Volo.Abp": "Information",
"Hangfire": "Information",
"DotNetCore.CAP": "Information",
"Serilog.AspNetCore": "Information"
}
}
},
"App": {
"SelfUrl": "http://localhost:44315",
"CorsOrigins": "https://*.AbpPro.com,http://localhost:4200,http://localhost:3100"
},
"ConnectionStrings": {
"Default": "Data Source=localhost;Database=LionAbpProDB20211106;uid=root;pwd=1q2w3E*;charset=utf8mb4;Allow User Variables=true;AllowLoadLocalInfile=true"
},
"Redis": {
"Configuration": "localhost,password=mypassword,defaultdatabase=1"
},
"Jwt": {
"Audience": "LionAbpPro",
//
"SecurityKey": "dzehzRz9a8asdfasfdadfasdfasdfafsdadfasbasdf=",
"Issuer": "LionAbpPro",
//
"ExpirationTime": 24
// hour
},
"Cap": {
"Enabled": "false",
"RabbitMq": {
"HostName": "localhost",
"UserName": "admin",
"Password": "admin"
}
},
"LogToElasticSearch": {
"Enabled": "false",
"ElasticSearch": {
"Url": "http://es.cn",
"IndexFormat": "companyname.projectname.development",
"UserName": "elastic",
"Password": "aVVhjQ95RP7nbwNy",
"DashboardIndex": "companyname.projectname"
}
},
"HttpClient": {
"Sts": {
"Url": "http://localhost:44354"
}
},
"Consul": {
"Enabled": true,
"Host": "http://localhost:8500",
"Service": "Project-Service"
}
}

10
aspnet-core/services/host/Lion.AbpPro.IdentityServer/AbpProIdentityServerModule.cs

@ -95,21 +95,13 @@ namespace Lion.AbpPro
} }
private void ConfigureOther(IConfiguration configuration) private void ConfigureOther(IConfiguration configuration)
{
Configure<AppUrlOptions>(options =>
{ {
options.Applications["MVC"].RootUrl = configuration["App:SelfUrl"];
options.RedirectAllowedUrls.AddRange(configuration["App:RedirectAllowedUrls"].Split(','));
options.Applications["Angular"].RootUrl = configuration["App:ClientUrl"];
options.Applications["Angular"].Urls[AccountUrlNames.PasswordReset] = "account/reset-password";
});
Configure<AbpBackgroundJobOptions>(options => { options.IsJobExecutionEnabled = false; }); Configure<AbpBackgroundJobOptions>(options => { options.IsJobExecutionEnabled = false; });
Configure<AbpAuditingOptions>(options => Configure<AbpAuditingOptions>(options =>
{ {
//options.IsEnabledForGetRequests = true; //options.IsEnabledForGetRequests = true;
options.ApplicationName = "AuthServer"; options.ApplicationName = "IdentityServer";
}); });
} }

3
aspnet-core/services/host/Lion.AbpPro.IdentityServer/Dockerfile

@ -11,6 +11,9 @@ WORKDIR /app
# 暴露80端口 # 暴露80端口
EXPOSE 80 EXPOSE 80
# 设置时区 .net6 才有这个问题
ENV TZ=Asia/Shanghai
# 设置环境变量 # 设置环境变量
ENV ASPNETCORE_ENVIRONMENT=Production ENV ASPNETCORE_ENVIRONMENT=Production

2
aspnet-core/services/host/Lion.AbpPro.IdentityServer/appsettings.Development.json

@ -1,2 +0,0 @@
{
}

6
aspnet-core/services/host/Lion.AbpPro.IdentityServer/appsettings.json

@ -1,9 +1,7 @@
{ {
"App": { "App": {
"SelfUrl": "https://localhost:44354", "SelfUrl": "http://localhost:44354",
"ClientUrl": "http://localhost:4200", "CorsOrigins": "https://*.AbpPro.com,http://localhost:4200,https://localhost:44307,https://localhost:44315"
"CorsOrigins": "https://*.AbpPro.com,http://localhost:4200,https://localhost:44307,https://localhost:44315",
"RedirectAllowedUrls": "http://localhost:4200,https://localhost:44307"
}, },
"ConnectionStrings": { "ConnectionStrings": {
"Default": "Data Source=localhost;Database=LionAbpProDB;uid=root;pwd=1q2w3E*;charset=utf8mb4;Allow User Variables=true;AllowLoadLocalInfile=true" "Default": "Data Source=localhost;Database=LionAbpProDB;uid=root;pwd=1q2w3E*;charset=utf8mb4;Allow User Variables=true;AllowLoadLocalInfile=true"

7
aspnet-core/services/src/Lion.AbpPro.Application.Contracts/Permissions/AbpProPermissions.cs

@ -4,13 +4,6 @@ namespace Lion.AbpPro.Permissions
{ {
public static class AbpProPermissions public static class AbpProPermissions
{ {
public const string GroupName = "AbpPro";
public const string AbpIdentityGroupName = "AbpIdentity";
//Add your own permission names. Example:
//public const string MyPermission1 = GroupName + ".MyPermission1";
/// <summary> /// <summary>
/// 系统管理扩展权限 /// 系统管理扩展权限
/// </summary> /// </summary>

3
aspnet-core/services/src/Lion.AbpPro.Application/Users/UserAppService.cs

@ -66,6 +66,8 @@ namespace Lion.AbpPro.Users
[Authorize(IdentityPermissions.Users.Create)] [Authorize(IdentityPermissions.Users.Create)]
public async Task<IdentityUserDto> CreateAsync(IdentityUserCreateDto input) public async Task<IdentityUserDto> CreateAsync(IdentityUserCreateDto input)
{ {
// abp 5.0 之后新增字段,是否运行用户登录,默认设置为true
input.IsActive = true;
return await _identityUserAppService.CreateAsync(input); return await _identityUserAppService.CreateAsync(input);
} }
@ -77,6 +79,7 @@ namespace Lion.AbpPro.Users
[Authorize(IdentityPermissions.Users.Update)] [Authorize(IdentityPermissions.Users.Update)]
public virtual async Task<IdentityUserDto> UpdateAsync(UpdateUserInput input) public virtual async Task<IdentityUserDto> UpdateAsync(UpdateUserInput input)
{ {
input.UserInfo.IsActive = true;
return await _identityUserAppService.UpdateAsync(input.UserId, input.UserInfo); return await _identityUserAppService.UpdateAsync(input.UserId, input.UserInfo);
} }

9
aspnet-core/services/src/Lion.AbpPro.Domain.Shared/AbpProDomainSharedModule.cs

@ -1,6 +1,10 @@
using Lion.AbpPro.Localization; using Lion.AbpPro.Localization;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Localization;
using Volo.Abp;
using Volo.Abp.AuditLogging; using Volo.Abp.AuditLogging;
using Volo.Abp.BackgroundJobs; using Volo.Abp.BackgroundJobs;
using Volo.Abp.Data;
using Volo.Abp.FeatureManagement; using Volo.Abp.FeatureManagement;
using Volo.Abp.Identity; using Volo.Abp.Identity;
using Volo.Abp.Identity.Localization; using Volo.Abp.Identity.Localization;
@ -12,6 +16,7 @@ using Volo.Abp.Modularity;
using Volo.Abp.PermissionManagement; using Volo.Abp.PermissionManagement;
using Volo.Abp.SettingManagement; using Volo.Abp.SettingManagement;
using Volo.Abp.TenantManagement; using Volo.Abp.TenantManagement;
using Volo.Abp.Threading;
using Volo.Abp.Timing.Localization.Resources.AbpTiming; using Volo.Abp.Timing.Localization.Resources.AbpTiming;
using Volo.Abp.Validation; using Volo.Abp.Validation;
using Volo.Abp.Validation.Localization; using Volo.Abp.Validation.Localization;
@ -61,6 +66,10 @@ namespace Lion.AbpPro
{ {
options.MapCodeNamespace("AbpPro", typeof(AbpProResource)); options.MapCodeNamespace("AbpPro", typeof(AbpProResource));
}); });
} }
} }
} }

5
aspnet-core/services/src/Lion.AbpPro.Domain.Shared/Lion.AbpPro.Domain.Shared.csproj

@ -9,6 +9,7 @@
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.Http.Abstractions" Version="$(MicrosoftAspNetCoreHttpAbstractionsVersion)" />
<PackageReference Include="Volo.Abp.Identity.Domain.Shared" Version="$(AbpPackageVersion)" /> <PackageReference Include="Volo.Abp.Identity.Domain.Shared" Version="$(AbpPackageVersion)" />
<PackageReference Include="Volo.Abp.IdentityServer.Domain.Shared" Version="$(AbpPackageVersion)" /> <PackageReference Include="Volo.Abp.IdentityServer.Domain.Shared" Version="$(AbpPackageVersion)" />
<PackageReference Include="Volo.Abp.BackgroundJobs.Domain.Shared" Version="$(AbpPackageVersion)" /> <PackageReference Include="Volo.Abp.BackgroundJobs.Domain.Shared" Version="$(AbpPackageVersion)" />
@ -31,8 +32,4 @@
<ProjectReference Include="..\..\..\frameworks\Extensions\src\Lion.AbpPro.Extension\Lion.AbpPro.Extension.csproj" /> <ProjectReference Include="..\..\..\frameworks\Extensions\src\Lion.AbpPro.Extension\Lion.AbpPro.Extension.csproj" />
</ItemGroup> </ItemGroup>
</Project> </Project>

5
aspnet-core/services/src/Lion.AbpPro.Domain.Shared/Localization/AbpPro/en.json

@ -24,6 +24,9 @@
"Setting.Group.System": "System", "Setting.Group.System": "System",
"Setting.Group.Other": "Other", "Setting.Group.Other": "Other",
"DisplayName:Setting.Group.Other.Github": "Github", "DisplayName:Setting.Group.Other.Github": "Github",
"Description:Setting.Group.Other.Github": "Github" "Description:Setting.Group.Other.Github": "Github",
"Enum:TestType:Created:1":"Created",
"Enum:TestType:Cancel:1":"Cancel",
"Enum:TestType:Delete:1":"Delete"
} }
} }

5
aspnet-core/services/src/Lion.AbpPro.Domain.Shared/Localization/AbpPro/zh-Hans.json

@ -24,6 +24,9 @@
"Setting.Group.System": "系统", "Setting.Group.System": "系统",
"Setting.Group.Other": "其它", "Setting.Group.Other": "其它",
"DisplayName:Setting.Group.Other.Github": "Github", "DisplayName:Setting.Group.Other.Github": "Github",
"Description:Setting.Group.Other.Github": "Github" "Description:Setting.Group.Other.Github": "Github",
"Enum:TestType:Created:1":"创建",
"Enum:TestType:Cancel:1":"取消",
"Enum:TestType:Delete:1":"删除"
} }
} }

24
aspnet-core/services/src/Lion.AbpPro.Domain.Shared/Localization/Extensions/EnumLocalicationExtension.cs

@ -0,0 +1,24 @@
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using Lion.AbpPro.Localization;
namespace System
{
public static class EnumLocalicationExtension
{
public static string ToLocalicationDescription(this Enum value)
{
var member =
((IEnumerable<MemberInfo>)value.GetType().GetMember(value.ToString()))
.FirstOrDefault<MemberInfo>();
var localKey =$"Enum:{member.ReflectedType.Name}:{value}:{Convert.ToInt16(value)}";
if (localKey.IsNullOrWhiteSpace())
{
throw new ArgumentException();
}
return !(member != (MemberInfo)null) ? value.ToString() : LocalizationHelper.L[localKey];
}
}
}

65
aspnet-core/services/src/Lion.AbpPro.Domain.Shared/Localization/LocalizationHelper.cs

@ -0,0 +1,65 @@
using System;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Localization;
using Volo.Abp;
using Volo.Abp.DependencyInjection;
using Microsoft.AspNetCore.Builder;
namespace Lion.AbpPro.Localization
{
public static class LocalizationHelper
{
private static IServiceProvider ServiceProvider { get; set; }
private static IAbpLazyServiceProvider _lazyServiceProvider;
private static IAbpLazyServiceProvider LazyServiceProvider
{
get
{
return _lazyServiceProvider ??= ServiceProvider.GetRequiredService<IAbpLazyServiceProvider>();
}
}
private static IStringLocalizerFactory StringLocalizerFactory => LazyServiceProvider.LazyGetRequiredService<IStringLocalizerFactory>();
private static IStringLocalizer _localizer;
private static Type _localizationResource = typeof(AbpProResource);
public static IStringLocalizer L => _localizer ??= CreateLocalizer();
public static Type LocalizationResource
{
get => _localizationResource;
set
{
_localizationResource = value;
_localizer = null;
}
}
private static IStringLocalizer CreateLocalizer()
{
if (LocalizationResource != null)
{
return StringLocalizerFactory.Create(LocalizationResource);
}
return StringLocalizerFactory.CreateDefaultOrNull() ??
throw new AbpException(message: "Localizer is null");
}
public static void InitializeLocalization(this IApplicationBuilder app)
{
ServiceProvider = app.ApplicationServices;
}
public static void InitializeLocalization(this IServiceProvider serviceProvider)
{
ServiceProvider = serviceProvider;
}
}
}

2
aspnet-core/services/src/Lion.AbpPro.Domain/Data/Seeds/AbpSettingDataSeedContributor.cs

@ -9,7 +9,7 @@ namespace Lion.AbpPro.Data.Seeds
{ {
private readonly ISettingManager _settingManager; private readonly ISettingManager _settingManager;
private const string DefaultLanguageKey = "Abp.Localization.DefaultLanguage"; private const string DefaultLanguageKey = "Abp.Localization.DefaultLanguage";
private const string DefaultLanguage = "zh-hans"; private const string DefaultLanguage = "zh-Hans";
public AbpSettingDataSeedContributor(ISettingManager settingManager) public AbpSettingDataSeedContributor(ISettingManager settingManager)
{ {
_settingManager = settingManager; _settingManager = settingManager;

4
aspnet-core/services/src/Lion.AbpPro.Domain/Settings/AbpProSettingDefinitionProvider.cs

@ -28,13 +28,13 @@ namespace Lion.AbpPro.Settings
.WithProperty(AbpProSettings.Group.Defalut, .WithProperty(AbpProSettings.Group.Defalut,
AbpProSettings.Group.SystemManagement) AbpProSettings.Group.SystemManagement)
.WithProperty(AbpProSettings.ControlType.Defalut, .WithProperty(AbpProSettings.ControlType.Defalut,
AbpProSettings.ControlType.TypeCheckBox); AbpProSettings.ControlType.Number);
context.GetOrNull("Abp.Identity.Password.RequiredUniqueChars") context.GetOrNull("Abp.Identity.Password.RequiredUniqueChars")
.WithProperty(AbpProSettings.Group.Defalut, .WithProperty(AbpProSettings.Group.Defalut,
AbpProSettings.Group.SystemManagement) AbpProSettings.Group.SystemManagement)
.WithProperty(AbpProSettings.ControlType.Defalut, .WithProperty(AbpProSettings.ControlType.Defalut,
AbpProSettings.ControlType.TypeCheckBox); AbpProSettings.ControlType.Number);
context.GetOrNull("Abp.Identity.Password.RequireNonAlphanumeric") context.GetOrNull("Abp.Identity.Password.RequireNonAlphanumeric")
.WithProperty(AbpProSettings.Group.Defalut, .WithProperty(AbpProSettings.Group.Defalut,

1
aspnet-core/services/src/Lion.AbpPro.Domain/Settings/AbpProSettings.cs

@ -12,6 +12,7 @@ namespace Lion.AbpPro.Settings
public const string Defalut = "Type"; public const string Defalut = "Type";
public const string TypeText = "Text"; public const string TypeText = "Text";
public const string TypeCheckBox = "CheckBox"; public const string TypeCheckBox = "CheckBox";
public const string Number = "Number";
} }
/// <summary> /// <summary>

7
aspnet-core/services/test/Lion.AbpPro.Domain.Tests/AbpProDomainTestBase.cs

@ -1,7 +1,12 @@
using Lion.AbpPro.Localization;
namespace Lion.AbpPro namespace Lion.AbpPro
{ {
public abstract class AbpProDomainTestBase : AbpProTestBase<AbpProDomainTestModule> public abstract class AbpProDomainTestBase : AbpProTestBase<AbpProDomainTestModule>
{ {
public AbpProDomainTestBase()
{
ServiceProvider.InitializeLocalization();;
}
} }
} }

46
aspnet-core/services/test/Lion.AbpPro.Domain.Tests/Localizations/LocalizationHelper_Tests.cs

@ -0,0 +1,46 @@
using System;
using Lion.AbpPro.Localization;
using Shouldly;
using Volo.Abp.Localization;
using Xunit;
namespace Lion.AbpPro.Localizations
{
public class LocalizationHelper_Tests:AbpProDomainTestBase
{
[Fact]
public void Test_LocalizationHelper_L_OK()
{
using (CultureHelper.Use("en"))
{
var enValue = LocalizationHelper.L["Welcome"];
enValue.Value.ShouldBe("Welcome");
}
using (CultureHelper.Use("zh-Hans"))
{
var enValue = LocalizationHelper.L["Welcome"];
enValue.Value.ShouldBe("欢迎");
}
}
[Fact]
public void Test_ToLocalicationDescription_L_OK()
{
var test = new {TestType=TestType.Cancel};
using (CultureHelper.Use("en"))
{
var enValue = test.TestType.ToLocalicationDescription();
enValue.ShouldBe("Cancel");
}
using (CultureHelper.Use("zh-Hans"))
{
var enValue = test.TestType.ToLocalicationDescription();
enValue.ShouldBe("取消");
}
}
}
}

9
aspnet-core/services/test/Lion.AbpPro.Domain.Tests/Localizations/TestType.cs

@ -0,0 +1,9 @@
namespace Lion.AbpPro.Localizations
{
public enum TestType
{
Created,
Cancel,
Delete
}
}

14
aspnet-core/shared/Lion.AbpPro.Shared.Hosting.Microservices/SharedHostingMicroserviceModule.cs

@ -6,6 +6,7 @@ using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting; using Microsoft.Extensions.Hosting;
using Volo.Abp.AspNetCore.ExceptionHandling; using Volo.Abp.AspNetCore.ExceptionHandling;
using Volo.Abp.AspNetCore.Mvc.AntiForgery;
using Volo.Abp.Autofac; using Volo.Abp.Autofac;
using Volo.Abp.Localization; using Volo.Abp.Localization;
using Volo.Abp.Modularity; using Volo.Abp.Modularity;
@ -31,10 +32,21 @@ namespace Lion.AbpPro
ConfigureUrls(configuration); ConfigureUrls(configuration);
ConfigureAbpExceptions(context); ConfigureAbpExceptions(context);
ConfigureConsul(context, configuration); ConfigureConsul(context, configuration);
ConfigAntiForgery();
} }
/// <summary>
/// 阻止跨站点请求伪造
/// https://docs.microsoft.com/zh-cn/aspnet/core/security/anti-request-forgery?view=aspnetcore-6.0
/// </summary>
private void ConfigAntiForgery()
{
Configure<AbpAntiForgeryOptions>(options =>
{
options.AutoValidate = false;
});
}
private void ConfigureConsul(ServiceConfigurationContext context, private void ConfigureConsul(ServiceConfigurationContext context,
IConfiguration configuration) IConfiguration configuration)
{ {

63
docker-compose.yaml

@ -0,0 +1,63 @@
version: '3'
services:
mysql:
image: mysql:5.7.26
# network_mode: "host" # 如果需要容器使用宿主机IP(内网IP),则可以配置此项
container_name: abp-pro-mysql # 指定容器名称,如果不设置此参数,则由系统自动生成
restart: always # 设置容器自启模式
command: mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci # 设置utf8字符集
environment:
- TZ=Asia/Shanghai # 设置容器时区与宿主机保持一致
- MYSQL_ROOT_PASSWORD=1q2w3E* # 设置root密码
volumes:
- /etc/localtime:/etc/localtime:ro # 设置容器时区与宿主机保持一致
ports:
- "3307:3306"
networks:
- lionAbpPro
redis:
image: redis:5.0.4
container_name: abp-pro-redis
restart: always
command: redis-server # 启动redis命令
environment:
- TZ=Asia/Shanghai
volumes:
- /etc/localtime:/etc/localtime:ro # 设置容器时区与宿主机保持一致
ports:
- "6380:6379"
networks:
- lionAbpPro
rabbitMq:
image: rabbitmq:management
container_name: abp-pro-rabbitMq
restart: always
ports:
- "5673:5672"
- "15673:15672"
environment:
- RABBITMQ_DEFAULT_USER=admin
- RABBITMQ_DEFAULT_PASS=1q2w3E*
networks:
- lionAbpPro
consul:
image: consul
ports:
- 8300:8300
- 8301:8301
- 8301:8301/udp
- 8302:8302
- 8302:8302/udp
- 8400:8400
- 8500:8500
- 53:53/udp
command: agent -server -bind=0.0.0.0 -client=0.0.0.0 -node=consul_Server1 -bootstrap-expect=1 -ui
networks:
- lionAbpPro
networks:
lionAbpPro:
driver: bridge

7
vben271/.env.production

@ -36,11 +36,12 @@ VITE_LEGACY = false
# 认证授权服务器地址 # 认证授权服务器地址
VITE_AUTH_URL= http://localhost:44354 VITE_AUTH_URL= http://120.24.194.14:8013
# 接口地址 # 接口地址
VITE_API_URL= http://localhost:44314/gateway VITE_API_URL= http://120.24.194.14:8014/gateway
# WEBSOCKE 地址 # WEBSOCKE 地址
VITE_WEBSOCKE_URL= http://localhost:44314/ws VITE_WEBSOCKE_URL= http://120.24.194.14:8014/ws

936
vben271/package-lock.json

File diff suppressed because it is too large

3
vben271/src/router/guard/permissionGuard.ts

@ -50,7 +50,8 @@ export function createPermissionGuard(router: Router) {
return; return;
} }
} else { } else {
router.replace(PageEnum.BASE_LOGIN); next({path:PageEnum.BASE_LOGIN})
//router.replace(PageEnum.BASE_LOGIN);
return; return;
} }

3
vben271/src/store/modules/permission.ts

@ -165,6 +165,7 @@ export const usePermissionStore = defineStore({
case PermissionModeEnum.ROUTE_MAPPING: case PermissionModeEnum.ROUTE_MAPPING:
const permissions = this.getPermCodeList; const permissions = this.getPermCodeList;
const roleRouteFilter = (route: AppRouteRecordRaw) => { const roleRouteFilter = (route: AppRouteRecordRaw) => {
const { meta } = route; const { meta } = route;
const { policy } = meta || {}; const { policy } = meta || {};
@ -173,6 +174,8 @@ export const usePermissionStore = defineStore({
? true ? true
: permissions.includes(policy as string); : permissions.includes(policy as string);
}; };
console.log(roleRouteFilter);
console.log(asyncRoutes);
routes = filter(asyncRoutes, roleRouteFilter); routes = filter(asyncRoutes, roleRouteFilter);
routes = routes.filter(roleRouteFilter); routes = routes.filter(roleRouteFilter);
routes = routes.filter((e) => e.path.startsWith('/dashboard') || e.children?.length != 0); routes = routes.filter((e) => e.path.startsWith('/dashboard') || e.children?.length != 0);

4
vben271/src/store/modules/user.ts

@ -157,6 +157,10 @@ export const useUserStore = defineStore({
const application = await getAbpApplicationConfiguration(); const application = await getAbpApplicationConfiguration();
const permissionStore = usePermissionStore(); const permissionStore = usePermissionStore();
const grantPolicy = Object.keys(application.auth?.grantedPolicies as object); const grantPolicy = Object.keys(application.auth?.grantedPolicies as object);
if (grantPolicy.length == 0) {
router.replace(PageEnum.BASE_LOGIN);
return;
}
permissionStore.setPermCodeList(grantPolicy); permissionStore.setPermCodeList(grantPolicy);
}, },

3
vben271/src/views/admin/settings/Setting.vue

@ -10,6 +10,9 @@
<div v-if="setting.type === 'Text'"> <div v-if="setting.type === 'Text'">
<a-input v-model:value="setting.value" style="width: 80%" /> <a-input v-model:value="setting.value" style="width: 80%" />
</div> </div>
<div v-if="setting.type === 'Number'">
<a-input-number v-model:value="setting.value" :min="1" :max="10" />
</div>
<div v-if="setting.type === 'CheckBox'"> <div v-if="setting.type === 'CheckBox'">
<a-checkbox <a-checkbox
:checked="!(setting.value == 'false' || setting.value == false)" :checked="!(setting.value == 'false' || setting.value == false)"

Loading…
Cancel
Save