Renvoi du mot de passe dans tableau de bord User opérationnel
This commit is contained in:
parent
bf65d62297
commit
025d0a2cad
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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'));
|
||||
}
|
||||
}
|
|
@ -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()) {
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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();
|
||||
|
||||
|
|
|
@ -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 %}
|
|
@ -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'));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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}) }}
|
Loading…
Reference in New Issue