<?php
namespace App\Controller;
use App\Entity\User;
use App\Service\Notifications;
use Doctrine\ORM\EntityManager;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\IsGranted;
use Symfony\Bridge\Doctrine\ManagerRegistry;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\Security\Core\Encoder\UserPasswordEncoderInterface;
use Symfony\Component\Security\Http\Authentication\AuthenticationUtils;
use Twig\Environment;
class SecurityController extends AbstractController
{
/**
* @Route("/login", name="app_login")
*/
public function login(Request $request, AuthenticationUtils $authenticationUtils): Response
{
// get the login error iff there is one
$error = $authenticationUtils->getLastAuthenticationError();
// last username entered by the user
$lastUsername = $authenticationUtils->getLastUsername();
return $this->render('security/index.html.twig',
['last_username' => $lastUsername, 'error' => $error]);
}
/**
* @Route("/logout", name="app_logout", methods={"GET"})
*/
public function logout()
{
// throw new \LogicException('This method can be blank - it will be intercepted by the logout key on your firewall.');
}
/**
* @Route("public/restore/password", name="app_restore_password")
*/
public function restore( Request $request, Environment $twig, Notifications $notif, UserPasswordEncoderInterface $passwordEncoder ) {
$em = $this->getDoctrine()->getManager();
$email = $request->get('email');
$userD = $em->getRepository(User::class)->findOneBy(['email' => $email]);
if ( ! empty($userD)) {
$passNew = rand(10000, 99999999);
$this->changePass($userD->getId(), $passNew, $passwordEncoder);
$this->addFlash(
'success',
'Te enviamos un correo con tu nueva contraseña.'
);
$subject = 'Nueva Contraseña';
$message = "Estimado Usuario, agradecemos que seas parte de Piensa Pro y para seguir conectados, te hemos restablecido tu contraseña para el acceso a nuestra plataforma. <br> <br>
Tu nueva contraseña es: <strong>" . $passNew . " </strong> <br><br>
Dentro del sistema podrás visualizar el proceso de avance en tus cursos. Solo debes ingresar con tu correo y la nueva contraseña. <br><br> ¡Te esperamos! <br> Saludos Cordiales";
$htmlContents = $twig->render('security/email.html.twig', [
'title' => $subject,
'messages' => $message,
]);
$notif->newNotificationSystem(
$email,
$subject,
$htmlContents
);
} else {
$this->addFlash(
'error',
'El correo ingresado no esta disponible en la plataforma'
);
}
return $this->redirectToRoute('app_login');
}
function changePass($id, $pass, $passwordEncoder)
{
$em = $this->getDoctrine()->getManager();
$userD = $em->getRepository(User::class)->find($id);
$userD->setPassword($passwordEncoder->encodePassword(
$userD,
$pass
));
$em->flush();
return true;
}
/**
* @Route("public/email", name="dash_email" )
*
*/
public function emails(Environment $twig): Response
{
$em = $this->getDoctrine()->getManager();
$subject = 'Bienvenido';
$passNew = rand(10000, 99999);
$subject = 'Nueva Contraseña';
$message = "Estimado Beneficiario <br><br> Agradecemos que seas parte de la red de asistencia digital FORTALECE Pyme Ñuble y para seguir vinculados,
te hemos generado un acceso a nuestra plataforma interna.<br> <br>
Dentro de esta plataforma podrás:
<ul>
<li>Visualizar el proceso de avance en tu Transformación Digital, mediante el acceso a tus Informes de diagnóstico y asistencia técnica.</li> <br>
<li>Ver noticias de nuestra red y otra información relevante, como capacitaciones y charlas, entre otros.</li> <br>
<li>Un registro de las capacitaciones que has realizado con nosotros.</li> <br>
</ul>
<br>
Solo debes ingresar con tu correo y los 4 primeros dígitos de tu RUT. <br><br>
¡Te esperamos! <br>
Saludos Cordiales";
$htmlContents = $twig->render('security/email.html.twig', [
'title' => $subject,
'messages' => $message,
]);
print_r($htmlContents);
exit;
}
}