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->post('/inscription', SignupAction::class);
|
||||||
$router->get('/mon-profil', [LoggedInMiddleware::class, AccountAction::class], 'account');
|
$router->get('/mon-profil', [LoggedInMiddleware::class, AccountAction::class], 'account');
|
||||||
$router->post('/mon-profil', [LoggedInMiddleware::class, AccountEditAction::class]);
|
$router->post('/mon-profil', [LoggedInMiddleware::class, AccountEditAction::class]);
|
||||||
$router->get('/profil-utilisateur', [PasswordForgetAction::class, ProfilAction::class], 'account.profil');
|
$router->get('/password-utilisateur', [PasswordForgetAction::class, ProfilAction::class], 'account.profil');
|
||||||
$router->post('/profil-utilisateur', ProfilAction::class);
|
$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)
|
public function __invoke(ServerRequestInterface $request)
|
||||||
{
|
{
|
||||||
// $user = $this->auth->getUser();
|
|
||||||
$params = $request->getParsedBody();
|
$params = $request->getParsedBody();
|
||||||
|
|
||||||
$url_part = explode('/',$_SERVER['HTTP_REFERER']);
|
$url_part = explode('/',$_SERVER['HTTP_REFERER']);
|
||||||
//var_dump($url_part);
|
|
||||||
//var_dump($_SERVER['HTTP_REFERER']);
|
|
||||||
$chemin = $url_part[3].'/'.$url_part[4];
|
$chemin = $url_part[3].'/'.$url_part[4];
|
||||||
|
|
||||||
//echo "<br /><br />";
|
|
||||||
//echo "chemin=".$chemin;
|
|
||||||
//die();
|
|
||||||
//echo "user_id2=".$params['id'];
|
|
||||||
//die();
|
|
||||||
|
|
||||||
|
|
||||||
$validator = (new Validator($params))
|
$validator = (new Validator($params))
|
||||||
->required('username', 'actif');
|
->required('username', 'actif');
|
||||||
if ($validator->isValid()) {
|
if ($validator->isValid()) {
|
||||||
|
|
|
@ -2,6 +2,8 @@
|
||||||
|
|
||||||
namespace App\Admin;
|
namespace App\Admin;
|
||||||
|
|
||||||
|
use App\Account\Action\AccountUserAction;
|
||||||
|
use App\Account\Action\AccountUserEditAction;
|
||||||
use App\Account\Action\ActiveAction;
|
use App\Account\Action\ActiveAction;
|
||||||
use App\Auth\Action\PasswordForgetAction;
|
use App\Auth\Action\PasswordForgetAction;
|
||||||
use Framework\Auth\LoggedInMiddleware;
|
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('/dashboard/{user:[a-zA-Z\-0-9]+}', [LoggedInMiddleware::class, DashboardUserAction::class], 'dashboard.user');
|
||||||
$router->get('/activation', ActiveAction::class, 'account.active');
|
$router->get('/activation', ActiveAction::class, 'account.active');
|
||||||
$router->post('/activation', ActiveAction::class);
|
$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');
|
$router->any('/password_reinit', PasswordForgetAction::class, 'auth.password');
|
||||||
if ($renderer instanceof TwigRenderer) {
|
if ($renderer instanceof TwigRenderer) {
|
||||||
$renderer->getTwig()->addExtension($adminTwigExtension);
|
$renderer->getTwig()->addExtension($adminTwigExtension);
|
||||||
|
|
|
@ -57,6 +57,8 @@ class DashboardUserAction
|
||||||
|
|
||||||
$user = $this->userTable->findBy('username', $user_affiche);
|
$user = $this->userTable->findBy('username', $user_affiche);
|
||||||
$id_affiche = $user->id;
|
$id_affiche = $user->id;
|
||||||
|
// echo "id_affiche=".$id_affiche;
|
||||||
|
// die();
|
||||||
$actif_affiche = $user->actif;
|
$actif_affiche = $user->actif;
|
||||||
$listeAntennes = $this->antenneTable->findAllAntennes();
|
$listeAntennes = $this->antenneTable->findAllAntennes();
|
||||||
|
|
||||||
|
|
|
@ -1,68 +1,78 @@
|
||||||
{% extends 'layout.twig' %}
|
{% extends 'layout.twig' %}
|
||||||
|
|
||||||
{% block title "Ğ1-Marché - Tableau de bord User" %}
|
{% block title "Ğ1-Marché - Tableau bord User" %}
|
||||||
|
|
||||||
{% block body %}
|
{% block body %}
|
||||||
<div class="container" style="color:floralwhite;background-color: #333333;padding: 1rem;">
|
<div class="container" style="padding:1rem; margin:1rem;">
|
||||||
<div class="container tab-de-bord">
|
<div class="container" style="color:floralwhite;background-color: #333333;padding: 0.8rem;">
|
||||||
<h3 style="display:inline-block;">Tableau de bord User - {{ user_affiche }}</h3>
|
<div style="text-align:center;padding: 0.8rem 0.8rem 0.1rem 0.8rem;"" class="container tab-de-bord">
|
||||||
</div>
|
<h3 style="display:inline-block;">Tableau de bord Utilisateur</h3>
|
||||||
<ul class="list-group list-group-flush">
|
<h4>{{ user_affiche }}</h4>
|
||||||
<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>
|
</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">
|
<ul class="list-group list-group-flush">
|
||||||
<li class="liste_antennes list-group-item" style="color:black;padding: .2rem 1.25rem;">
|
<div class="container" style="color:black;background-color: lightgray;opacity:0.9;margin-top:0.5rem;padding:0.7rem;">
|
||||||
{% set antenne_suivie = user.suiviantenne|split('|') %}
|
<form action="{{ path('account.active') }}" method="post">
|
||||||
{% for antenne in antenne_suivie %}
|
{% if actif_affiche %}
|
||||||
{% for item in listeAntennes %}
|
<button class="btn btn-primary">Désactiver l'utilisateur</button>
|
||||||
{% if (item.id == antenne) %}
|
{% else %}
|
||||||
<li class="liste_antennes list-group-item" style="padding: .2rem 1.25rem;">
|
<button class="btn btn-primary">Activer l'utilisateur</button>
|
||||||
<a style="color:black;" href="" title="{{ item.antenneName }}">
|
{% endif %}
|
||||||
{{ item.antenneName }}
|
<div style="width:0;height:0;"> {{ field('actif', actif_affiche, "", {type: 'hidden'}) }}
|
||||||
</a>
|
{{ field('username', user_affiche, "", {type: 'hidden'}) }}
|
||||||
</li>
|
{{ field('id', id_affiche, "", {type: 'hidden'}) }}
|
||||||
{% endif %}
|
</div>
|
||||||
{% endfor %}
|
</form>
|
||||||
{% endfor %}
|
</div>
|
||||||
</li>
|
|
||||||
</ul>
|
</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>
|
</div>
|
||||||
{% endblock %}
|
{% endblock %}
|
|
@ -60,28 +60,38 @@ class PasswordForgetAction
|
||||||
return $this->renderer->render('@auth/password',compact('affichage_div'));
|
return $this->renderer->render('@auth/password',compact('affichage_div'));
|
||||||
}
|
}
|
||||||
$params = $request->getParsedBody();
|
$params = $request->getParsedBody();
|
||||||
|
$url_part = explode('/',$_SERVER['HTTP_REFERER']);
|
||||||
|
$chemin = $url_part[3].'/'.$url_part[4];
|
||||||
|
|
||||||
$validator = (new Validator($params))
|
$validator = (new Validator($params))
|
||||||
->notEmpty('email')
|
->notEmpty('email')
|
||||||
->email('email');
|
->email('email');
|
||||||
if ($validator->isValid()) {
|
if ($validator->isValid()) {
|
||||||
try {
|
// try {
|
||||||
$user = $this->userTable->findBy('email', $params['email']);
|
if ($user = $this->userTable->findBy('email', $params['email'])) {
|
||||||
$token = $this->userTable->resetPassword($user->id);
|
|
||||||
$this->mailer->send($user->email, [
|
$token = $this->userTable->resetPassword($user->id);
|
||||||
'id' => $user->id,
|
$this->mailer->send($user->email, [
|
||||||
'token' => $token
|
'id' => $user->id,
|
||||||
]);
|
'token' => $token
|
||||||
$this->flashService->success('Un email vous a été envoyé');
|
]);
|
||||||
$affichage_div = false;
|
$this->flashService->success("Un email a été envoyé à l'utilisateur");
|
||||||
return $this->renderer->render('@auth/password',compact('affichage_div'));
|
|
||||||
} catch (NoRecordException $e) {
|
$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'];
|
//$errors = ['email' => 'Aucun utilisateur ne correspond à cet email'];
|
||||||
$this->flashService->error('Aucun utilisateur ne correspond à cet email');
|
$this->flashService->error('Aucun utilisateur ne correspond à cet email');
|
||||||
}
|
}*/
|
||||||
} else {
|
} else {
|
||||||
$errors = $validator->getErrors();
|
$errors = $validator->getErrors();
|
||||||
}
|
}
|
||||||
$affichage_div = true;
|
$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>
|
<p>
|
||||||
Vous avez demandé la réinitialisation de votre mot de passe.
|
Vous avez demandé la réinitialisation de votre mot de passe.
|
||||||
<br />
|
<br />
|
||||||
Veuillez pour se faire, cliquer sur le lien ci-dessous :
|
Veuillez pour ce faire, cliquer sur le lien ci-dessous :
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
<a href="{{ domain }}{{ path('auth.reset', {id: id, token: token}) }}">{{ domain }}{{ path('auth.reset', {id: id, token: token}) }}</a>
|
<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.
|
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}) }}
|
{{ domain }}{{ path('auth.reset', {id: id, token: token}) }}
|
Loading…
Reference in New Issue