Renvoi du mot de passe dans tableau de bord User opérationnel

This commit is contained in:
nox 2019-12-28 01:48:42 +01:00
parent bf65d62297
commit 025d0a2cad
9 changed files with 169 additions and 86 deletions

View File

@ -25,7 +25,7 @@ class AccountModule extends Module
$router->post('/inscription', SignupAction::class);
$router->get('/mon-profil', [LoggedInMiddleware::class, AccountAction::class], 'account');
$router->post('/mon-profil', [LoggedInMiddleware::class, AccountEditAction::class]);
$router->get('/profil-utilisateur', [PasswordForgetAction::class, ProfilAction::class], 'account.profil');
$router->post('/profil-utilisateur', ProfilAction::class);
$router->get('/password-utilisateur', [PasswordForgetAction::class, ProfilAction::class], 'account.profil');
$router->post('/password-utilisateur', ProfilAction::class);
}
}

View File

@ -0,0 +1,67 @@
<?php
namespace App\Account\Action;
use App\Auth\UserTable;
use Framework\Auth;
use Framework\Renderer\RendererInterface;
use Framework\Response\RedirectResponse;
use Framework\Session\FlashService;
use Framework\Validator;
use Psr\Http\Message\ServerRequestInterface;
class AccountUserEditAction
{
/**
* @var RendererInterface
*/
private $renderer;
/**
* @var Auth
*/
private $auth;
/**
* @var FlashService
*/
private $flashService;
/**
* @var UserTable
*/
private $userTable;
public function __construct(
RendererInterface $renderer,
Auth $auth,
FlashService $flashService,
UserTable $userTable
) {
$this->renderer = $renderer;
$this->auth = $auth;
$this->flashService = $flashService;
$this->userTable = $userTable;
}
public function __invoke(ServerRequestInterface $request)
{
//$user = $this->auth->getUser();
$params = $request->getParsedBody();
$url_part = explode('/',$_SERVER['HTTP_REFERER']);
$chemin = $url_part[3].'/'.$url_part[4];
$validator = (new Validator($params))
->required('firstname', 'lastname');
if ($validator->isValid()) {
$userParams = [
'firstname' => $params['firstname'],
'lastname' => $params['lastname']
];
$this->userTable->update($params['id_user'], $userParams);
$this->flashService->success("Le compte ".$params['username']." a bien été mis à jour");
return new RedirectResponse($chemin);
//return new RedirectResponse($request->getUri()->getPath());
}
$errors = $validator->getErrors();
return $this->renderer->render('@account/account', compact('user', 'errors'));
}
}

View File

@ -46,21 +46,11 @@ class ActiveAction
public function __invoke(ServerRequestInterface $request)
{
// $user = $this->auth->getUser();
$params = $request->getParsedBody();
$url_part = explode('/',$_SERVER['HTTP_REFERER']);
//var_dump($url_part);
//var_dump($_SERVER['HTTP_REFERER']);
$chemin = $url_part[3].'/'.$url_part[4];
//echo "<br /><br />";
//echo "chemin=".$chemin;
//die();
//echo "user_id2=".$params['id'];
//die();
$validator = (new Validator($params))
->required('username', 'actif');
if ($validator->isValid()) {

View File

@ -2,6 +2,8 @@
namespace App\Admin;
use App\Account\Action\AccountUserAction;
use App\Account\Action\AccountUserEditAction;
use App\Account\Action\ActiveAction;
use App\Auth\Action\PasswordForgetAction;
use Framework\Auth\LoggedInMiddleware;
@ -25,6 +27,8 @@ class AdminModule extends Module
$router->get('/dashboard/{user:[a-zA-Z\-0-9]+}', [LoggedInMiddleware::class, DashboardUserAction::class], 'dashboard.user');
$router->get('/activation', ActiveAction::class, 'account.active');
$router->post('/activation', ActiveAction::class);
$router->get('/profil-user', [LoggedInMiddleware::class, AccountUserEditAction::class], 'account.user');
$router->post('/profil-user', [LoggedInMiddleware::class, AccountUserEditAction::class]);
$router->any('/password_reinit', PasswordForgetAction::class, 'auth.password');
if ($renderer instanceof TwigRenderer) {
$renderer->getTwig()->addExtension($adminTwigExtension);

View File

@ -57,6 +57,8 @@ class DashboardUserAction
$user = $this->userTable->findBy('username', $user_affiche);
$id_affiche = $user->id;
// echo "id_affiche=".$id_affiche;
// die();
$actif_affiche = $user->actif;
$listeAntennes = $this->antenneTable->findAllAntennes();

View File

@ -1,68 +1,78 @@
{% extends 'layout.twig' %}
{% block title "Ğ1-Marché - Tableau de bord User" %}
{% block title "Ğ1-Marché - Tableau bord User" %}
{% block body %}
<div class="container" style="color:floralwhite;background-color: #333333;padding: 1rem;">
<div class="container tab-de-bord">
<h3 style="display:inline-block;">Tableau de bord User - {{ user_affiche }}</h3>
</div>
<ul class="list-group list-group-flush">
<div class="container" style="color:black;background-color: lightgray;opacity: 0.9;margin: 1rem;padding:1rem;">
<form action="{{ path('account.active') }}" method="post">
{% if actif_affiche %}
<button class="btn btn-primary">Désactiver l'utilisateur</button>
{% else %}
<button class="btn btn-primary">Activer l'utilisateur</button>
{% endif %}
<div style="width:0;height:0;"> {{ field('actif', actif_affiche, "", {type: 'hidden'}) }}
{{ field('username', user_affiche, "", {type: 'hidden'}) }}
{{ field('id', id_affiche, "", {type: 'hidden'}) }}
</div>
</form>
<div class="container" style="padding:1rem; margin:1rem;">
<div class="container" style="color:floralwhite;background-color: #333333;padding: 0.8rem;">
<div style="text-align:center;padding: 0.8rem 0.8rem 0.1rem 0.8rem;"" class="container tab-de-bord">
<h3 style="display:inline-block;">Tableau de bord Utilisateur</h3>
<h4>{{ user_affiche }}</h4>
</div>
</ul>
<p></p>
<h4>Profil</h4>
<ul class="list-group list-group-flush">
<div class="container" style="color:black;background-color: lightgray;opacity: 0.9;margin: 1rem;padding:1rem;">
<form action="" method="post">
<!-- csrf_input() -->
{{ field('firstname', user.firstname, 'Prénom') }}
{{ field('lastname', user.lastname, 'Nom') }}
Adresse mail {{ user.email }}<p></p>
Clé publique {{ user.pubkey }}
<p></p>
<button class="btn btn-primary">Modifier les informations</button>
</form>
</div>
</ul>
<ul class="list-group list-group-flush">
<div class="container" style="color:black;background-color: lightgray;opacity: 0.9;margin: 1rem;padding:1rem;">
<form action="{{ path('auth.reset') }}" method="post">
<button class="btn btn-primary">Renvoyer un mot de passe</button>
</form>
</div>
</ul>
<p></p>
<h4>Liste des antennes suivies</h4>
<ul class="list-group list-group-flush">
<li class="liste_antennes list-group-item" style="color:black;padding: .2rem 1.25rem;">
{% set antenne_suivie = user.suiviantenne|split('|') %}
{% for antenne in antenne_suivie %}
{% for item in listeAntennes %}
{% if (item.id == antenne) %}
<li class="liste_antennes list-group-item" style="padding: .2rem 1.25rem;">
<a style="color:black;" href="" title="{{ item.antenneName }}">
{{ item.antenneName }}
</a>
</li>
{% endif %}
{% endfor %}
{% endfor %}
</li>
<div class="container" style="color:black;background-color: lightgray;opacity:0.9;margin-top:0.5rem;padding:0.7rem;">
<form action="{{ path('account.active') }}" method="post">
{% if actif_affiche %}
<button class="btn btn-primary">Désactiver l'utilisateur</button>
{% else %}
<button class="btn btn-primary">Activer l'utilisateur</button>
{% endif %}
<div style="width:0;height:0;"> {{ field('actif', actif_affiche, "", {type: 'hidden'}) }}
{{ field('username', user_affiche, "", {type: 'hidden'}) }}
{{ field('id', id_affiche, "", {type: 'hidden'}) }}
</div>
</form>
</div>
</ul>
<p></p>
<p></p>
<h4>Profil</h4>
<ul class="list-group list-group-flush">
<div class="container" style="color:black;background-color: lightgray;opacity: 0.9;padding:1rem;">
<form action="{{ path('account.user') }}" method="post">
<!-- csrf_input() -->
{{ field('firstname', user.firstname, 'Prénom') }}
{{ field('lastname', user.lastname, 'Nom') }}
Adresse mail {{ user.email }}<p></p>
Clé publique {{ user.pubkey }}
<div style="width:0;height:0;">
{{ field('id_user', id_affiche, "", {type: 'hidden'}) }}
{{ field('username', user_affiche, "", {type: 'hidden'}) }}
</div>
<p></p>
<button class="btn btn-primary">Modifier les informations</button>
</form>
</div>
</ul>
<ul class="list-group list-group-flush">
<div class="container" style="color:black;background-color: lightgray;opacity: 0.9;margin-top:0.5rem;padding:1rem;">
<form action="{{ path('auth.password') }}" method="post">
<button class="btn btn-primary">Renvoyer un mot de passe</button>
<div style="width:0;height:0;">
{{ field('email', user.email, "", {type: 'hidden'}) }}
</div>
</form>
</div>
</ul>
<p></p>
<h4>Liste des antennes suivies</h4>
<ul class="list-group list-group-flush">
<li class="liste_antennes list-group-item" style="color:black;padding: .2rem 1.25rem;">
{% set antenne_suivie = user.suiviantenne|split('|') %}
{% for antenne in antenne_suivie %}
{% for item in listeAntennes %}
{% if (item.id == antenne) %}
<li class="liste_antennes list-group-item" style="padding: .2rem 1.25rem;">
<a style="color:black;" href="" title="{{ item.antenneName }}">
{{ item.antenneName }}
</a>
</li>
{% endif %}
{% endfor %}
{% endfor %}
</li>
</ul>
<p></p>
</div>
</div>
{% endblock %}

View File

@ -60,28 +60,38 @@ class PasswordForgetAction
return $this->renderer->render('@auth/password',compact('affichage_div'));
}
$params = $request->getParsedBody();
$url_part = explode('/',$_SERVER['HTTP_REFERER']);
$chemin = $url_part[3].'/'.$url_part[4];
$validator = (new Validator($params))
->notEmpty('email')
->email('email');
if ($validator->isValid()) {
try {
$user = $this->userTable->findBy('email', $params['email']);
$token = $this->userTable->resetPassword($user->id);
$this->mailer->send($user->email, [
'id' => $user->id,
'token' => $token
]);
$this->flashService->success('Un email vous a été envoyé');
$affichage_div = false;
return $this->renderer->render('@auth/password',compact('affichage_div'));
} catch (NoRecordException $e) {
// try {
if ($user = $this->userTable->findBy('email', $params['email'])) {
$token = $this->userTable->resetPassword($user->id);
$this->mailer->send($user->email, [
'id' => $user->id,
'token' => $token
]);
$this->flashService->success("Un email a été envoyé à l'utilisateur");
$affichage_div = false;
return new RedirectResponse($chemin);
//return $this->renderer->render('@auth/password', compact('affichage_div'));
} else {
$this->flashService->error('Aucun utilisateur ne correspond à cet email');
}
/* } catch (NoRecordException $e) {
//$errors = ['email' => 'Aucun utilisateur ne correspond à cet email'];
$this->flashService->error('Aucun utilisateur ne correspond à cet email');
}
}*/
} else {
$errors = $validator->getErrors();
}
$affichage_div = true;
return $this->renderer->render('@auth/password', compact('errors','affichage_div'));
$email = $params['email'];
return $this->renderer->render('@auth/password', compact('email','errors','affichage_div'));
}
}

View File

@ -4,7 +4,7 @@ Site Ğ1-Marché
<p>
Vous avez demandé la réinitialisation de votre mot de passe.
<br />
Veuillez pour se faire, cliquer sur le lien ci-dessous :
Veuillez pour ce faire, cliquer sur le lien ci-dessous :
</p>
<p>
<a href="{{ domain }}{{ path('auth.reset', {id: id, token: token}) }}">{{ domain }}{{ path('auth.reset', {id: id, token: token}) }}</a>

View File

@ -2,6 +2,6 @@ Site Ğ1-Marché
Vous avez demandé la réinitialisation de votre mot de passe.
Veuillez pour se faire, cliquer sur le lien ci-dessous :
Veuillez pour ce faire, cliquer sur le lien ci-dessous :
{{ domain }}{{ path('auth.reset', {id: id, token: token}) }}