- <?php
- /**
- * Zend Framework (http://framework.zend.com/)
- *
- * @link http://github.com/zendframework/zf2 for the canonical source repository
- * @copyright Copyright (c) 2005-2014 Zend Technologies USA Inc. (http://www.zend.com)
- * @license http://framework.zend.com/license/new-bsd New BSD License
- */
-
- namespace Zend\Authentication\Validator;
-
- use Traversable;
- use Zend\Authentication\Adapter\ValidatableAdapterInterface;
- use Zend\Authentication\AuthenticationService;
- use Zend\Authentication\Result;
- use Zend\Authentication\Exception;
- use Zend\Stdlib\ArrayUtils;
- use Zend\Validator\AbstractValidator;
-
- /**
- * Authentication Validator
- */
- class Authentication extends AbstractValidator
- {
- /**
- * Error codes
- * @const string
- */
- const IDENTITY_NOT_FOUND = 'identityNotFound';
- const IDENTITY_AMBIGUOUS = 'identityAmbiguous';
- const CREDENTIAL_INVALID = 'credentialInvalid';
- const UNCATEGORIZED = 'uncategorized';
- const GENERAL = 'general';
-
- /**
- * Error Messages
- * @var array
- */
- protected $messageTemplates = array(
- self::IDENTITY_NOT_FOUND => 'Invalid identity',
- self::IDENTITY_AMBIGUOUS => 'Identity is ambiguous',
- self::CREDENTIAL_INVALID => 'Invalid password',
- self::UNCATEGORIZED => 'Authentication failed',
- self::GENERAL => 'Authentication failed',
- );
-
- /**
- * Authentication Adapter
- * @var ValidatableAdapterInterface
- */
- protected $adapter;
-
- /**
- * Identity (or field)
- * @var string
- */
- protected $identity;
-
- /**
- * Credential (or field)
- * @var string
- */
- protected $credential;
-
- /**
- * Authentication Service
- * @var AuthenticationService
- */
- protected $service;
-
- /**
- * Sets validator options
- *
- * @param mixed $options
- */
- public function __construct($options = null)
- {
- if ($options instanceof Traversable) {
- $options = ArrayUtils::iteratorToArray($options);
- }
-
- if (is_array($options)) {
- if (array_key_exists('adapter', $options)) {
- $this->setAdapter($options['adapter']);
- }
- if (array_key_exists('identity', $options)) {
- $this->setIdentity($options['identity']);
- }
- if (array_key_exists('credential', $options)) {
- $this->setCredential($options['credential']);
- }
- if (array_key_exists('service', $options)) {
- $this->setService($options['service']);
- }
- }
- parent::__construct($options);
- }
-
- /**
- * Get Adapter
- *
- * @return ValidatableAdapterInterface
- */
- public function getAdapter()
- {
- return $this->adapter;
- }
-
- /**
- * Set Adapter
- *
- * @param ValidatableAdapterInterface $adapter
- * @return Authentication
- */
- public function setAdapter(ValidatableAdapterInterface $adapter)
- {
- $this->adapter = $adapter;
-
- return $this;
- }
-
- /**
- * Get Identity
- *
- * @return mixed
- */
- public function getIdentity()
- {
- return $this->identity;
- }
-
- /**
- * Set Identity
- *
- * @param mixed $identity
- * @return Authentication
- */
- public function setIdentity($identity)
- {
- $this->identity = $identity;
-
- return $this;
- }
-
- /**
- * Get Credential
- *
- * @return mixed
- */
- public function getCredential()
- {
- return $this->credential;
- }
-
- /**
- * Set Credential
- *
- * @param mixed $credential
- * @return Authentication
- */
- public function setCredential($credential)
- {
- $this->credential = $credential;
-
- return $this;
- }
-
- /**
- * Get Service
- *
- * @return AuthenticationService
- */
- public function getService()
- {
- return $this->service;
- }
-
- /**
- * Set Service
- *
- * @param AuthenticationService $service
- * @return Authentication
- */
- public function setService(AuthenticationService $service)
- {
- $this->service = $service;
-
- return $this;
- }
-
- /**
- * Is Valid
- *
- * @param mixed $value
- * @param array $context
- * @return bool
- */
- public function isValid($value = null, $context = null)
- {
- if ($value !== null) {
- $this->setCredential($value);
- }
-
- if (($context !== null) && array_key_exists($this->identity, $context)) {
- $identity = $context[$this->identity];
- } else {
- $identity = $this->identity;
- }
- if (!$this->identity) {
- throw new Exception\RuntimeException('Identity must be set prior to validation');
- }
-
- if (($context !== null) && array_key_exists($this->credential, $context)) {
- $credential = $context[$this->credential];
- } else {
- $credential = $this->credential;
- }
-
- if (!$this->adapter) {
- throw new Exception\RuntimeException('Adapter must be set prior to validation');
- }
- $this->adapter->setIdentity($identity);
- $this->adapter->setCredential($credential);
-
- if (!$this->service) {
- throw new Exception\RuntimeException('AuthenticationService must be set prior to validation');
- }
- $result = $this->service->authenticate($this->adapter);
-
- if ($result->getCode() != Result::SUCCESS) {
- switch ($result->getCode()) {
- case Result::FAILURE_IDENTITY_NOT_FOUND:
- $this->error(self::IDENTITY_NOT_FOUND);
- break;
- case Result::FAILURE_CREDENTIAL_INVALID:
- $this->error(self::CREDENTIAL_INVALID);
- break;
- case Result::FAILURE_IDENTITY_AMBIGUOUS:
- $this->error(self::IDENTITY_AMBIGUOUS);
- break;
- case Result::FAILURE_UNCATEGORIZED:
- $this->error(self::UNCATEGORIZED);
- break;
- default:
- $this->error(self::GENERAL);
- }
-
- return false;
- }
-
- return true;
- }
- }
# |
Change |
User |
Description |
Committed |
|
#1
|
18334 |
Liz Lam |
initial add of jambox |
9 years ago
|
|