diff options
Diffstat (limited to 'Postman/Postman-Auth/PostmanAuthenticationManagerFactory.php')
-rw-r--r-- | Postman/Postman-Auth/PostmanAuthenticationManagerFactory.php | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/Postman/Postman-Auth/PostmanAuthenticationManagerFactory.php b/Postman/Postman-Auth/PostmanAuthenticationManagerFactory.php new file mode 100644 index 0000000..799b999 --- /dev/null +++ b/Postman/Postman-Auth/PostmanAuthenticationManagerFactory.php @@ -0,0 +1,58 @@ +<?php +if ( ! defined( 'ABSPATH' ) ) { + exit; // Exit if accessed directly +} +if (! class_exists ( "PostmanAuthenticationManagerFactory" )) { + + require_once 'PostmanGoogleAuthenticationManager.php'; + require_once 'PostmanMicrosoftAuthenticationManager.php'; + require_once 'PostmanNonOAuthAuthenticationManager.php'; + require_once 'PostmanYahooAuthenticationManager.php'; + + // + class PostmanAuthenticationManagerFactory { + private $logger; + + // singleton instance + public static function getInstance() { + static $inst = null; + if ($inst === null) { + $inst = new PostmanAuthenticationManagerFactory (); + } + return $inst; + } + private function __construct() { + $this->logger = new PostmanLogger ( get_class ( $this ) ); + } + public function createAuthenticationManager() { + $transport = PostmanTransportRegistry::getInstance ()->getSelectedTransport (); + return $this->createManager ( $transport ); + } + private function createManager(PostmanZendModuleTransport $transport) { + $options = PostmanOptions::getInstance (); + $authorizationToken = PostmanOAuthToken::getInstance (); + $authenticationType = $options->getAuthenticationType (); + $hostname = $options->getHostname (); + $clientId = $options->getClientId (); + $clientSecret = $options->getClientSecret (); + $senderEmail = $options->getMessageSenderEmail (); + $scribe = $transport->getScribe (); + $redirectUrl = $scribe->getCallbackUrl (); + if ($transport->isOAuthUsed ( $options->getAuthenticationType () )) { + if ($transport->isServiceProviderGoogle ( $hostname )) { + $authenticationManager = new PostmanGoogleAuthenticationManager ( $clientId, $clientSecret, $authorizationToken, $redirectUrl, $senderEmail ); + } else if ($transport->isServiceProviderMicrosoft ( $hostname )) { + $authenticationManager = new PostmanMicrosoftAuthenticationManager ( $clientId, $clientSecret, $authorizationToken, $redirectUrl ); + } else if ($transport->isServiceProviderYahoo ( $hostname )) { + $authenticationManager = new PostmanYahooAuthenticationManager ( $clientId, $clientSecret, $authorizationToken, $redirectUrl ); + } else { + assert ( false ); + } + } else { + $authenticationManager = new PostmanNonOAuthAuthenticationManager (); + } + $this->logger->debug ( 'Created ' . get_class ( $authenticationManager ) ); + return $authenticationManager; + } + } +}
\ No newline at end of file |