summaryrefslogtreecommitdiffstats
path: root/Http/Authentication
diff options
context:
space:
mode:
authorBoris Vujicic <boris.vujicic@gmail.com>2014-07-05 16:07:05 +0200
committerFabien Potencier <fabien.potencier@gmail.com>2014-08-31 06:19:38 +0200
commit5c9bc9d8df6e9cc4321221c0ba77907779e99d1b (patch)
tree4ed967e2adf4a7bf9659d71c844ee690ec0bb8b2 /Http/Authentication
parent24f753ea356e86d522f673283ed33db294601c09 (diff)
downloadsymfony-security-5c9bc9d8df6e9cc4321221c0ba77907779e99d1b.zip
symfony-security-5c9bc9d8df6e9cc4321221c0ba77907779e99d1b.tar.gz
symfony-security-5c9bc9d8df6e9cc4321221c0ba77907779e99d1b.tar.bz2
[SecurityBundle] error helper added symfony/symfony#11147
Diffstat (limited to 'Http/Authentication')
-rw-r--r--Http/Authentication/AuthenticationUtils.php87
1 files changed, 87 insertions, 0 deletions
diff --git a/Http/Authentication/AuthenticationUtils.php b/Http/Authentication/AuthenticationUtils.php
new file mode 100644
index 0000000..ed4b0a1
--- /dev/null
+++ b/Http/Authentication/AuthenticationUtils.php
@@ -0,0 +1,87 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\Security\Http\Authentication;
+
+use Symfony\Component\HttpFoundation\RequestStack;
+use Symfony\Component\Security\Core\Exception\AuthenticationException;
+use Symfony\Component\Security\Core\SecurityContextInterface;
+use Symfony\Component\HttpFoundation\Request;
+
+/**
+ * Extracts Security Errors from Request
+ *
+ * @author Boris Vujicic <boris.vujicic@gmail.com>
+ */
+class AuthenticationUtils
+{
+ /**
+ * @var RequestStack
+ */
+ private $requestStack;
+
+ /**
+ * @param RequestStack $requestStack
+ */
+ public function __construct(RequestStack $requestStack)
+ {
+ $this->requestStack = $requestStack;
+ }
+
+ /**
+ * @param bool $clearSession
+ * @return null|AuthenticationException
+ */
+ public function getLastAuthenticationError($clearSession = true)
+ {
+ $request = $this->getRequest();
+ $session = $request->getSession();
+ $authenticationException = null;
+
+ if ($request->attributes->has(SecurityContextInterface::AUTHENTICATION_ERROR)) {
+ $authenticationException = $request->attributes->get(SecurityContextInterface::AUTHENTICATION_ERROR);
+ } elseif ($session !== null && $session->has(SecurityContextInterface::AUTHENTICATION_ERROR)) {
+ $authenticationException = $session->get(SecurityContextInterface::AUTHENTICATION_ERROR);
+
+ if ($clearSession) {
+ $session->remove(SecurityContextInterface::AUTHENTICATION_ERROR);
+ }
+
+ }
+
+ return $authenticationException;
+ }
+
+ /**
+ * @return string
+ */
+ public function getLastUsername()
+ {
+ $session = $this->getRequest()->getSession();
+
+ return null === $session ? '' : $session->get(SecurityContextInterface::LAST_USERNAME);
+ }
+
+ /**
+ * @return Request
+ * @throws \LogicException
+ */
+ private function getRequest()
+ {
+ $request = $this->requestStack->getCurrentRequest();
+
+ if (null === $request) {
+ throw new \LogicException('Request should exist so it can be processed for error.');
+ }
+
+ return $request;
+ }
+}