mirror of
https://github.com/aljazceru/btcpayserver.git
synced 2025-12-17 14:04:26 +01:00
Add Server Email Rules
This commit is contained in:
@@ -0,0 +1,90 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
using BTCPayServer.Abstractions.Constants;
|
||||
using BTCPayServer.Abstractions.Extensions;
|
||||
using BTCPayServer.Abstractions.Models;
|
||||
using BTCPayServer.Client;
|
||||
using BTCPayServer.Controllers;
|
||||
using BTCPayServer.Data;
|
||||
using BTCPayServer.Plugins.Emails.Views;
|
||||
using BTCPayServer.Plugins.Emails.Views.Shared;
|
||||
using BTCPayServer.Services.Mails;
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
using Microsoft.AspNetCore.Http;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Microsoft.AspNetCore.Routing;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Microsoft.Extensions.Localization;
|
||||
|
||||
namespace BTCPayServer.Plugins.Emails.Controllers;
|
||||
|
||||
[Area(EmailsPlugin.Area)]
|
||||
[Route("server/rules")]
|
||||
[Authorize(AuthenticationSchemes = AuthenticationSchemes.Cookie)]
|
||||
[Authorize(Policy = Policies.CanModifyServerSettings, AuthenticationSchemes = AuthenticationSchemes.Cookie)]
|
||||
[AutoValidateAntiforgeryToken]
|
||||
public class UIServerEmailRulesController(
|
||||
EmailSenderFactory emailSenderFactory,
|
||||
IEnumerable<EmailTriggerViewModel> triggers,
|
||||
ApplicationDbContextFactory dbContextFactory,
|
||||
IStringLocalizer stringLocalizer
|
||||
) : UIEmailRuleControllerBase(dbContextFactory, stringLocalizer, emailSenderFactory)
|
||||
{
|
||||
|
||||
[HttpGet("")]
|
||||
public Task<IActionResult> ServerEmailRulesList()
|
||||
=> EmailRulesListCore(CreateContext());
|
||||
|
||||
private EmailsRuleControllerContext CreateContext()
|
||||
=> new()
|
||||
{
|
||||
EmailSettingsLink = Url.Action(nameof(UIServerEmailController.ServerEmailSettings), "UIServerEmail") ?? throw new InvalidOperationException("Bug 1928"),
|
||||
Rules = (ctx) => ctx.EmailRules.GetServerRules().ToListAsync(),
|
||||
Triggers = triggers.Where(t => t.ServerTrigger).ToList(),
|
||||
ModifyViewModel = (vm) =>
|
||||
{
|
||||
vm.ShowCustomerEmailColumn = false;
|
||||
},
|
||||
GetRule = (ctx, ruleId) => ctx.EmailRules.GetServerRule(ruleId),
|
||||
RedirectToRuleList = GoToStoreServerRulesList
|
||||
};
|
||||
|
||||
private IActionResult GoToStoreServerRulesList(string redirectUrl)
|
||||
{
|
||||
if (redirectUrl != null)
|
||||
return LocalRedirect(redirectUrl);
|
||||
return RedirectToAction(nameof(ServerEmailRulesList));
|
||||
}
|
||||
|
||||
[HttpGet("create")]
|
||||
[Authorize(Policy = Policies.CanModifyServerSettings, AuthenticationSchemes = AuthenticationSchemes.Cookie)]
|
||||
public IActionResult ServerEmailRulesCreate(
|
||||
string trigger = null,
|
||||
string condition = null,
|
||||
string to = null,
|
||||
string redirectUrl = null)
|
||||
=> EmailRulesCreateCore(CreateContext(), null, trigger, condition, to, redirectUrl);
|
||||
|
||||
|
||||
[HttpPost("create")]
|
||||
[Authorize(Policy = Policies.CanModifyServerSettings, AuthenticationSchemes = AuthenticationSchemes.Cookie)]
|
||||
public Task<IActionResult> ServerEmailRulesCreate(StoreEmailRuleViewModel model)
|
||||
=> EmailRulesCreateCore(CreateContext(), model);
|
||||
|
||||
[HttpGet("{ruleId}/edit")]
|
||||
[Authorize(Policy = Policies.CanModifyServerSettings, AuthenticationSchemes = AuthenticationSchemes.Cookie)]
|
||||
public Task<IActionResult> ServerEmailRulesEdit(long ruleId, string redirectUrl = null)
|
||||
=> EmailRulesEditCore(CreateContext(), ruleId, redirectUrl);
|
||||
|
||||
[HttpPost("{ruleId}/edit")]
|
||||
[Authorize(Policy = Policies.CanModifyServerSettings, AuthenticationSchemes = AuthenticationSchemes.Cookie)]
|
||||
public Task<IActionResult> ServerEmailRulesEdit(long ruleId, StoreEmailRuleViewModel model)
|
||||
=> EmailRulesEditCore(CreateContext(), ruleId, model);
|
||||
|
||||
[HttpPost("{ruleId}/delete")]
|
||||
[Authorize(Policy = Policies.CanModifyServerSettings, AuthenticationSchemes = AuthenticationSchemes.Cookie)]
|
||||
public Task<IActionResult> ServerEmailRulesDelete(long ruleId, string redirectUrl = null)
|
||||
=> EmailRulesDeleteCore(CreateContext(), ruleId, redirectUrl);
|
||||
}
|
||||
Reference in New Issue
Block a user