mirror of
https://gitlab.com/Chill-Projet/chill-bundles.git
synced 2025-06-07 18:44:08 +00:00
111 lines
2.8 KiB
PHP
111 lines
2.8 KiB
PHP
<?php
|
|
|
|
namespace Chill\MainBundle\Controller;
|
|
|
|
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
|
|
use Symfony\Component\HttpFoundation\Request;
|
|
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
|
|
use Chill\MainBundle\Form\UserPasswordType;
|
|
use Chill\MainBundle\Entity\User;
|
|
use Symfony\Component\Security\Core\Encoder\UserPasswordEncoderInterface;
|
|
use Symfony\Component\Translation\TranslatorInterface;
|
|
use Psr\Log\LoggerInterface;
|
|
|
|
class PasswordController extends Controller
|
|
{
|
|
/**
|
|
*
|
|
* @var UserPasswordEncoderInterface
|
|
*/
|
|
protected $passwordEncoder;
|
|
|
|
/**
|
|
*
|
|
* @var TranslatorInterface
|
|
*/
|
|
protected $translator;
|
|
|
|
/**
|
|
*
|
|
* @var LoggerInterface
|
|
*/
|
|
protected $chillLogger;
|
|
|
|
public function __construct(
|
|
LoggerInterface $chillLogger,
|
|
UserPasswordEncoderInterface $passwordEncoder,
|
|
TranslatorInterface $translator
|
|
) {
|
|
$this->chillLogger = $chillLogger;
|
|
$this->passwordEncoder = $passwordEncoder;
|
|
$this->translator = $translator;
|
|
}
|
|
|
|
/**
|
|
*
|
|
* @param Request $request
|
|
* @return Response
|
|
*/
|
|
public function UserPasswordAction(Request $request)
|
|
{
|
|
// get authentified user
|
|
$user = $this->getUser();
|
|
|
|
// create a form for password_encoder
|
|
$form = $this->passwordForm($user);
|
|
|
|
// process the form
|
|
$form->handleRequest($request);
|
|
|
|
if ($form->isSubmitted() && $form->isValid()) {
|
|
$password = $form->get('new_password')->getData();
|
|
|
|
// logging for prod
|
|
$this
|
|
->chillLogger
|
|
->notice(
|
|
'update password for an user',
|
|
array(
|
|
'method' => $request->getMethod(),
|
|
'user' => $user->getUsername()
|
|
)
|
|
);
|
|
|
|
$user->setPassword($this->passwordEncoder->encodePassword($user, $password));
|
|
|
|
$em = $this->getDoctrine()->getManager();
|
|
$em->flush();
|
|
|
|
$this->addFlash('success', $this->translator->trans('Password successfully updated!'));
|
|
|
|
return $this->redirectToRoute('change_my_password');
|
|
|
|
}
|
|
|
|
// render into a template
|
|
return $this->render('ChillMainBundle:Password:password.html.twig', array(
|
|
'form' => $form->createView()
|
|
));
|
|
|
|
}
|
|
|
|
/**
|
|
*
|
|
*
|
|
* @param User $user
|
|
* @return \Symfony\Component\Form\Form
|
|
*/
|
|
private function passwordForm(User $user)
|
|
{
|
|
return $this->createForm(
|
|
UserPasswordType::class,
|
|
[],
|
|
[ 'user' => $this->getUser() ]
|
|
)
|
|
->add('submit', SubmitType::class, array('label' => 'Change password'))
|
|
;
|
|
}
|
|
|
|
|
|
}
|