Making use of options to initalize update check on first admin registration

This commit is contained in:
rockstardev
2020-08-01 09:17:17 -05:00
parent c18167889d
commit ce87d2e45c
3 changed files with 42 additions and 14 deletions

View File

@@ -443,13 +443,8 @@ namespace BTCPayServer.Controllers
var settings = await _SettingsRepository.GetSettingAsync<ThemeSettings>(); var settings = await _SettingsRepository.GetSettingAsync<ThemeSettings>();
settings.FirstRun = false; settings.FirstRun = false;
await _SettingsRepository.UpdateSetting<ThemeSettings>(settings); await _SettingsRepository.UpdateSetting<ThemeSettings>(settings);
if (_Options.DisableRegistration)
{ await _SettingsRepository.FirstAdminRegistered(policies, _Options.UpdateCheck, _Options.DisableRegistration);
// 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;
await _SettingsRepository.UpdateSetting(policies);
}
RegisteredAdmin = true; RegisteredAdmin = true;
} }

View File

@@ -148,13 +148,7 @@ namespace BTCPayServer.Controllers.GreenField
await _userManager.AddToRoleAsync(user, Roles.ServerAdmin); await _userManager.AddToRoleAsync(user, Roles.ServerAdmin);
if (!anyAdmin) if (!anyAdmin)
{ {
if (_options.DisableRegistration) await _settingsRepository.FirstAdminRegistered(policies, _options.UpdateCheck, _options.DisableRegistration);
{
// automatically lock subscriptions now that we have our first admin
Logs.PayServer.LogInformation("First admin created, disabling subscription (disable-registration is set to true)");
policies.LockSubscription = true;
await _settingsRepository.UpdateSetting(policies);
}
} }
} }
_eventAggregator.Publish(new UserRegisteredEvent() { RequestUri = Request.GetAbsoluteRootUri(), User = user, Admin = request.IsAdministrator is true }); _eventAggregator.Publish(new UserRegisteredEvent() { RequestUri = Request.GetAbsoluteRootUri(), User = user, Admin = request.IsAdministrator is true });

View File

@@ -0,0 +1,39 @@
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)
{
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);
}
}
}