public UIAccountController( UserManager <ApplicationUser> userManager, RoleManager <IdentityRole> roleManager, SignInManager <ApplicationUser> signInManager, PoliciesSettings policiesSettings, SettingsRepository settingsRepository, Configuration.BTCPayServerOptions options, BTCPayServerEnvironment btcPayServerEnvironment, EventAggregator eventAggregator, Fido2Service fido2Service, UserLoginCodeService userLoginCodeService, LnurlAuthService lnurlAuthService, LinkGenerator linkGenerator, Logs logs) { _userManager = userManager; _signInManager = signInManager; PoliciesSettings = policiesSettings; _SettingsRepository = settingsRepository; _RoleManager = roleManager; _Options = options; _btcPayServerEnvironment = btcPayServerEnvironment; _fido2Service = fido2Service; _lnurlAuthService = lnurlAuthService; _linkGenerator = linkGenerator; _userLoginCodeService = userLoginCodeService; _eventAggregator = eventAggregator; _logger = logs.PayServer; Logs = logs; }
public GreenfieldStoreOnChainWalletsController( IAuthorizationService authorizationService, BTCPayWalletProvider btcPayWalletProvider, BTCPayNetworkProvider btcPayNetworkProvider, WalletRepository walletRepository, ExplorerClientProvider explorerClientProvider, NBXplorerDashboard nbXplorerDashboard, PoliciesSettings policiesSettings, UIWalletsController walletsController, PayjoinClient payjoinClient, DelayedTransactionBroadcaster delayedTransactionBroadcaster, EventAggregator eventAggregator, WalletReceiveService walletReceiveService, IFeeProviderFactory feeProviderFactory, LabelFactory labelFactory ) { _authorizationService = authorizationService; _btcPayWalletProvider = btcPayWalletProvider; _btcPayNetworkProvider = btcPayNetworkProvider; _walletRepository = walletRepository; _explorerClientProvider = explorerClientProvider; PoliciesSettings = policiesSettings; _nbXplorerDashboard = nbXplorerDashboard; _walletsController = walletsController; _payjoinClient = payjoinClient; _delayedTransactionBroadcaster = delayedTransactionBroadcaster; _eventAggregator = eventAggregator; _walletReceiveService = walletReceiveService; _feeProviderFactory = feeProviderFactory; _labelFactory = labelFactory; }
public static async Task <(bool HotWallet, bool RPCImport)> CanUseHotWallet( this IAuthorizationService authorizationService, PoliciesSettings policiesSettings, ClaimsPrincipal user) { if (!user.Identity.IsAuthenticated) { return(false, false); } var claimUser = user.Identity as ClaimsIdentity; if (claimUser is null) { return(false, false); } bool isAdmin = false; if (claimUser.AuthenticationType == AuthenticationSchemes.Cookie) { isAdmin = user.IsInRole(Roles.ServerAdmin); } else if (claimUser.AuthenticationType == GreenfieldConstants.AuthenticationType) { isAdmin = (await authorizationService.AuthorizeAsync(user, Policies.CanModifyServerSettings)).Succeeded; } return(isAdmin ? (true, true) : (policiesSettings?.AllowHotWalletForAll is true, policiesSettings?.AllowHotWalletRPCImportForAll is true)); }
public async Task <IActionResult> Policies(PoliciesSettings settings) { if (!String.IsNullOrEmpty(settings.RootAppId)) { using (var ctx = _ContextFactory.CreateContext()) { var app = ctx.Apps.SingleOrDefault(a => a.Id == settings.RootAppId); if (app != null) { settings.RootAppType = Enum.Parse <AppType>(app.AppType); } else { settings.RootAppType = null; } } } else { // not preserved on client side, but clearing it just in case settings.RootAppType = null; } await _SettingsRepository.UpdateSetting(settings); TempData["StatusMessage"] = "Policies updated successfully"; return(RedirectToAction(nameof(Policies))); }
public async Task <IActionResult> Policies(PoliciesSettings settings) { await _SettingsRepository.UpdateSetting(settings); TempData["StatusMessage"] = "Policies updated successfully"; return(View(settings)); }
internal void Update(PoliciesSettings data) { ShowRegister = !data.LockSubscription; DiscourageSearchEngines = data.DiscourageSearchEngines; RootAppType = data.RootAppType; RootAppId = data.RootAppId; }
protected GreenfieldLightningNodeApiController(BTCPayNetworkProvider btcPayNetworkProvider, PoliciesSettings policiesSettings, IAuthorizationService authorizationService) { _btcPayNetworkProvider = btcPayNetworkProvider; _policiesSettings = policiesSettings; _authorizationService = authorizationService; }
public async Task <IActionResult> Policies(PoliciesSettings settings, string command = "") { ViewBag.AppsList = await GetAppSelectList(); if (command == "add-domain") { ModelState.Clear(); settings.DomainToAppMapping.Add(new PoliciesSettings.DomainToAppMappingItem()); return(View(settings)); } if (command.StartsWith("remove-domain", StringComparison.InvariantCultureIgnoreCase)) { ModelState.Clear(); var index = int.Parse(command.Substring(command.IndexOf(":", StringComparison.InvariantCultureIgnoreCase) + 1), CultureInfo.InvariantCulture); settings.DomainToAppMapping.RemoveAt(index); return(View(settings)); } if (!ModelState.IsValid) { return(View(settings)); } var appIdsToFetch = settings.DomainToAppMapping.Select(item => item.AppId).ToList(); if (!string.IsNullOrEmpty(settings.RootAppId)) { appIdsToFetch.Add(settings.RootAppId); } else { settings.RootAppType = null; } if (appIdsToFetch.Any()) { using (var ctx = _ContextFactory.CreateContext()) { var apps = await ctx.Apps.Where(data => appIdsToFetch.Contains(data.Id)) .ToDictionaryAsync(data => data.Id, data => Enum.Parse <AppType>(data.AppType)); if (!string.IsNullOrEmpty(settings.RootAppId)) { settings.RootAppType = apps[settings.RootAppId]; } foreach (var domainToAppMappingItem in settings.DomainToAppMapping) { domainToAppMappingItem.AppType = apps[domainToAppMappingItem.AppId]; } } } await _SettingsRepository.UpdateSetting(settings); TempData["StatusMessage"] = "Policies updated successfully"; return(RedirectToAction(nameof(Policies))); }
internal void Update(PoliciesSettings data) { ShowRegister = !data.LockSubscription; DiscourageSearchEngines = data.DiscourageSearchEngines; RootAppType = data.RootAppType; RootAppId = data.RootAppId; DomainToAppMapping = data.DomainToAppMapping; AllowLightningInternalNodeForAll = data.AllowLightningInternalNodeForAll; }
public GreenfieldInternalLightningNodeApiController( BTCPayNetworkProvider btcPayNetworkProvider, PoliciesSettings policiesSettings, LightningClientFactoryService lightningClientFactory, IOptions <LightningNetworkOptions> lightningNetworkOptions, IAuthorizationService authorizationService) : base( btcPayNetworkProvider, policiesSettings, authorizationService) { _btcPayNetworkProvider = btcPayNetworkProvider; _lightningClientFactory = lightningClientFactory; _lightningNetworkOptions = lightningNetworkOptions; }
public GreenfieldStoreLightningNetworkPaymentMethodsController( StoreRepository storeRepository, BTCPayNetworkProvider btcPayNetworkProvider, IAuthorizationService authorizationService, ISettingsRepository settingsRepository, PoliciesSettings policiesSettings) { _storeRepository = storeRepository; _btcPayNetworkProvider = btcPayNetworkProvider; _authorizationService = authorizationService; _settingsRepository = settingsRepository; PoliciesSettings = policiesSettings; }
public GreenfieldStoreOnChainPaymentMethodsController( StoreRepository storeRepository, BTCPayNetworkProvider btcPayNetworkProvider, BTCPayWalletProvider walletProvider, IAuthorizationService authorizationService, ExplorerClientProvider explorerClientProvider, PoliciesSettings policiesSettings) { _storeRepository = storeRepository; _btcPayNetworkProvider = btcPayNetworkProvider; _walletProvider = walletProvider; _authorizationService = authorizationService; _explorerClientProvider = explorerClientProvider; PoliciesSettings = policiesSettings; }
public UIStoresController( IServiceProvider serviceProvider, BTCPayServerOptions btcpayServerOptions, BTCPayServerEnvironment btcpayEnv, StoreRepository repo, TokenRepository tokenRepo, UserManager <ApplicationUser> userManager, BitpayAccessTokenController tokenController, BTCPayWalletProvider walletProvider, BTCPayNetworkProvider networkProvider, RateFetcher rateFactory, ExplorerClientProvider explorerProvider, LanguageService langService, PaymentMethodHandlerDictionary paymentMethodHandlerDictionary, PoliciesSettings policiesSettings, IAuthorizationService authorizationService, EventAggregator eventAggregator, AppService appService, WebhookSender webhookNotificationManager, IDataProtectionProvider dataProtector, IOptions <ExternalServicesOptions> externalServiceOptions) { _RateFactory = rateFactory; _Repo = repo; _TokenRepository = tokenRepo; _UserManager = userManager; _LangService = langService; _TokenController = tokenController; _WalletProvider = walletProvider; _paymentMethodHandlerDictionary = paymentMethodHandlerDictionary; _policiesSettings = policiesSettings; _authorizationService = authorizationService; _appService = appService; DataProtector = dataProtector.CreateProtector("ConfigProtector"); WebhookNotificationManager = webhookNotificationManager; _EventAggregator = eventAggregator; _NetworkProvider = networkProvider; _ExplorerProvider = explorerProvider; _ServiceProvider = serviceProvider; _BtcpayServerOptions = btcpayServerOptions; _BTCPayEnv = btcpayEnv; _externalServiceOptions = externalServiceOptions; }
public MainNav( AppService appService, StoreRepository storeRepo, UIStoresController storesController, BTCPayNetworkProvider networkProvider, UserManager <ApplicationUser> userManager, PaymentMethodHandlerDictionary paymentMethodHandlerDictionary, CustodianAccountRepository custodianAccountRepository, PoliciesSettings policiesSettings) { _storeRepo = storeRepo; _appService = appService; _userManager = userManager; _networkProvider = networkProvider; _storesController = storesController; _paymentMethodHandlerDictionary = paymentMethodHandlerDictionary; _custodianAccountRepository = custodianAccountRepository; PoliciesSettings = policiesSettings; }
public GreenfieldUsersController(UserManager <ApplicationUser> userManager, RoleManager <IdentityRole> roleManager, SettingsRepository settingsRepository, PoliciesSettings policiesSettings, EventAggregator eventAggregator, IPasswordValidator <ApplicationUser> passwordValidator, IRateLimitService throttleService, BTCPayServerOptions options, IAuthorizationService authorizationService, UserService userService, Logs logs) { this.Logs = logs; _userManager = userManager; _roleManager = roleManager; _settingsRepository = settingsRepository; PoliciesSettings = policiesSettings; _eventAggregator = eventAggregator; _passwordValidator = passwordValidator; _throttleService = throttleService; _options = options; _authorizationService = authorizationService; _userService = userService; }
public async Task <IActionResult> Policies([FromServices] BTCPayNetworkProvider btcPayNetworkProvider, PoliciesSettings settings, string command = "") { ViewBag.UpdateUrlPresent = _Options.UpdateUrl != null; ViewBag.AppsList = await GetAppSelectList(); if (command == "add-domain") { ModelState.Clear(); settings.DomainToAppMapping.Add(new PoliciesSettings.DomainToAppMappingItem()); return(View(settings)); } if (command.StartsWith("remove-domain", StringComparison.InvariantCultureIgnoreCase)) { ModelState.Clear(); var index = int.Parse(command.Substring(command.IndexOf(":", StringComparison.InvariantCultureIgnoreCase) + 1), CultureInfo.InvariantCulture); settings.DomainToAppMapping.RemoveAt(index); return(View(settings)); } settings.BlockExplorerLinks = settings.BlockExplorerLinks.Where(tuple => btcPayNetworkProvider.GetNetwork(tuple.CryptoCode).BlockExplorerLinkDefault != tuple.Link).ToList(); if (!ModelState.IsValid) { return(View(settings)); } var appIdsToFetch = settings.DomainToAppMapping.Select(item => item.AppId).ToList(); if (!string.IsNullOrEmpty(settings.RootAppId)) { appIdsToFetch.Add(settings.RootAppId); } else { settings.RootAppType = null; } if (appIdsToFetch.Any()) { var apps = (await _AppService.GetApps(appIdsToFetch.ToArray())) .ToDictionary(data => data.Id, data => Enum.Parse <AppType>(data.AppType)); ; if (!string.IsNullOrEmpty(settings.RootAppId)) { settings.RootAppType = apps[settings.RootAppId]; } foreach (var domainToAppMappingItem in settings.DomainToAppMapping) { domainToAppMappingItem.AppType = apps[domainToAppMappingItem.AppId]; } } await _SettingsRepository.UpdateSetting(settings); BlockExplorerLinkStartupTask.SetLinkOnNetworks(settings.BlockExplorerLinks, btcPayNetworkProvider); TempData[WellKnownTempData.SuccessMessage] = "Policies updated successfully"; return(RedirectToAction(nameof(Policies))); }
internal void Update(PoliciesSettings data) { ShowRegister = !data.LockSubscription; }
internal void Update(PoliciesSettings data) { _policies = data; }
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); } }