1
この問題については、多くの質問がありますが、正直言って誰も私のために働いていません(私はSymfony 3.3とFOSUserBundle 2.xを使用しています)。登録後にユーザーを無効にして、管理者に確認させてください
私はachiveする必要があります:
- ユーザーが正常に自分のアカウントがデフォルトに自動的に設定されて
- 私のページに登録する(何もメールは送信されません)
- 管理者がアクティブにすることができます/彼からそのアカウントを有効にします管理パネル
私はイベントリスナーを作成しているが、それは..私もenabled
ステータスを変更するユーザーオブジェクトを操作することはできません動作しません...
#config.yml
fos_user:
db_driver: orm # other valid values are 'mongodb' and 'couchdb'
firewall_name: main
user_class: AppBundle\Entity\User
from_email:
address: "%mailer_user%"
sender_name: "%mailer_user%"
registration:
form:
type: AppBundle\Form\RegistrationType
とイベントリスナー:
class RegistrationListener implements EventSubscriberInterface
{
/**
* @var RouterInterface
*/
private $router;
private $em;
public function __construct(RouterInterface $route, UserManagerInterface $em)
{
$this->router = $route;
$this->em = $em;
}
/**
* {@inheritDoc}
*/
public static function getSubscribedEvents()
{
return array(
FOSUserEvents::REGISTRATION_SUCCESS => 'onRegistrationSuccess',
FOSUserEvents::REGISTRATION_CONFIRMED=> ['onRegistrationConfirmed', 999],
FOSUserEvents::REGISTRATION_FAILURE => 'onRegistrationFailure'
);
}
public function onRegistrationSuccess(FormEvent $event)
{
$url = $this->router->generate('app.registration.succes');
$response = new JsonResponse(['redirectUrl' => $url]);
$event->setResponse($response);
}
public function onRegistrationFailure(FormEvent $event)
{
$array = array('success' => false, 'message' => (string)$event->getForm()->getErrors(true, true));
$response = new JsonResponse($array, Response::HTTP_BAD_REQUEST);
$event->setResponse($response);
}
public function onRegistrationConfirmed(FilterUserResponseEvent $event)
{
/**
* this one is no working.. after registration account is enabled anyway...
*/
$user = $event->getUser();
$user->setEnabled(false);
$user->setSalt('test');
$this->em->updateUser($user);
}
}