authSettingsGateway ??= new AuthSettingsGateway( $this->createSettingsMicrosoftGateway(), $this->createSettingsApiPolicyGateway(), $this->createSettingsDefaultsGateway(), $this->createSettingsAppGateway(), $this->createSettingsLoginPersistenceGateway() ); } public function getTenantScopeService(): TenantScopeService { return $this->tenantScopeService; } public function createPermissionService(): PermissionService { return $this->permissionService ??= $this->accessServicesFactory->createPermissionService(); } public function createAuthTenantGateway(): AuthTenantGateway { return $this->authTenantGateway ??= new AuthTenantGateway( $this->authRepositoryFactory->createTenantRepository() ); } public function createAuthCryptoGateway(): AuthCryptoGateway { return $this->authCryptoGateway ??= new AuthCryptoGateway(); } public function createAuthExternalIdentityGateway(): AuthExternalIdentityGateway { return $this->authExternalIdentityGateway ??= new AuthExternalIdentityGateway( $this->authRepositoryFactory->createUserExternalIdentityRepository() ); } private function createSettingsMicrosoftGateway(): SettingsMicrosoftGateway { return $this->settingsMicrosoftGateway ??= $this->settingServicesFactory->createSettingsMicrosoftGateway(); } private function createSettingsApiPolicyGateway(): SettingsApiPolicyGateway { return $this->settingsApiPolicyGateway ??= $this->settingServicesFactory->createSettingsApiPolicyGateway(); } private function createSettingsDefaultsGateway(): SettingsDefaultsGateway { return $this->settingsDefaultsGateway ??= $this->settingServicesFactory->createSettingsDefaultsGateway(); } private function createSettingsAppGateway(): SettingsAppGateway { return $this->settingsAppGateway ??= $this->settingServicesFactory->createSettingsAppGateway(); } private function createSettingsLoginPersistenceGateway(): SettingsLoginPersistenceGateway { return $this->settingsLoginPersistenceGateway ??= $this->settingServicesFactory->createSettingsLoginPersistenceGateway(); } }