. * * The interactive user interfaces in modified source and object code versions * of this program must display Appropriate Legal Notices, as required under * Section 5 of the GNU Affero General Public License version 3. * * In accordance with Section 7(b) of the GNU Affero General Public License version 3, * these Appropriate Legal Notices must retain the display of the "EspoCRM" word. ************************************************************************/ namespace Espo\Core\Authentication; use Espo\Core\InjectableFactory; use Espo\Core\Utils\Metadata; use RuntimeException; class LogoutFactory { public function __construct(private InjectableFactory $injectableFactory, private Metadata $metadata) {} public function create(string $method): Logout { $className = $this->getClassName($method); if (!$className) { throw new RuntimeException(); } return $this->injectableFactory->create($className); } public function isCreatable(string $method): bool { return (bool) $this->getClassName($method); } /** * @return ?class-string */ private function getClassName(string $method): ?string { return $this->metadata->get(['authenticationMethods', $method, 'logoutClassName']); } }