From 3d6eea02a9e143e1407bab27af7be1e7486e9878 Mon Sep 17 00:00:00 2001 From: pavelbannov Date: Tue, 20 Jun 2023 12:24:47 +0300 Subject: [PATCH] added PaymentAccountHandler --- config/nginx/onlyoffice.conf | 4 ++ web/ASC.Web.Api/Core/PaymentAccountHandler.cs | 65 +++++++++++++++++++ web/ASC.Web.Api/Startup.cs | 7 ++ 3 files changed, 76 insertions(+) create mode 100644 web/ASC.Web.Api/Core/PaymentAccountHandler.cs diff --git a/config/nginx/onlyoffice.conf b/config/nginx/onlyoffice.conf index ca4d6b3ce5..727b98f8fd 100644 --- a/config/nginx/onlyoffice.conf +++ b/config/nginx/onlyoffice.conf @@ -243,6 +243,10 @@ server { proxy_pass http://127.0.0.1:5000; } + location /payment.ashx { + proxy_pass http://127.0.0.1:5000; + } + location /ThirdPartyApp { proxy_pass http://127.0.0.1:5007; } diff --git a/web/ASC.Web.Api/Core/PaymentAccountHandler.cs b/web/ASC.Web.Api/Core/PaymentAccountHandler.cs new file mode 100644 index 0000000000..7e9eebdb3e --- /dev/null +++ b/web/ASC.Web.Api/Core/PaymentAccountHandler.cs @@ -0,0 +1,65 @@ +// (c) Copyright Ascensio System SIA 2010-2022 +// +// This program is a free software product. +// You can redistribute it and/or modify it under the terms +// of the GNU Affero General Public License (AGPL) version 3 as published by the Free Software +// Foundation. In accordance with Section 7(a) of the GNU AGPL its Section 15 shall be amended +// to the effect that Ascensio System SIA expressly excludes the warranty of non-infringement of +// any third-party rights. +// +// This program is distributed WITHOUT ANY WARRANTY, without even the implied warranty +// of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For details, see +// the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html +// +// You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia, EU, LV-1021. +// +// The interactive user interfaces in modified source and object code versions of the Program must +// display Appropriate Legal Notices, as required under Section 5 of the GNU AGPL version 3. +// +// Pursuant to Section 7(b) of the License you must retain the original Product logo when +// distributing the program. Pursuant to Section 7(e) we decline to grant you any rights under +// trademark law for use of our trademarks. +// +// All the Product's GUI elements, including illustrations and icon sets, as well as technical writing +// content are licensed under the terms of the Creative Commons Attribution-ShareAlike 4.0 +// International. See the License terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode + +namespace ASC.Web.Api.Core; + +public class PaymentAccountHandler +{ + public PaymentAccountHandler(RequestDelegate next) + { + + } + + public Task Invoke + (HttpContext context, + ITariffService tariffService, + UserManager userManager, + SecurityContext securityContext, + TenantManager tenantManager) + { + var tenant = tenantManager.GetCurrentTenant(); + var payerId = tariffService.GetTariff(tenant.Id).CustomerId; + var payer = userManager.GetUserByEmail(payerId); + + if (securityContext.CurrentAccount.ID != payer.Id && + securityContext.CurrentAccount.ID != tenant.OwnerId) + { + return Task.CompletedTask; + } + + var backUrl = context.Request.Query["backUrl"]; + context.Response.Redirect(tariffService.GetAccountLink(tenant.Id, backUrl).AbsoluteUri); + return Task.CompletedTask; + } +} + +public static class AccountHandlerExtensions +{ + public static IApplicationBuilder UseAccountHandler(this IApplicationBuilder builder) + { + return builder.UseMiddleware(); + } +} diff --git a/web/ASC.Web.Api/Startup.cs b/web/ASC.Web.Api/Startup.cs index f44a4b6484..8ef2a1135c 100644 --- a/web/ASC.Web.Api/Startup.cs +++ b/web/ASC.Web.Api/Startup.cs @@ -66,5 +66,12 @@ public class Startup : BaseStartup { appBranch.UseLogoUploader(); }); + + app.MapWhen( + context => context.Request.Path.ToString().EndsWith("payment.ashx"), + appBranch => + { + appBranch.UseAccountHandler(); + }); } }