instances added god may help
This commit is contained in:
271
lib/Service/Auth/AuthServicesFactory.php
Normal file
271
lib/Service/Auth/AuthServicesFactory.php
Normal file
@@ -0,0 +1,271 @@
|
||||
<?php
|
||||
|
||||
namespace MintyPHP\Service\Auth;
|
||||
|
||||
use MintyPHP\Repository\Auth\ApiTokenRepository;
|
||||
use MintyPHP\Repository\Auth\EmailVerificationRepository;
|
||||
use MintyPHP\Repository\Auth\PasswordResetRepository;
|
||||
use MintyPHP\Repository\Auth\RememberTokenRepository;
|
||||
use MintyPHP\Repository\Tenant\TenantMicrosoftAuthRepository;
|
||||
use MintyPHP\Repository\User\UserExternalIdentityRepository;
|
||||
use MintyPHP\Service\Access\AccessServicesFactory;
|
||||
use MintyPHP\Service\Access\PermissionGateway;
|
||||
use MintyPHP\Service\Mail\MailServicesFactory;
|
||||
use MintyPHP\Service\Settings\SettingGateway;
|
||||
use MintyPHP\Service\Settings\SettingServicesFactory;
|
||||
use MintyPHP\Service\Tenant\TenantServicesFactory;
|
||||
use MintyPHP\Service\User\UserServicesFactory;
|
||||
|
||||
class AuthServicesFactory
|
||||
{
|
||||
private ?AccessServicesFactory $accessServicesFactory = null;
|
||||
private ?TenantServicesFactory $tenantServicesFactory = null;
|
||||
private ?UserServicesFactory $userServicesFactory = null;
|
||||
private ?MailServicesFactory $mailServicesFactory = null;
|
||||
private ?SettingServicesFactory $settingServicesFactory = null;
|
||||
private ?AuthSettingsGateway $authSettingsGateway = null;
|
||||
private ?SettingGateway $settingGateway = null;
|
||||
private ?AuthScopeGateway $authScopeGateway = null;
|
||||
private ?AuthPermissionGateway $authPermissionGateway = null;
|
||||
private ?PermissionGateway $permissionGateway = null;
|
||||
private ?AuthTenantGateway $authTenantGateway = null;
|
||||
private ?AuthCryptoGateway $authCryptoGateway = null;
|
||||
private ?AuthTenantSsoGateway $authTenantSsoGateway = null;
|
||||
private ?AuthSavedFilterGateway $authSavedFilterGateway = null;
|
||||
private ?AuthAvatarGateway $authAvatarGateway = null;
|
||||
private ?AuthExternalIdentityGateway $authExternalIdentityGateway = null;
|
||||
private ?ApiTokenRepository $apiTokenRepository = null;
|
||||
private ?RememberTokenRepository $rememberTokenRepository = null;
|
||||
private ?PasswordResetRepository $passwordResetRepository = null;
|
||||
private ?EmailVerificationRepository $emailVerificationRepository = null;
|
||||
private ?TenantMicrosoftAuthRepository $tenantMicrosoftAuthRepository = null;
|
||||
private ?UserExternalIdentityRepository $userExternalIdentityRepository = null;
|
||||
private ?TenantSsoService $tenantSsoService = null;
|
||||
private ?OidcHttpGateway $oidcHttpGateway = null;
|
||||
private ?MicrosoftOidcStateStoreService $microsoftOidcStateStoreService = null;
|
||||
private ?MicrosoftOidcService $microsoftOidcService = null;
|
||||
private ?ApiTokenService $apiTokenService = null;
|
||||
private ?PasswordResetService $passwordResetService = null;
|
||||
private ?EmailVerificationService $emailVerificationService = null;
|
||||
private ?RememberMeService $rememberMeService = null;
|
||||
private ?AuthService $authService = null;
|
||||
private ?SsoUserLinkService $ssoUserLinkService = null;
|
||||
|
||||
public function createApiTokenService(): ApiTokenService
|
||||
{
|
||||
return $this->apiTokenService ??= new ApiTokenService(
|
||||
$this->userServicesFactory()->createUserReadRepository(),
|
||||
$this->createApiTokenRepository(),
|
||||
$this->createAuthSettingsGateway(),
|
||||
$this->createAuthScopeGateway()
|
||||
);
|
||||
}
|
||||
|
||||
public function createPasswordResetService(): PasswordResetService
|
||||
{
|
||||
return $this->passwordResetService ??= new PasswordResetService(
|
||||
$this->userServicesFactory()->createUserReadRepository(),
|
||||
$this->createPasswordResetRepository(),
|
||||
$this->userServicesFactory()->createUserPasswordService(),
|
||||
$this->createRememberMeService(),
|
||||
$this->mailServicesFactory()->createMailService()
|
||||
);
|
||||
}
|
||||
|
||||
public function createEmailVerificationService(): EmailVerificationService
|
||||
{
|
||||
return $this->emailVerificationService ??= new EmailVerificationService(
|
||||
$this->userServicesFactory()->createUserReadRepository(),
|
||||
$this->userServicesFactory()->createUserWriteRepository(),
|
||||
$this->createEmailVerificationRepository(),
|
||||
$this->mailServicesFactory()->createMailService()
|
||||
);
|
||||
}
|
||||
|
||||
public function createRememberMeService(): RememberMeService
|
||||
{
|
||||
return $this->rememberMeService ??= new RememberMeService(
|
||||
$this->userServicesFactory()->createUserReadRepository(),
|
||||
$this->userServicesFactory()->createUserWriteRepository(),
|
||||
$this->createRememberTokenRepository(),
|
||||
$this->userServicesFactory()->createUserTenantContextService(),
|
||||
$this->createAuthPermissionGateway(),
|
||||
$this->createAuthSavedFilterGateway()
|
||||
);
|
||||
}
|
||||
|
||||
public function createAuthService(): AuthService
|
||||
{
|
||||
return $this->authService ??= new AuthService(
|
||||
$this->userServicesFactory()->createUserReadRepository(),
|
||||
$this->userServicesFactory()->createUserWriteRepository(),
|
||||
$this->userServicesFactory()->createUserAccountService(),
|
||||
$this->userServicesFactory()->createUserTenantContextService(),
|
||||
$this->createRememberMeService(),
|
||||
$this->createEmailVerificationService(),
|
||||
$this->createAuthPermissionGateway(),
|
||||
$this->createAuthTenantSsoGateway(),
|
||||
$this->createAuthSavedFilterGateway()
|
||||
);
|
||||
}
|
||||
|
||||
public function createSsoUserLinkService(): SsoUserLinkService
|
||||
{
|
||||
return $this->ssoUserLinkService ??= new SsoUserLinkService(
|
||||
$this->userServicesFactory()->createUserReadRepository(),
|
||||
$this->userServicesFactory()->createUserWriteRepository(),
|
||||
$this->userServicesFactory()->createUserAssignmentService(),
|
||||
$this->userServicesFactory()->createUserTenantRepository(),
|
||||
$this->createAuthSettingsGateway(),
|
||||
$this->createAuthTenantSsoGateway(),
|
||||
$this->createAuthAvatarGateway(),
|
||||
$this->createAuthExternalIdentityGateway()
|
||||
);
|
||||
}
|
||||
|
||||
public function createTenantSsoService(): TenantSsoService
|
||||
{
|
||||
return $this->tenantSsoService ??= new TenantSsoService(
|
||||
$this->createAuthTenantGateway(),
|
||||
$this->createTenantMicrosoftAuthRepository(),
|
||||
$this->createAuthSettingsGateway(),
|
||||
$this->createAuthCryptoGateway()
|
||||
);
|
||||
}
|
||||
|
||||
public function createMicrosoftOidcStateStore(): MicrosoftOidcStateStoreService
|
||||
{
|
||||
return $this->microsoftOidcStateStoreService ??= new MicrosoftOidcStateStoreService();
|
||||
}
|
||||
|
||||
public function createMicrosoftOidcService(): MicrosoftOidcService
|
||||
{
|
||||
return $this->microsoftOidcService ??= new MicrosoftOidcService(
|
||||
$this->createTenantSsoService(),
|
||||
$this->createAuthTenantGateway(),
|
||||
$this->createOidcHttpGateway(),
|
||||
$this->createMicrosoftOidcStateStore()
|
||||
);
|
||||
}
|
||||
|
||||
private function userServicesFactory(): UserServicesFactory
|
||||
{
|
||||
return $this->userServicesFactory ??= new UserServicesFactory();
|
||||
}
|
||||
|
||||
private function createAuthSettingsGateway(): AuthSettingsGateway
|
||||
{
|
||||
return $this->authSettingsGateway ??= new AuthSettingsGateway($this->createSettingGateway());
|
||||
}
|
||||
|
||||
public function createAuthScopeGateway(): AuthScopeGateway
|
||||
{
|
||||
return $this->authScopeGateway ??= new AuthScopeGateway($this->tenantServicesFactory()->createTenantScopeService());
|
||||
}
|
||||
|
||||
private function createAuthPermissionGateway(): AuthPermissionGateway
|
||||
{
|
||||
return $this->authPermissionGateway ??= new AuthPermissionGateway($this->createPermissionGateway());
|
||||
}
|
||||
|
||||
private function createPermissionGateway(): PermissionGateway
|
||||
{
|
||||
return $this->permissionGateway ??= $this->accessServicesFactory()->createPermissionGateway();
|
||||
}
|
||||
|
||||
private function accessServicesFactory(): AccessServicesFactory
|
||||
{
|
||||
return $this->accessServicesFactory ??= new AccessServicesFactory();
|
||||
}
|
||||
|
||||
private function createSettingGateway(): SettingGateway
|
||||
{
|
||||
return $this->settingGateway ??= $this->settingServicesFactory()->createSettingGateway();
|
||||
}
|
||||
|
||||
private function settingServicesFactory(): SettingServicesFactory
|
||||
{
|
||||
return $this->settingServicesFactory ??= new SettingServicesFactory();
|
||||
}
|
||||
|
||||
private function mailServicesFactory(): MailServicesFactory
|
||||
{
|
||||
return $this->mailServicesFactory ??= new MailServicesFactory();
|
||||
}
|
||||
|
||||
private function tenantServicesFactory(): TenantServicesFactory
|
||||
{
|
||||
return $this->tenantServicesFactory ??= new TenantServicesFactory();
|
||||
}
|
||||
|
||||
private function createAuthTenantGateway(): AuthTenantGateway
|
||||
{
|
||||
return $this->authTenantGateway ??= new AuthTenantGateway();
|
||||
}
|
||||
|
||||
private function createAuthCryptoGateway(): AuthCryptoGateway
|
||||
{
|
||||
return $this->authCryptoGateway ??= new AuthCryptoGateway();
|
||||
}
|
||||
|
||||
private function createAuthTenantSsoGateway(): AuthTenantSsoGateway
|
||||
{
|
||||
return $this->authTenantSsoGateway ??= new AuthTenantSsoGateway($this->createTenantSsoService());
|
||||
}
|
||||
|
||||
private function createAuthSavedFilterGateway(): AuthSavedFilterGateway
|
||||
{
|
||||
return $this->authSavedFilterGateway ??= new AuthSavedFilterGateway(
|
||||
$this->userServicesFactory()->createUserSavedFilterService()
|
||||
);
|
||||
}
|
||||
|
||||
private function createAuthAvatarGateway(): AuthAvatarGateway
|
||||
{
|
||||
return $this->authAvatarGateway ??= new AuthAvatarGateway(
|
||||
$this->userServicesFactory()->createUserAvatarService()
|
||||
);
|
||||
}
|
||||
|
||||
private function createAuthExternalIdentityGateway(): AuthExternalIdentityGateway
|
||||
{
|
||||
return $this->authExternalIdentityGateway ??= new AuthExternalIdentityGateway(
|
||||
$this->createUserExternalIdentityRepository()
|
||||
);
|
||||
}
|
||||
|
||||
private function createTenantMicrosoftAuthRepository(): TenantMicrosoftAuthRepository
|
||||
{
|
||||
return $this->tenantMicrosoftAuthRepository ??= new TenantMicrosoftAuthRepository();
|
||||
}
|
||||
|
||||
private function createApiTokenRepository(): ApiTokenRepository
|
||||
{
|
||||
return $this->apiTokenRepository ??= new ApiTokenRepository();
|
||||
}
|
||||
|
||||
private function createRememberTokenRepository(): RememberTokenRepository
|
||||
{
|
||||
return $this->rememberTokenRepository ??= new RememberTokenRepository();
|
||||
}
|
||||
|
||||
private function createPasswordResetRepository(): PasswordResetRepository
|
||||
{
|
||||
return $this->passwordResetRepository ??= new PasswordResetRepository();
|
||||
}
|
||||
|
||||
private function createEmailVerificationRepository(): EmailVerificationRepository
|
||||
{
|
||||
return $this->emailVerificationRepository ??= new EmailVerificationRepository();
|
||||
}
|
||||
|
||||
private function createUserExternalIdentityRepository(): UserExternalIdentityRepository
|
||||
{
|
||||
return $this->userExternalIdentityRepository ??= new UserExternalIdentityRepository();
|
||||
}
|
||||
|
||||
private function createOidcHttpGateway(): OidcHttpGateway
|
||||
{
|
||||
return $this->oidcHttpGateway ??= new OidcHttpGateway();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user