Files
torebki-fabiola.pl/wp-content/plugins/post-smtp/Postman/Postman-Auth/PostmanAuthenticationManagerFactory.php
2026-03-05 13:07:40 +01:00

58 lines
2.3 KiB
PHP

<?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;
}
}
}