btcpayserver/BTCPayServer/Extensions/ActionLogicExtensions.cs
2021-12-31 16:59:02 +09:00

40 lines
1.7 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using BTCPayServer.Configuration;
using BTCPayServer.Logging;
using BTCPayServer.Services;
using Microsoft.Extensions.Logging;
namespace BTCPayServer
{
// All logic that would otherwise be duplicated across solution goes into this utility class
// ~If~ Once this starts growing out of control, begin extracting action logic classes out of here
// Also some of logic in here may be result of parallel development of Greenfield API
// It's much better that we extract those common methods then copy paste and maintain same code across codebase
internal static class ActionLogicExtensions
{
internal static async Task FirstAdminRegistered(this SettingsRepository settingsRepository, PoliciesSettings policies,
bool updateCheck, bool disableRegistrations, Logs logs)
{
if (updateCheck)
{
logs.PayServer.LogInformation("First admin created, enabling checks for new versions");
policies.CheckForNewVersions = updateCheck;
}
if (disableRegistrations)
{
// Once the admin user has been created lock subsequent user registrations (needs to be disabled for unit tests that require multiple users).
logs.PayServer.LogInformation("First admin created, disabling subscription (disable-registration is set to true)");
policies.LockSubscription = true;
}
if (updateCheck || disableRegistrations)
await settingsRepository.UpdateSetting(policies);
}
}
}