2014-10-28 2 views
0

У меня проблема, например, в моей таблице таблицы есть столбец флажка удаления. Поэтому, если я удалю пользователя, он будет установлен как 1. И я могу создать нового пользователя с одинаковым идентификатором почты. В то время этот код не работает, есть две записи с одинаковым идентификатором почты. Есть ли способ дать флаг удаления, также как и электронная почта. Мой module.config.php:Zf2 + Doctrine 2 Атрибут проверки подлинности ограничен флажком удаления fetch равен true строка

'doctrine' => array(
    'driver' => array(
     __NAMESPACE__ . '_driver' => array(
      'class' => 'Doctrine\ORM\Mapping\Driver\AnnotationDriver', 
      'cache' => 'array', 
      'paths' => array(__DIR__ . '/../src/' . __NAMESPACE__ . '/Entity') 
     ), 
     'orm_default' => array(
      'drivers' => array(
       __NAMESPACE__ . '\Entity' => __NAMESPACE__ . '_driver' 
      ) 
     ) 
    ), 
    'authentication' => array(
     'orm_default' => array(
      'object_manager' => 'Doctrine\ORM\EntityManager', 
      'identity_class' => 'Authentication\Entity\Account', 
      'identity_property' => 'email', 
      'credential_property' => 'password', 
      'credential_callable' => function(Account $account, $passwordGiven) { 
       $userPassword = new UserPassword(); 

       $res = $userPassword->verify($account->getPassword(), $passwordGiven); 

       return $res && !$account->getDeleteFlag() && $account->getStatus(); 
      }, 
     ), 
    )   
) 
+0

Итак, любой успех? – fkupper

ответ

0

Я не знаю, если это работает на ZF2, я сейчас работаю с ZF1, но у меня был вид той же проблемы.

Решение заключалось в создании пользовательского адаптера Auth. Этот класс реализует Zend_Auth_Adapter_Interface и требует метода authenticate.

В моей реализации authenticate я включил пользовательскую проверку для флага плюса пользователя и пароля.

Так что, когда я должен проверить-пользователь:

$authAdapter = new MyAuthAdapter(); 
// I need only to set these values since the flag is always considered 
// to be false so the user can authenticate 
$authAdapter->setCredential($password) 
      ->setIdentity($username); 
      //->setDeleteFlag($yourFlag) you could also implement this 
Zend_Auth::getInstance()->authenticate($authAdapter)->isValid(); 

Надеется, что это помогает, так как это на ZF1.

 Смежные вопросы

  • Нет связанных вопросов^_^