. // }}} /** * Wrapper around Symfony's Security service, for static access * * @package GNUsocial * @category Security * * @author Hugo Sales * @copyright 2020-2021 Free Software Foundation, Inc http://www.fsf.org * @license https://www.gnu.org/licenses/agpl.html GNU AGPL v3 or later */ namespace App\Core; use App\Entity\LocalUser; use BadMethodCallException; use Symfony\Component\EventDispatcher\EventSubscriberInterface; use Symfony\Component\Security\Core\Security as SymfonySecurity; use Symfony\Component\Security\Http\Event\LoginFailureEvent; use Symfony\Component\Security\Http\Event\LoginSuccessEvent; /** * Forwards method calls to either Symfony\Component\Security\Core\Security or * HtmlSanitizer\SanitizerInterface, calling the first existing method, in that order * * @codeCoverageIgnore * @mixin SymfonySecurity * * @method static LocalUser getUser() */ class Security implements EventSubscriberInterface //implements AuthenticatorInterface { private static ?SymfonySecurity $security; public static function setHelper($sec): void { self::$security = $sec; } public function loginSucess(LoginSuccessEvent $event): LoginSuccessEvent { Event::handle('LoginSuccess', [$event]); return $event; } public function loginFailure(LoginFailureEvent $event): LoginFailureEvent { Event::handle('LoginFailure', [$event]); return $event; } public static function getSubscribedEvents(): array { return [ LoginSuccessEvent::class => 'loginSucess', LoginFailureEvent::class => 'loginFailure', ]; } public static function __callStatic(string $name, array $args) { if (method_exists(self::$security, $name)) { return self::$security->{$name}(...$args); } else { throw new BadMethodCallException("Method Security::{$name} doesn't exist"); } } }