Аутентификационный адаптер Zf2 + Doctrine 2, ограничивающий выбор флага удаления, равен истинной строке

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

'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

Решение

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

Решением было написать собственный Аут-адаптер. Этот класс реализует 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.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]