Do not always remove password field, but give other plugins the chance to keep password field by setting password enabled to active.

master v0.2.0
Lars Vierbergen 7 years ago
parent 861518efdd
commit 834edefe6d
  1. 36
      EventListener/RegistrationHandlerListener.php

@ -46,14 +46,16 @@ class RegistrationHandlerListener implements EventSubscriberInterface
{ {
return [ return [
RegistrationEvents::BUILD_FORM => [ RegistrationEvents::BUILD_FORM => [
'onBuildForm',
10
],
RegistrationEvents::HANDLE_FORM => [
[ [
'onHandleFormSetPasswordEnabled', 'onBuildFormSetPasswordEnabled',
10 10
], ],
[
'onBuildFormRemovePasswordField',
-20
]
],
RegistrationEvents::HANDLE_FORM => [
[ [
'onHandleFormConnectExternal', 'onHandleFormConnectExternal',
0 0
@ -83,10 +85,9 @@ class RegistrationHandlerListener implements EventSubscriberInterface
return null; return null;
} }
public function onBuildForm(RegistrationFormEvent $event) public function onBuildFormSetPasswordEnabled(RegistrationFormEvent $event)
{ {
if ($user = $this->getTemporaryUser()) { if ($user = $this->getTemporaryUser()) {
$event->getFormBuilder()->remove('password');
$event->getFormBuilder() $event->getFormBuilder()
->getData() ->getData()
->setDisplayName($user->getDisplayName()) ->setDisplayName($user->getDisplayName())
@ -94,15 +95,20 @@ class RegistrationHandlerListener implements EventSubscriberInterface
} }
} }
public function onHandleFormSetPasswordEnabled(RegistrationHandleEvent $event) public function onBuildFormRemovePasswordField(RegistrationFormEvent $event)
{ {
if ($event->isFailed()) if ($this->getTemporaryUser()) {
return; switch ($event->getFormBuilder()
$user = $event->getForm()->getData(); ->getData()
if (!$user) ->getPasswordEnabled()) {
return; case 0:
/* @var $user User */ case 2:
$user->setPasswordEnabled(2); $event->getFormBuilder()->remove('password');
break;
case 1:
break;
}
}
} }
public function onHandleFormConnectExternal(RegistrationHandleEvent $event) public function onHandleFormConnectExternal(RegistrationHandleEvent $event)