diff --git a/lib/logic/cubit/server_installation/server_installation_repository.dart b/lib/logic/cubit/server_installation/server_installation_repository.dart index 24e3adc6..717b7535 100644 --- a/lib/logic/cubit/server_installation/server_installation_repository.dart +++ b/lib/logic/cubit/server_installation/server_installation_repository.dart @@ -57,6 +57,7 @@ class ServerInstallationRepository { ProvidersController.initServerProvider( ServerProviderSettings( provider: serverProvider ?? serverDetails!.provider, + isAuthorized: providerApiToken != null, location: location, ), ); @@ -67,6 +68,7 @@ class ServerInstallationRepository { serverDomain.provider != DnsProviderType.unknown)) { ProvidersController.initDnsProvider( DnsProviderSettings( + isAuthorized: dnsApiToken != null, provider: dnsProvider ?? serverDomain!.provider, ), ); diff --git a/lib/logic/providers/dns_providers/dns_provider_factory.dart b/lib/logic/providers/dns_providers/dns_provider_factory.dart index a2b1694e..e02928b6 100644 --- a/lib/logic/providers/dns_providers/dns_provider_factory.dart +++ b/lib/logic/providers/dns_providers/dns_provider_factory.dart @@ -16,11 +16,23 @@ class DnsProviderFactory { ) { switch (settings.provider) { case DnsProviderType.cloudflare: - return CloudflareDnsProvider(); + return settings.isAuthorized + ? CloudflareDnsProvider.load( + settings.isAuthorized, + ) + : CloudflareDnsProvider(); case DnsProviderType.digitalOcean: - return DigitalOceanDnsProvider(); + return settings.isAuthorized + ? DigitalOceanDnsProvider.load( + settings.isAuthorized, + ) + : DigitalOceanDnsProvider(); case DnsProviderType.desec: - return DesecDnsProvider(); + return settings.isAuthorized + ? DesecDnsProvider.load( + settings.isAuthorized, + ) + : DesecDnsProvider(); case DnsProviderType.unknown: throw UnknownProviderException('Unknown server provider'); } diff --git a/lib/logic/providers/provider_settings.dart b/lib/logic/providers/provider_settings.dart index 8ffe79e6..835697cd 100644 --- a/lib/logic/providers/provider_settings.dart +++ b/lib/logic/providers/provider_settings.dart @@ -4,9 +4,11 @@ import 'package:selfprivacy/logic/models/hive/server_domain.dart'; class ServerProviderSettings { ServerProviderSettings({ required this.provider, + this.isAuthorized = false, this.location, }); + final bool isAuthorized; final ServerProviderType provider; final String? location; } @@ -14,7 +16,9 @@ class ServerProviderSettings { class DnsProviderSettings { DnsProviderSettings({ required this.provider, + this.isAuthorized = false, }); + final bool isAuthorized; final DnsProviderType provider; } diff --git a/lib/logic/providers/server_providers/digital_ocean.dart b/lib/logic/providers/server_providers/digital_ocean.dart index 2f8e11c7..057c99df 100644 --- a/lib/logic/providers/server_providers/digital_ocean.dart +++ b/lib/logic/providers/server_providers/digital_ocean.dart @@ -37,11 +37,11 @@ class ApiAdapter { class DigitalOceanServerProvider extends ServerProvider { DigitalOceanServerProvider() : _adapter = ApiAdapter(); DigitalOceanServerProvider.load( - final ServerType serverType, + final String? location, final bool isAuthotized, ) : _adapter = ApiAdapter( isWithToken: isAuthotized, - region: serverType.location.identifier, + region: location, ); ApiAdapter _adapter; diff --git a/lib/logic/providers/server_providers/hetzner.dart b/lib/logic/providers/server_providers/hetzner.dart index b61e458f..ae680088 100644 --- a/lib/logic/providers/server_providers/hetzner.dart +++ b/lib/logic/providers/server_providers/hetzner.dart @@ -37,11 +37,11 @@ class ApiAdapter { class HetznerServerProvider extends ServerProvider { HetznerServerProvider() : _adapter = ApiAdapter(); HetznerServerProvider.load( - final ServerType serverType, + final String? location, final bool isAuthotized, ) : _adapter = ApiAdapter( isWithToken: isAuthotized, - region: serverType.location.identifier, + region: location, ); ApiAdapter _adapter; diff --git a/lib/logic/providers/server_providers/server_provider_factory.dart b/lib/logic/providers/server_providers/server_provider_factory.dart index 786b1c02..9aff1ab5 100644 --- a/lib/logic/providers/server_providers/server_provider_factory.dart +++ b/lib/logic/providers/server_providers/server_provider_factory.dart @@ -15,9 +15,19 @@ class ServerProviderFactory { ) { switch (settings.provider) { case ServerProviderType.hetzner: - return HetznerServerProvider(); + return settings.isAuthorized + ? HetznerServerProvider.load( + settings.location, + settings.isAuthorized, + ) + : HetznerServerProvider(); case ServerProviderType.digitalOcean: - return DigitalOceanServerProvider(); + return settings.isAuthorized + ? DigitalOceanServerProvider.load( + settings.location, + settings.isAuthorized, + ) + : DigitalOceanServerProvider(); case ServerProviderType.unknown: throw UnknownProviderException('Unknown server provider'); }