utilisation JMSSecurityExtraBundleAnnotationSécurisé;
utilisation SensioOffre groupéeFrameworkExtraBundleConfigurationMéthode;
utilisation SensioOffre groupéeFrameworkExtraBundleConfigurationItinéraire;
utilisation SensioOffre groupéeFrameworkExtraBundleConfigurationModèle;
utilisation SymfonyOffre groupéeFrameworkBundleContrôleurContrôleur;
utilisation SymfonyComposantHttpFoundationDemande;
utilisation SymfonyComposantSécuritéNoyauSecurityContext;
classe Contrôleur de sécurité étend Contrôleur
{
* @Méthode({ » GET « })
* @Route( » /login « , name= « login « )
* @Template()
*/
public fonction connexion(Demande $request)
{
$request = $this->getRequest() ;
$session = $request->getSession() ;
si ($request->attributes->has(SecurityContext::AUTHENTICATION_ERROR)) {
$error = $request->attributes->get(SecurityContext::AUTHENTICATION_ERROR) ;
} autre {
$error = $session->get(SecurityContext::AUTHENTICATION_ERROR) ;
$session->remove(SecurityContext::AUTHENTICATION_ERROR) ;
}
$params = tableau(
» last_username « => ; $session->get(SecurityContext::LAST_USERNAME),
» erreur « => ; $error,
» message « => ; $request->get( » message « ),
) ;
si ($request->isXmlHttpRequest()) {
return $this->render( » GCDirectoryMainBundle:Security:login-ajax.html.twig « , $params) ;
}
retour $params ;
}
* @Méthode({ » POST « })
* @Route( » /login_check « , name= « login_check « )
*/
public fonction vérifier()
{
jeter nouveau RuntimeException(‘Vous devez configurer le chemin de vérification pour qu’il soit géré par le pare-feu en utilisant form_login dans la configuration de votre pare-feu de sécurité.’) ;
}
* @Méthode({ » GET « })
* @Route( » /logout « , name= « logout »)
*/
public fonction déconnexion()
{
jeter nouveau RuntimeException(‘Vous devez activer la déconnexion dans la configuration de votre pare-feu de sécurité.’) ;
}
* @Méthode({ » GET « })
* @Route( » /reset « , name= « reset »)
* @Secure(roles= « IS_AUTHENTICATED_ANONYMOUSLY « )
* @Template()
*/
public fonction réinitialisation() {
retour tableau() ;
}
* @Méthode({ » POST « })
* @Route( » /reset « )
* @Secure(roles= « IS_AUTHENTICATED_ANONYMOUSLY « )
*/
public fonction resetNow(Demande $request)
{
$params = $request->request->all() ;
if (!array_key_exists( » login « , $params)) {
jeter nouveau Exception( » Pas de login donné « ) ;
}
$login = &$params[« login »];
$em = $this->container->get( » doctrine.orm.default_entity_manager « ) ;
$user = $em->getRepository( » NamespaceMyBundle:User « )->findOneBy(array( » login « => ; $login)) ;
si ($user == null) {
return $this->redirect($this->generateUrl( » login « , tableau())) ;
}
$password = » myRandowPassword « ;
$user->setPassword($this->container->get( » security.encoder_factory « )->getEncoder($user)->encodePassword($password, $user->getSalt())) ;
$em->persist($user) ;
$em->flush() ;
retour $this->redirect($this->generateUrl( » login « , tableau())) ;
}
* @Méthode({ » GET « })
* @Route( » /change « , name= « change-password « )
* @Secure(roles= « IS_AUTHENTICATED_FULLY « )
* @Template()
*/
public fonction changer() {
retour tableau() ;
}
* @Méthode({ » POST « })
* @Route( » /change « )
* @Secure(roles= « IS_AUTHENTICATED_FULLY « )
* @Template()
*/
public fonction changeNow(Demande $request)
{
$params = $request->request->all() ;
if (!array_key_exists( » courant « , $params)
|| !array_key_exists( » nouveau « , $params)
|| !array_key_exists( » new2 « , $params))
{
retour tableau( » erreur « => ; » Veuillez remplir tous les champs « ) ;
}
$em = $this->container->get( » doctrine.orm.default_entity_manager « ) ;
$user = $this->getUser() ;
$user_encoders = $this->container->get( » security.encoder_factory « )->getEncoder($user) ;
$user_repository = $em->getRepository( » NamespaceMyBundle:User « ) ;
$current_password_encoded = $user_encoders->encodePassword($params[« current »], $user->getSalt()) ;
$new_password_encoded = $user_encoders->encodePassword($params[« new »], $user->getSalt()) ;
si ($user_repository->findOneBy(array( » mot de passe « => ; $current_password_encoded)) == null) {
return tableau( » erreur « => ; » Le mot de passe actuel est incorrect « ) ;
} elseif ($params[« new »] != $params[« new2 »]) {
return tableau( » erreur « => ; » Les deux champs mot de passe ne sont pas les mêmes « ) ;
}
$user->setPassword($new_password_encoded) ;
$em->persist($user) ;
$em->flush() ;
retour $this->redirect($this->generateUrl( » logout « , tableau())) ;
}
* @Méthode({ » GET « })
* @Route( » /register « , name= « register »)
* @Secure(roles= « IS_AUTHENTICATED_ANONYMOUSLY « )
* @Template()
*/
public fonction registre()
{
$form = $this->createForm(nouveau UserType(UserType::REGISTER), nouveau User()) ;
retour tableau(
» formulaire « => ; $form->createView(),
) ;
}
* @Méthode({ » POST « })
* @Route( » /register « )
* @Secure(roles= « IS_AUTHENTICATED_ANONYMOUSLY « )
* @Template()
*/
public fonction registerNow(Demande $request)
{
$params = $request->request->all()[« name_of_my_form »];
$form = $this->createForm(nouveau UserType(UserType::REGISTER), nouveau User()) ;
$form->submit($request) ;
si (array_key_exists( » plain_password « , $params) && ; array_key_exists( » plain_password2 « , $params) && ; $params[« plain_password »] == $params[« plain_password2 »]) {
if ($form->isValid()) {
$data = $form->getData() ;
$data->setPassword($this->container->get( » security.encoder_factory « )->getEncoder($data)->encodePassword($params[« plain_password »], $data->getSalt())) ;
$em->persist($data) ;
$em->flush() ;
retour $this->redirect($this->generateUrl( » login « , tableau( » message « => ; » Vous avez reçu un email pour valider votre compte. « ))) ;
}
}
retour tableau(
» erreurs « => ; $params[« plain_password »] == $params[« plain_password2 »] ? $form->getErrors() : array( » Les deux mots de passe doivent être identiques « ),
» formulaire « => ; $form->createView(),
) ;
}
* @Méthode({ » GET « })
* @Route( » /activate « , name= « activate »)
* @Secure(roles= « IS_AUTHENTICATED_ANONYMOUSLY « )
* @Template()
*/
public fonction activer(Demande $request) {
$params = tableau() ;
$token = $request->query->get( » token « ) ;
$em = $this->container->get( » doctrine.orm.default_entity_manager « ) ;
$user = $em->getRepository( » NamespaceMyBundle:User « )->findOneBy(array( » token « => ; $token)) ;
si ($user != null) {
$user->setActive(User::ACTIVE_ACTIVE) ;
$em->persist($user) ;
$em->flush() ;
$params[« activate »] = vrai;
} autre {
$params[« activate »] = faux;
}
retour $params ;
}
}