Browse Source

Merge pull request #896 from colinin/fix-openiddict

Fix openiddict
pull/914/head
yx lin 2 years ago
committed by GitHub
parent
commit
6bd64205a9
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 3
      apps/vue/src/store/modules/user.ts
  2. 9
      aspnet-core/LINGYUN.MicroService.SingleProject.sln
  3. 25
      aspnet-core/modules/identity/LINGYUN.Abp.Identity.OrganizaztionUnits/LINGYUN/Abp/Identity/OrganizaztionUnits/OrganizationUnitClaimsPrincipalContributor.cs
  4. 3
      aspnet-core/modules/openIddict/LINGYUN.Abp.OpenIddict.AspNetCore/FodyWeavers.xml
  5. 30
      aspnet-core/modules/openIddict/LINGYUN.Abp.OpenIddict.AspNetCore/FodyWeavers.xsd
  6. 19
      aspnet-core/modules/openIddict/LINGYUN.Abp.OpenIddict.AspNetCore/LINGYUN.Abp.OpenIddict.AspNetCore.csproj
  7. 20
      aspnet-core/modules/openIddict/LINGYUN.Abp.OpenIddict.AspNetCore/LINGYUN/Abp/OpenIddict/AspNetCore/AbpOpenIddictAspNetCoreModule.cs
  8. 33
      aspnet-core/modules/openIddict/LINGYUN.Abp.OpenIddict.AspNetCore/LINGYUN/Abp/OpenIddict/AspNetCore/AvatarUrlClaimsPrincipalContributor.cs
  9. 68
      aspnet-core/modules/openIddict/LINGYUN.Abp.OpenIddict.AspNetCore/LINGYUN/Abp/OpenIddict/AspNetCore/Controllers/UserInfoController.cs
  10. 4
      aspnet-core/modules/webhooks/LINGYUN.Abp.WebhooksManagement.Application/LINGYUN/Abp/WebhooksManagement/WebhookSubscriptionAppService.cs
  11. 2
      aspnet-core/modules/webhooks/LINGYUN.Abp.WebhooksManagement.Domain/LINGYUN/Abp/WebhooksManagement/DynamicWebhookDefinitionStore.cs
  12. 7
      aspnet-core/modules/webhooks/LINGYUN.Abp.WebhooksManagement.Domain/LINGYUN/Abp/WebhooksManagement/DynamicWebhookDefinitionStoreInMemoryCache.cs
  13. 3
      aspnet-core/modules/webhooks/LINGYUN.Abp.WebhooksManagement.Domain/LINGYUN/Abp/WebhooksManagement/IWebhookDefinitionRecordRepository.cs
  14. 12
      aspnet-core/modules/webhooks/LINGYUN.Abp.WebhooksManagement.EntityFrameworkCore/LINGYUN/Abp/WebhooksManagement/EntityFrameworkCore/EfCoreWebhookDefinitionRecordRepository.cs
  15. 1
      aspnet-core/services/LY.MicroService.Applications.Single/LY.MicroService.Applications.Single.csproj
  16. 1
      aspnet-core/services/LY.MicroService.Applications.Single/MicroServiceApplicationsSingleModule.Configure.cs
  17. 3
      aspnet-core/services/LY.MicroService.Applications.Single/MicroServiceApplicationsSingleModule.cs
  18. 21
      aspnet-core/services/LY.MicroService.Applications.Single/Properties/PublishProfiles/FolderProfile.pubxml
  19. 11
      aspnet-core/services/LY.MicroService.Applications.Single/Properties/PublishProfiles/FolderProfile.pubxml.user

3
apps/vue/src/store/modules/user.ts

@ -201,6 +201,9 @@ export const useUserStore = defineStore({
if (userInfo?.avatarUrl) {
outgoingUserInfo.avatar = formatUrl(userInfo.avatarUrl);
}
if (userInfo?.picture) {
outgoingUserInfo.avatar = formatUrl(userInfo.picture);
}
this.setUserInfo(outgoingUserInfo);
return outgoingUserInfo;

9
aspnet-core/LINGYUN.MicroService.SingleProject.sln

@ -492,7 +492,9 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.AspNetCore.Mvc.
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.AspNetCore.Mvc.Idempotent.Wrapper", "framework\mvc\LINGYUN.Abp.AspNetCore.Mvc.Idempotent.Wrapper\LINGYUN.Abp.AspNetCore.Mvc.Idempotent.Wrapper.csproj", "{0D34162C-0CE3-4D7B-B19A-4786C616D0B3}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LINGYUN.Abp.AspNetCore.Wrapper", "framework\common\LINGYUN.Abp.AspNetCore.Wrapper\LINGYUN.Abp.AspNetCore.Wrapper.csproj", "{FDBA1B4A-CC5D-4710-AB8C-FA5A91B91BDE}"
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LINGYUN.Abp.AspNetCore.Wrapper", "framework\common\LINGYUN.Abp.AspNetCore.Wrapper\LINGYUN.Abp.AspNetCore.Wrapper.csproj", "{FDBA1B4A-CC5D-4710-AB8C-FA5A91B91BDE}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LINGYUN.Abp.OpenIddict.AspNetCore", "modules\openIddict\LINGYUN.Abp.OpenIddict.AspNetCore\LINGYUN.Abp.OpenIddict.AspNetCore.csproj", "{6026DAE3-F2AD-4F6B-99EF-EEAAA5873861}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@ -1292,6 +1294,10 @@ Global
{FDBA1B4A-CC5D-4710-AB8C-FA5A91B91BDE}.Debug|Any CPU.Build.0 = Debug|Any CPU
{FDBA1B4A-CC5D-4710-AB8C-FA5A91B91BDE}.Release|Any CPU.ActiveCfg = Release|Any CPU
{FDBA1B4A-CC5D-4710-AB8C-FA5A91B91BDE}.Release|Any CPU.Build.0 = Release|Any CPU
{6026DAE3-F2AD-4F6B-99EF-EEAAA5873861}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{6026DAE3-F2AD-4F6B-99EF-EEAAA5873861}.Debug|Any CPU.Build.0 = Debug|Any CPU
{6026DAE3-F2AD-4F6B-99EF-EEAAA5873861}.Release|Any CPU.ActiveCfg = Release|Any CPU
{6026DAE3-F2AD-4F6B-99EF-EEAAA5873861}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@ -1534,6 +1540,7 @@ Global
{3690518A-D6C3-42CC-AEC2-6D48C6987F68} = {5531E2F2-2FC2-45A0-93C7-7FC6F6A4F0AD}
{0D34162C-0CE3-4D7B-B19A-4786C616D0B3} = {5531E2F2-2FC2-45A0-93C7-7FC6F6A4F0AD}
{FDBA1B4A-CC5D-4710-AB8C-FA5A91B91BDE} = {40A9F0DB-66AA-42A8-8670-9DD6DA992103}
{6026DAE3-F2AD-4F6B-99EF-EEAAA5873861} = {7C714185-D3D9-4D94-B5CB-D857A0091F04}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {711A43C0-A2F8-4E5C-9B9F-F2551E4B3FF1}

25
aspnet-core/modules/identity/LINGYUN.Abp.Identity.OrganizaztionUnits/LINGYUN/Abp/Identity/OrganizaztionUnits/OrganizationUnitClaimsPrincipalContributor.cs

@ -11,7 +11,7 @@ namespace LINGYUN.Abp.Identity.OrganizationUnits;
public class OrganizationUnitClaimsPrincipalContributor : IAbpClaimsPrincipalContributor, ITransientDependency
{
// https://github.com/dotnet/aspnetcore/blob/main/src/Identity/Extensions.Core/src/UserClaimsPrincipalFactory.cs#L74
private static string IdentityAuthenticationType => "Identity.Application";
// private static string IdentityAuthenticationType => "Identity.Application";
private readonly IIdentityUserRepository _identityUserRepository;
private readonly IIdentityRoleRepository _identityRoleRepository;
@ -26,8 +26,15 @@ public class OrganizationUnitClaimsPrincipalContributor : IAbpClaimsPrincipalCon
public async virtual Task ContributeAsync(AbpClaimsPrincipalContributorContext context)
{
var claimsIdentity = context.ClaimsPrincipal.Identities.First(x => x.AuthenticationType == IdentityAuthenticationType);
var claimsIdentity = context.ClaimsPrincipal.Identities.FirstOrDefault();
if (claimsIdentity == null)
{
return;
}
if (claimsIdentity.FindAll(x => x.Type == AbpOrganizationUnitClaimTypes.OrganizationUnit).Any())
{
return;
}
var userId = claimsIdentity.FindUserId();
if (!userId.HasValue)
{
@ -38,7 +45,11 @@ public class OrganizationUnitClaimsPrincipalContributor : IAbpClaimsPrincipalCon
foreach (var userOu in userOus)
{
claimsIdentity.AddClaim(new Claim(AbpOrganizationUnitClaimTypes.OrganizationUnit, userOu.Id.ToString()));
var userOuId = userOu.Id.ToString();
if (!claimsIdentity.HasClaim(AbpOrganizationUnitClaimTypes.OrganizationUnit, userOuId))
{
claimsIdentity.AddClaim(new Claim(AbpOrganizationUnitClaimTypes.OrganizationUnit, userOuId));
}
}
var userRoles = claimsIdentity
@ -49,7 +60,11 @@ public class OrganizationUnitClaimsPrincipalContributor : IAbpClaimsPrincipalCon
var roleOus = await _identityRoleRepository.GetOrganizationUnitsAsync(userRoles);
foreach (var roleOu in roleOus)
{
claimsIdentity.AddClaim(new Claim(AbpOrganizationUnitClaimTypes.OrganizationUnit, roleOu.Id.ToString()));
var roleOuId = roleOu.Id.ToString();
if (!claimsIdentity.HasClaim(AbpOrganizationUnitClaimTypes.OrganizationUnit, roleOuId))
{
claimsIdentity.AddClaim(new Claim(AbpOrganizationUnitClaimTypes.OrganizationUnit, roleOuId));
}
}
context.ClaimsPrincipal.AddIdentityIfNotContains(claimsIdentity);

3
aspnet-core/modules/openIddict/LINGYUN.Abp.OpenIddict.AspNetCore/FodyWeavers.xml

@ -0,0 +1,3 @@
<Weavers xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="FodyWeavers.xsd">
<ConfigureAwait ContinueOnCapturedContext="false" />
</Weavers>

30
aspnet-core/modules/openIddict/LINGYUN.Abp.OpenIddict.AspNetCore/FodyWeavers.xsd

@ -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>

19
aspnet-core/modules/openIddict/LINGYUN.Abp.OpenIddict.AspNetCore/LINGYUN.Abp.OpenIddict.AspNetCore.csproj

@ -0,0 +1,19 @@
<Project Sdk="Microsoft.NET.Sdk">
<Import Project="..\..\..\common.props" />
<Import Project="..\..\..\configureawait.props" />
<PropertyGroup>
<TargetFramework>net7.0</TargetFramework>
<RootNamespace />
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Volo.Abp.OpenIddict.AspNetCore" Version="$(VoloAbpPackageVersion)" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\identity\LINGYUN.Abp.Identity.Domain.Shared\LINGYUN.Abp.Identity.Domain.Shared.csproj" />
</ItemGroup>
</Project>

20
aspnet-core/modules/openIddict/LINGYUN.Abp.OpenIddict.AspNetCore/LINGYUN/Abp/OpenIddict/AspNetCore/AbpOpenIddictAspNetCoreModule.cs

@ -0,0 +1,20 @@
using LINGYUN.Abp.Identity;
using Microsoft.Extensions.DependencyInjection;
using Volo.Abp.Modularity;
using VoloAbpOpenIddictAspNetCoreModule = Volo.Abp.OpenIddict.AbpOpenIddictAspNetCoreModule;
namespace LINGYUN.Abp.OpenIddict.AspNetCore;
[DependsOn(
typeof(AbpIdentityDomainSharedModule),
typeof(VoloAbpOpenIddictAspNetCoreModule))]
public class AbpOpenIddictAspNetCoreModule : AbpModule
{
public override void PreConfigureServices(ServiceConfigurationContext context)
{
PreConfigure<OpenIddictServerBuilder>(builder =>
{
builder.RegisterClaims(new[] { IdentityConsts.ClaimType.Avatar.Name } );
});
}
}

33
aspnet-core/modules/openIddict/LINGYUN.Abp.OpenIddict.AspNetCore/LINGYUN/Abp/OpenIddict/AspNetCore/AvatarUrlClaimsPrincipalContributor.cs

@ -0,0 +1,33 @@
using LINGYUN.Abp.Identity;
using Microsoft.Extensions.DependencyInjection;
using System.Linq;
using System.Security.Claims;
using System.Security.Principal;
using System.Threading.Tasks;
using Volo.Abp.DependencyInjection;
using Volo.Abp.Identity;
using Volo.Abp.Security.Claims;
namespace LINGYUN.Abp.OpenIddict.AspNetCore;
public class AvatarUrlClaimsPrincipalContributor : IAbpClaimsPrincipalContributor, ITransientDependency
{
public async virtual Task ContributeAsync(AbpClaimsPrincipalContributorContext context)
{
var identity = context.ClaimsPrincipal.Identities.FirstOrDefault();
if (identity != null)
{
if (identity.HasClaim(x => x.Type == IdentityConsts.ClaimType.Avatar.Name))
{
return;
}
var userManager = context.ServiceProvider.GetRequiredService<IdentityUserManager>();
var user = await userManager.GetUserAsync(context.ClaimsPrincipal);
var userClaims = await userManager.GetClaimsAsync(user);
var userAvatarUrl = userClaims.FirstOrDefault(x => x.Type == IdentityConsts.ClaimType.Avatar.Name);
if (userAvatarUrl != null)
{
identity.AddIfNotContains(new Claim(IdentityConsts.ClaimType.Avatar.Name, userAvatarUrl.Value));
}
}
}
}

68
aspnet-core/modules/openIddict/LINGYUN.Abp.OpenIddict.AspNetCore/LINGYUN/Abp/OpenIddict/AspNetCore/Controllers/UserInfoController.cs

@ -0,0 +1,68 @@
using LINGYUN.Abp.Identity;
using OpenIddict.Abstractions;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Volo.Abp.DependencyInjection;
using Volo.Abp.Security.Claims;
using VoloUserInfoController = Volo.Abp.OpenIddict.Controllers.UserInfoController;
namespace LINGYUN.Abp.OpenIddict.AspNetCore.Controllers;
[ExposeServices(
typeof(VoloUserInfoController),
typeof(UserInfoController))]
public class UserInfoController : VoloUserInfoController
{
protected async override Task<Dictionary<string, object>> GetUserInfoClaims()
{
var user = await UserManager.GetUserAsync(User);
if (user == null)
{
return null;
}
var claims = new Dictionary<string, object>(StringComparer.Ordinal)
{
// Note: the "sub" claim is a mandatory claim and must be included in the JSON response.
[OpenIddictConstants.Claims.Subject] = await UserManager.GetUserIdAsync(user)
};
if (User.HasScope(OpenIddictConstants.Scopes.Profile))
{
claims[AbpClaimTypes.TenantId] = user.TenantId;
claims[OpenIddictConstants.Claims.PreferredUsername] = user.UserName;
claims[OpenIddictConstants.Claims.FamilyName] = user.Surname;
claims[OpenIddictConstants.Claims.GivenName] = user.Name;
// 重写添加用户头像
var picture = user.Claims.FirstOrDefault(x => x.ClaimType == IdentityConsts.ClaimType.Avatar.Name);
if (picture != null)
{
claims[OpenIddictConstants.Claims.Picture] = picture.ClaimValue;
}
}
if (User.HasScope(OpenIddictConstants.Scopes.Email))
{
claims[OpenIddictConstants.Claims.Email] = await UserManager.GetEmailAsync(user);
claims[OpenIddictConstants.Claims.EmailVerified] = await UserManager.IsEmailConfirmedAsync(user);
}
if (User.HasScope(OpenIddictConstants.Scopes.Phone))
{
claims[OpenIddictConstants.Claims.PhoneNumber] = await UserManager.GetPhoneNumberAsync(user);
claims[OpenIddictConstants.Claims.PhoneNumberVerified] = await UserManager.IsPhoneNumberConfirmedAsync(user);
}
if (User.HasScope(OpenIddictConstants.Scopes.Roles))
{
claims[OpenIddictConstants.Claims.Role] = await UserManager.GetRolesAsync(user);
}
// Note: the complete list of standard claims supported by the OpenID Connect specification
// can be found here: http://openid.net/specs/openid-connect-core-1_0.html#StandardClaims
return claims;
}
}

4
aspnet-core/modules/webhooks/LINGYUN.Abp.WebhooksManagement.Application/LINGYUN/Abp/WebhooksManagement/WebhookSubscriptionAppService.cs

@ -35,7 +35,7 @@ public class WebhookSubscriptionAppService : WebhooksManagementAppServiceBase, I
var subscription = new WebhookSubscription(
GuidGenerator.Create(),
input.WebhookUri,
input.ToWebhookHeadersString(),
input.ToSubscribedWebhooksString(),
input.ToWebhookHeadersString(),
input.Secret,
input.TenantId ?? CurrentTenant.Id)
@ -100,7 +100,7 @@ public class WebhookSubscriptionAppService : WebhooksManagementAppServiceBase, I
var inputHeaders = input.ToWebhookHeadersString();
if (!string.Equals(subscription.Headers, inputHeaders, StringComparison.InvariantCultureIgnoreCase))
{
subscription.SetHeaders(input.ToWebhookHeadersString());
subscription.SetHeaders(inputHeaders);
}
subscription.SetConcurrencyStampIfNotNull(input.ConcurrencyStamp);

2
aspnet-core/modules/webhooks/LINGYUN.Abp.WebhooksManagement.Domain/LINGYUN/Abp/WebhooksManagement/DynamicWebhookDefinitionStore.cs

@ -127,7 +127,7 @@ public class DynamicWebhookDefinitionStore : IDynamicWebhookDefinitionStore, ITr
protected async virtual Task UpdateInMemoryStoreCache()
{
var webhookGroupRecords = await WebhookGroupRepository.GetListAsync();
var webhookRecords = await WebhookRepository.GetListAsync();
var webhookRecords = await WebhookRepository.GetAvailableListAsync();
await StoreCache.FillAsync(webhookGroupRecords, webhookRecords);
}

7
aspnet-core/modules/webhooks/LINGYUN.Abp.WebhooksManagement.Domain/LINGYUN/Abp/WebhooksManagement/DynamicWebhookDefinitionStoreInMemoryCache.cs

@ -98,10 +98,15 @@ public class DynamicWebhookDefinitionStoreInMemoryCache :
WebhookGroupDefinition webhookGroup,
WebhookDefinitionRecord webhookRecord)
{
ILocalizableString description = null;
if (!webhookRecord.Description.IsNullOrWhiteSpace())
{
description = LocalizableStringSerializer.Deserialize(webhookRecord.Description);
}
var webhook = webhookGroup.AddWebhook(
webhookRecord.Name,
LocalizableStringSerializer.Deserialize(webhookRecord.DisplayName),
LocalizableStringSerializer.Deserialize(webhookRecord.Description)
description
);
WebhookDefinitions[webhook.Name] = webhook;

3
aspnet-core/modules/webhooks/LINGYUN.Abp.WebhooksManagement.Domain/LINGYUN/Abp/WebhooksManagement/IWebhookDefinitionRecordRepository.cs

@ -1,4 +1,5 @@
using System;
using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
using Volo.Abp.Domain.Repositories;
@ -10,4 +11,6 @@ public interface IWebhookDefinitionRecordRepository : IBasicRepository<WebhookDe
Task<WebhookDefinitionRecord> FindByNameAsync(
string name,
CancellationToken cancellationToken = default);
Task<List<WebhookDefinitionRecord>> GetAvailableListAsync(CancellationToken cancellationToken = default);
}

12
aspnet-core/modules/webhooks/LINGYUN.Abp.WebhooksManagement.EntityFrameworkCore/LINGYUN/Abp/WebhooksManagement/EntityFrameworkCore/EfCoreWebhookDefinitionRecordRepository.cs

@ -1,5 +1,6 @@
using Microsoft.EntityFrameworkCore;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
@ -18,12 +19,19 @@ public class EfCoreWebhookDefinitionRecordRepository :
{
}
public async Task<WebhookDefinitionRecord> FindByNameAsync(
public async virtual Task<WebhookDefinitionRecord> FindByNameAsync(
string name,
CancellationToken cancellationToken = default)
{
return await (await GetDbSetAsync())
.OrderBy(x => x.Id)
.FirstOrDefaultAsync(r => r.Name == name, cancellationToken);
.FirstOrDefaultAsync(r => r.Name == name, GetCancellationToken(cancellationToken));
}
public async virtual Task<List<WebhookDefinitionRecord>> GetAvailableListAsync(CancellationToken cancellationToken = default)
{
return await (await GetDbSetAsync())
.Where(x => x.IsEnabled == true)
.ToListAsync(GetCancellationToken(cancellationToken));
}
}

1
aspnet-core/services/LY.MicroService.Applications.Single/LY.MicroService.Applications.Single.csproj

@ -145,6 +145,7 @@
<ProjectReference Include="..\..\modules\localization-management\LINGYUN.Abp.LocalizationManagement.Domain\LINGYUN.Abp.LocalizationManagement.Domain.csproj" />
<ProjectReference Include="..\..\modules\localization-management\LINGYUN.Abp.LocalizationManagement.EntityFrameworkCore\LINGYUN.Abp.LocalizationManagement.EntityFrameworkCore.csproj" />
<ProjectReference Include="..\..\modules\localization-management\LINGYUN.Abp.LocalizationManagement.HttpApi\LINGYUN.Abp.LocalizationManagement.HttpApi.csproj" />
<ProjectReference Include="..\..\modules\openIddict\LINGYUN.Abp.OpenIddict.AspNetCore\LINGYUN.Abp.OpenIddict.AspNetCore.csproj" />
<ProjectReference Include="..\..\modules\realtime-message\LINGYUN.Abp.IM.SignalR\LINGYUN.Abp.IM.SignalR.csproj" />
<ProjectReference Include="..\..\modules\realtime-message\LINGYUN.Abp.IM\LINGYUN.Abp.IM.csproj" />
<ProjectReference Include="..\..\modules\realtime-message\LINGYUN.Abp.MessageService.Application.Contracts\LINGYUN.Abp.MessageService.Application.Contracts.csproj" />

1
aspnet-core/services/LY.MicroService.Applications.Single/MicroServiceApplicationsSingleModule.Configure.cs

@ -670,6 +670,7 @@ public partial class MicroServiceApplicationsSingleModule
{
options.IsEnabled = true;
options.IgnoreNamespaces.Add("Elsa");
options.IgnoreNamespaces.Add("LINGYUN.Abp.OssManagement");
});
}

3
aspnet-core/services/LY.MicroService.Applications.Single/MicroServiceApplicationsSingleModule.cs

@ -54,6 +54,7 @@ using LINGYUN.Abp.Notifications.SignalR;
using LINGYUN.Abp.Notifications.WeChat.MiniProgram;
using LINGYUN.Abp.OpenApi.Authorization;
using LINGYUN.Abp.OpenIddict;
using LINGYUN.Abp.OpenIddict.AspNetCore;
using LINGYUN.Abp.OpenIddict.Portal;
using LINGYUN.Abp.OpenIddict.Sms;
using LINGYUN.Abp.OpenIddict.WeChat;
@ -107,7 +108,6 @@ using Volo.Abp.EventBus;
using Volo.Abp.FeatureManagement.EntityFrameworkCore;
using Volo.Abp.Identity.AspNetCore;
using Volo.Abp.Modularity;
using Volo.Abp.OpenIddict;
using Volo.Abp.OpenIddict.EntityFrameworkCore;
using Volo.Abp.PermissionManagement.EntityFrameworkCore;
using Volo.Abp.PermissionManagement.Identity;
@ -151,7 +151,6 @@ namespace LY.MicroService.Applications.Single;
typeof(AbpNotificationsHttpApiModule),
typeof(AbpNotificationsEntityFrameworkCoreModule),
typeof(AbpOpenIddictAspNetCoreModule),
typeof(AbpOpenIddictDomainModule),
typeof(AbpOpenIddictApplicationModule),
typeof(AbpOpenIddictHttpApiModule),
typeof(AbpOpenIddictEntityFrameworkCoreModule),

21
aspnet-core/services/LY.MicroService.Applications.Single/Properties/PublishProfiles/FolderProfile.pubxml

@ -0,0 +1,21 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
https://go.microsoft.com/fwlink/?LinkID=208121.
-->
<Project>
<PropertyGroup>
<DeleteExistingFiles>true</DeleteExistingFiles>
<ExcludeApp_Data>false</ExcludeApp_Data>
<LaunchSiteAfterPublish>true</LaunchSiteAfterPublish>
<LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration>
<LastUsedPlatform>Any CPU</LastUsedPlatform>
<PublishProvider>FileSystem</PublishProvider>
<PublishUrl>bin\Release\net7.0\publish\</PublishUrl>
<WebPublishMethod>FileSystem</WebPublishMethod>
<_TargetId>Folder</_TargetId>
<SiteUrlToLaunchAfterPublish />
<TargetFramework>net7.0</TargetFramework>
<ProjectGuid>83d2f8f2-82c7-4919-9b65-d0fbf0b5324c</ProjectGuid>
<SelfContained>false</SelfContained>
</PropertyGroup>
</Project>

11
aspnet-core/services/LY.MicroService.Applications.Single/Properties/PublishProfiles/FolderProfile.pubxml.user

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
https://go.microsoft.com/fwlink/?LinkID=208121.
-->
<Project>
<PropertyGroup>
<_PublishTargetUrl>D:\C Sharp\Open-Sources\abp-next-admin\aspnet-core\services\LY.MicroService.Applications.Single\bin\Release\net7.0\publish\</_PublishTargetUrl>
<History>True|2023-10-28T08:18:57.7769358Z;True|2023-10-28T14:39:34.8714667+08:00;</History>
<LastFailureDetails />
</PropertyGroup>
</Project>
Loading…
Cancel
Save