Skip to content
Snippets Groups Projects
Commit a4f9212f authored by Chris Ballard's avatar Chris Ballard
Browse files

Adds support for Auth Source Factories (#762)

parent 7b75bdb4
No related branches found
No related tags found
No related merge requests found
<?php
use SimpleSAML\Auth\SourceFactory;
/**
* This class defines a base class for authentication source.
......@@ -295,11 +296,26 @@ abstract class SimpleSAML_Auth_Source
self::validateSource($config, $authId);
$className = SimpleSAML\Module::resolveClass($config[0], 'Auth_Source', 'SimpleSAML_Auth_Source');
$id = $config[0];
$info = array('AuthId' => $authId);
$authSource = null;
unset($config[0]);
return new $className($info, $config);
try {
// Check whether or not there's a factory responsible for instantiating our Auth Source instance
$factoryClass = SimpleSAML\Module::resolveClass($id, 'Auth_Source_Factory', SourceFactory::class);
/** @var SourceFactory $factory */
$factory = new $factoryClass;
$authSource = $factory->create($info, $config);
} catch (Exception $e) {
// If not, instantiate the Auth Source here
$className = SimpleSAML\Module::resolveClass($id, 'Auth_Source', 'SimpleSAML_Auth_Source');
$authSource = new $className($info, $config);
}
return $authSource;
}
......
<?php
namespace SimpleSAML\Auth;
use SimpleSAML_Auth_Source;
interface SourceFactory
{
/**
* @param array $info
* @param array $config
* @return SimpleSAML_Auth_Source
*/
public function create(array $info, array $config);
}
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment