Browse Source

Merge pull request #22547 from abpframework/CmsKitDynamicRouteValueTransformerBase

Try to get and change tenant in `DynamicRouteValueTransformer`.
pull/22548/head
Enis Necipoglu 2 years ago
committed by GitHub
parent
commit
5b564d4dfd
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
  1. 15
      modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKitHomePageRouteValueTransformer.cs
  2. 16
      modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKitPageRouteValueTransformer.cs
  3. 41
      modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/Public/CmsKitDynamicRouteValueTransformerBase.cs

15
modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKitHomePageRouteValueTransformer.cs

@ -1,27 +1,32 @@
using System.Threading.Tasks; using System.Threading.Tasks;
using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc.Routing;
using Microsoft.AspNetCore.Routing; using Microsoft.AspNetCore.Routing;
using Volo.Abp.DependencyInjection;
using Volo.Abp.Features; using Volo.Abp.Features;
using Volo.Abp.MultiTenancy;
using Volo.CmsKit.Features; using Volo.CmsKit.Features;
using Volo.CmsKit.Public.Pages; using Volo.CmsKit.Public.Pages;
using Volo.CmsKit.Public.Web.Pages.Public;
namespace Volo.CmsKit.Public.Web.Pages; namespace Volo.CmsKit.Public.Web.Pages;
public class CmsKitHomePageRouteValueTransformer : DynamicRouteValueTransformer, ITransientDependency public class CmsKitHomePageRouteValueTransformer : CmsKitDynamicRouteValueTransformerBase
{ {
protected IFeatureChecker FeatureChecker { get; } protected IFeatureChecker FeatureChecker { get; }
protected IPagePublicAppService PagePublicAppService { get; } protected IPagePublicAppService PagePublicAppService { get; }
public CmsKitHomePageRouteValueTransformer(IFeatureChecker featureChecker, IPagePublicAppService pagePublicAppService) public CmsKitHomePageRouteValueTransformer(
ICurrentTenant currentTenant,
ITenantConfigurationProvider tenantConfigurationProvider,
IFeatureChecker featureChecker,
IPagePublicAppService pagePublicAppService)
: base(currentTenant, tenantConfigurationProvider)
{ {
FeatureChecker = featureChecker; FeatureChecker = featureChecker;
PagePublicAppService = pagePublicAppService; PagePublicAppService = pagePublicAppService;
} }
public override async ValueTask<RouteValueDictionary> TransformAsync(HttpContext httpContext, RouteValueDictionary values) protected async override ValueTask<RouteValueDictionary> DoTransformAsync(HttpContext httpContext, RouteValueDictionary values)
{ {
if (await FeatureChecker.IsEnabledAsync(CmsKitFeatures.PageEnable)) if (await FeatureChecker.IsEnabledAsync(CmsKitFeatures.PageEnable))
{ {

16
modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKitPageRouteValueTransformer.cs

@ -1,30 +1,36 @@
using System.Threading.Tasks; using System.Threading.Tasks;
using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc.Routing;
using Microsoft.AspNetCore.Routing; using Microsoft.AspNetCore.Routing;
using Volo.Abp.Caching; using Volo.Abp.Caching;
using Volo.Abp.DependencyInjection;
using Volo.Abp.Features; using Volo.Abp.Features;
using Volo.Abp.MultiTenancy;
using Volo.CmsKit.Features; using Volo.CmsKit.Features;
using Volo.CmsKit.Pages; using Volo.CmsKit.Pages;
using Volo.CmsKit.Public.Pages; using Volo.CmsKit.Public.Pages;
using Volo.CmsKit.Public.Web.Pages.Public;
namespace Volo.CmsKit.Public.Web.Pages; namespace Volo.CmsKit.Public.Web.Pages;
public class CmsKitPageRouteValueTransformer : DynamicRouteValueTransformer, ITransientDependency public class CmsKitPageRouteValueTransformer : CmsKitDynamicRouteValueTransformerBase
{ {
protected IFeatureChecker FeatureChecker { get; } protected IFeatureChecker FeatureChecker { get; }
protected IPagePublicAppService PagePublicAppService { get; } protected IPagePublicAppService PagePublicAppService { get; }
protected IDistributedCache<PageCacheItem> PageCache { get; } protected IDistributedCache<PageCacheItem> PageCache { get; }
public CmsKitPageRouteValueTransformer(IFeatureChecker featureChecker, IPagePublicAppService pagePublicAppService, IDistributedCache<PageCacheItem> pageCache) public CmsKitPageRouteValueTransformer(
ICurrentTenant currentTenant,
ITenantConfigurationProvider tenantConfigurationProvider,
IFeatureChecker featureChecker,
IPagePublicAppService pagePublicAppService,
IDistributedCache<PageCacheItem> pageCache)
: base(currentTenant, tenantConfigurationProvider)
{ {
FeatureChecker = featureChecker; FeatureChecker = featureChecker;
PagePublicAppService = pagePublicAppService; PagePublicAppService = pagePublicAppService;
PageCache = pageCache; PageCache = pageCache;
} }
public async override ValueTask<RouteValueDictionary> TransformAsync(HttpContext httpContext, RouteValueDictionary values) protected async override ValueTask<RouteValueDictionary> DoTransformAsync(HttpContext httpContext, RouteValueDictionary values)
{ {
if (values.TryGetValue("slug", out var slugParameter) && slugParameter is not null) if (values.TryGetValue("slug", out var slugParameter) && slugParameter is not null)
{ {

41
modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/Public/CmsKitDynamicRouteValueTransformerBase.cs

@ -0,0 +1,41 @@
using System;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc.Routing;
using Microsoft.AspNetCore.Routing;
using Volo.Abp.DependencyInjection;
using Volo.Abp.MultiTenancy;
namespace Volo.CmsKit.Public.Web.Pages.Public;
public abstract class CmsKitDynamicRouteValueTransformerBase : DynamicRouteValueTransformer, ITransientDependency
{
protected ICurrentTenant CurrentTenant { get; }
protected ITenantConfigurationProvider TenantConfigurationProvider { get; }
protected CmsKitDynamicRouteValueTransformerBase(ICurrentTenant currentTenant, ITenantConfigurationProvider tenantConfigurationProvider)
{
CurrentTenant = currentTenant;
TenantConfigurationProvider = tenantConfigurationProvider;
}
public async override ValueTask<RouteValueDictionary> TransformAsync(HttpContext httpContext, RouteValueDictionary values)
{
TenantConfiguration tenant = null;
try
{
tenant = await TenantConfigurationProvider.GetAsync(saveResolveResult: false);
}
catch (Exception)
{
//Ignore
}
using (CurrentTenant.Change(tenant?.Id, tenant?.Name))
{
return await DoTransformAsync(httpContext, values);
}
}
protected abstract ValueTask<RouteValueDictionary> DoTransformAsync(HttpContext httpContext, RouteValueDictionary values);
}
Loading…
Cancel
Save