Merge backend-admin sur branche master
This commit is contained in:
commit
e19b374ddd
|
@ -4,7 +4,7 @@ scripts/.loc_hash
|
|||
.idea
|
||||
public/uploads/*
|
||||
!public/uploads/default.png
|
||||
/tmp
|
||||
tmp
|
||||
vendor
|
||||
composer.json
|
||||
composer.lock
|
||||
|
|
|
@ -0,0 +1,55 @@
|
|||
<?php
|
||||
|
||||
use App\Framework\Twig\UrlExtension;
|
||||
use Framework\Middleware\CsrfMiddleware;
|
||||
use Framework\Renderer\RendererInterface;
|
||||
use Framework\Renderer\TwigRendererFactory;
|
||||
use Framework\Router;
|
||||
use Framework\Router\RouterFactory;
|
||||
use Framework\Router\RouterTwigExtension;
|
||||
use Framework\Session\PHPSession;
|
||||
use Framework\Session\SessionInterface;
|
||||
use Framework\Twig\{
|
||||
CsrfExtension, FlashExtension, FormExtension, PagerFantaExtension, TextExtension, TimeExtension
|
||||
};
|
||||
include 'conf.php';
|
||||
return [
|
||||
'env' => \DI\env('ENV', 'production'),
|
||||
/*'env' => \DI\env('ENV', 'development'),*/
|
||||
'database.host' => $host,
|
||||
//'database.username' => 'guser',
|
||||
'database.username' => $username,
|
||||
//'database.password' => 'kptgT81U7nzYWHBdQ9',
|
||||
'database.password' => $password,
|
||||
'database.name' => $database_name,
|
||||
'views.path' => dirname(__DIR__) . '/views',
|
||||
'twig.extensions' => [
|
||||
\DI\get(RouterTwigExtension::class),
|
||||
\DI\get(PagerFantaExtension::class),
|
||||
\DI\get(TextExtension::class),
|
||||
\DI\get(TimeExtension::class),
|
||||
\DI\get(FlashExtension::class),
|
||||
\DI\get(FormExtension::class),
|
||||
\DI\get(CsrfExtension::class),
|
||||
\DI\get(UrlExtension::class)
|
||||
],
|
||||
SessionInterface::class => \DI\object(PHPSession::class),
|
||||
CsrfMiddleware::class => \DI\object()->constructor(\DI\get(SessionInterface::class)),
|
||||
Router::class => \DI\factory(RouterFactory::class),
|
||||
RendererInterface::class => \DI\factory(TwigRendererFactory::class),
|
||||
\PDO::class => function (\Psr\Container\ContainerInterface $c) {
|
||||
return new PDO(
|
||||
'mysql:host='. $c->get('database.host') . ';dbname=' . $c->get('database.name'),
|
||||
$c->get('database.username'),
|
||||
$c->get('database.password'),
|
||||
[
|
||||
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_OBJ,
|
||||
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
|
||||
]
|
||||
);
|
||||
},
|
||||
// MAILER
|
||||
'mail.to' => 'mailto@admin.fr',
|
||||
'mail.from' => 'no-reply@admin.fr',
|
||||
Swift_Mailer::class => \DI\factory(\Framework\SwiftMailerFactory::class)
|
||||
];
|
|
@ -167,18 +167,24 @@ header.header img {
|
|||
display: block;
|
||||
margin: auto;
|
||||
}
|
||||
|
||||
/******************************************************************/
|
||||
/* dashboard.twig */
|
||||
/******************************************************************/
|
||||
.tab-de-bord {
|
||||
background-color: brown;
|
||||
padding: 1rem;
|
||||
min-width: 350px;
|
||||
}
|
||||
/******************************************************************/
|
||||
/* layout.twig */
|
||||
/******************************************************************/
|
||||
|
||||
.mdp_oublie:hover {
|
||||
background-color: deepskyblue;
|
||||
}
|
||||
|
||||
/******************************************************************/
|
||||
/* LOADING PUBKEY */
|
||||
/******************************************************************/
|
||||
|
||||
#cle_pub {
|
||||
display: none;
|
||||
}
|
||||
|
@ -200,7 +206,17 @@ body.loading .loadingPubkey {
|
|||
/* POUR MOBILES */
|
||||
/******************************************************************/
|
||||
@media only screen and (max-width:560px) {
|
||||
|
||||
/******************************************************************/
|
||||
/* dashboard.twig */
|
||||
/******************************************************************/
|
||||
.tab-de-bord {
|
||||
background-color: brown;
|
||||
padding: 1rem;
|
||||
min-width: 280px;
|
||||
}
|
||||
/******************************************************************/
|
||||
/* layout.twig */
|
||||
/******************************************************************/
|
||||
.fond {
|
||||
background-color: black;
|
||||
background-image: url("../images/bildreich_1275.jpg");
|
||||
|
|
|
@ -34,18 +34,14 @@ $app = (new \Framework\App( $chemin_new .'config/apply.php'))
|
|||
|
||||
$container = $app->getContainer();
|
||||
|
||||
// Pose un problème
|
||||
//$container->get(\Framework\Router::class)->get('/', \App\Gmarche\Actions\RegionIndexAction::class, 'home');
|
||||
|
||||
$app->pipe(Whoops::class);
|
||||
$app->pipe(TrailingSlashMiddleware::class);
|
||||
$app->pipe(\App\Auth\ForbiddenMiddleware::class);
|
||||
|
||||
// admin pose problème
|
||||
//$app->pipe(
|
||||
// $container->get('admin.prefix'),
|
||||
// $container->get(RoleMiddlewareFactory::class)->makeForRole('admin')
|
||||
// );
|
||||
$app->pipe(
|
||||
$container->get('admin.prefix'),
|
||||
$container->get(RoleMiddlewareFactory::class)->makeForRole('0','1')
|
||||
);
|
||||
|
||||
$app->pipe(MethodMiddleware::class)
|
||||
->pipe(RendererRequestMiddleware::class)
|
||||
|
|
|
@ -8,7 +8,7 @@ try {
|
|||
if (isset($_POST['nom_connecte']) && isset($_POST['mdp'])) {
|
||||
|
||||
$params["username"] = $_POST['nom_connecte'];
|
||||
$requete = "SELECT username, password
|
||||
$requete = "SELECT username, password, role
|
||||
FROM users
|
||||
WHERE username = :username";
|
||||
$query = $bdd->prepare($requete);
|
||||
|
@ -17,6 +17,7 @@ try {
|
|||
if (password_verify($_POST['mdp'],$row['password'])) {
|
||||
session_start();
|
||||
$_SESSION['user']=$row['username'];
|
||||
$_SESSION['role']=$row['role'];
|
||||
echo '{"valide":true,"username":"'.$row['username'].'"}';
|
||||
} else {
|
||||
echo '{"valide":false}';
|
||||
|
|
|
@ -25,30 +25,31 @@
|
|||
LEFT JOIN users
|
||||
ON users.id = products.user_id
|
||||
WHERE antennes.slug = :antenne_slug";
|
||||
$stmt = $bdd->prepare($requete);
|
||||
$stmt2 = $bdd->prepare($requete);
|
||||
$stmt->execute($params);
|
||||
$stmt2->execute($params);
|
||||
$count = $stmt->rowCount();
|
||||
$affich_actions = false;
|
||||
while ($row2 = $stmt2->fetch(PDO::FETCH_ASSOC)) {
|
||||
$stmt = $bdd->prepare($requete);
|
||||
$stmt2 = $bdd->prepare($requete);
|
||||
$stmt->execute($params);
|
||||
$stmt2->execute($params);
|
||||
$count = $stmt->rowCount();
|
||||
$affich_actions = false;
|
||||
while ($row2 = $stmt2->fetch(PDO::FETCH_ASSOC)) {
|
||||
if ($row2['username'] == $nom_connecte) {
|
||||
$affich_actions = true;
|
||||
}
|
||||
}
|
||||
if ($affich_actions) {
|
||||
}
|
||||
if ($affich_actions) {
|
||||
$data .= '<th colspan="2" style="text-align: center;">Actions</th>';
|
||||
$data .= '</tr>';
|
||||
} else {
|
||||
} else {
|
||||
$data .= '</tr>';
|
||||
}
|
||||
if ($count > 0)
|
||||
{
|
||||
}
|
||||
if ($count > 0)
|
||||
{
|
||||
$number = 1;
|
||||
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
|
||||
|
||||
$data .= "<tr style='background:lightblue;color:black;'>
|
||||
<td>$number</td>";
|
||||
|
||||
$prix = $row['prix'];
|
||||
$vendeur = $row['username'];
|
||||
$quantite = $row['quantite'];
|
||||
|
@ -106,10 +107,10 @@
|
|||
$data .= '</tr>';
|
||||
$number++;
|
||||
}
|
||||
} else {
|
||||
} else {
|
||||
// Il n'y a pas encore de biens/services saisis
|
||||
$data .= "<tr style='background-color:lightblue;text-align:left;color:black;'><td colspan='10'>Aucun enregistrement saisi</td></tr>";
|
||||
}
|
||||
$data .= '</table>';
|
||||
echo $data;
|
||||
}
|
||||
$data .= '</table>';
|
||||
echo $data;
|
||||
?>
|
||||
|
|
|
@ -0,0 +1,70 @@
|
|||
<?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 ActiveAction
|
||||
{
|
||||
|
||||
/**
|
||||
* @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();
|
||||
var_dump($user);
|
||||
die();
|
||||
$params = $request->getParsedBody();
|
||||
$validator = (new Validator($params))
|
||||
->required('username', 'actif');
|
||||
if ($validator->isValid()) {
|
||||
$userParams = [
|
||||
'username' => $params['username'],
|
||||
'actif' => $params['actif']
|
||||
];
|
||||
|
||||
$this->userTable->update($user->id, $userParams);
|
||||
if (!$params['actif']) {
|
||||
$this->flashService->success("L'utilisateur ".$params['username']." a bien été désactivé");
|
||||
} else {
|
||||
$this->flashService->success("L'utilisateur ".$params['username']." a bien été réactivé");
|
||||
}
|
||||
return new RedirectResponse($request->getUri()->getPath());
|
||||
}
|
||||
$errors = $validator->getErrors();
|
||||
return $this->renderer->render('@account/account', compact('user', 'errors'));
|
||||
}
|
||||
}
|
|
@ -2,8 +2,7 @@
|
|||
|
||||
namespace App\Admin;
|
||||
|
||||
use App\Product\Actions\ProductIndexAction;
|
||||
use App\Product\Actions\ProductCrudAction;
|
||||
use App\Account\Action\ActiveAction;
|
||||
use Framework\Module;
|
||||
use Framework\Renderer\RendererInterface;
|
||||
use Framework\Renderer\TwigRenderer;
|
||||
|
@ -11,7 +10,6 @@ use Framework\Router;
|
|||
|
||||
class AdminModule extends Module
|
||||
{
|
||||
|
||||
const DEFINITIONS = __DIR__ . '/config.php';
|
||||
|
||||
public function __construct(
|
||||
|
@ -19,13 +17,14 @@ class AdminModule extends Module
|
|||
Router $router,
|
||||
AdminTwigExtension $adminTwigExtension,
|
||||
string $prefix
|
||||
) {
|
||||
|
||||
$renderer->addPath('admin', __DIR__ . '/views');
|
||||
|
||||
//$router->get('/machin', ProductCrudAction::class, 'machin.bidule'); // ProductIndexAction
|
||||
/*if ($renderer instanceof TwigRenderer) {
|
||||
)
|
||||
{
|
||||
$router->get('/dashboard', DashboardAction::class, 'dashboard');
|
||||
$router->get('/dashboard/{user:[a-zA-Z\-0-9]+}', DashboardUserAction::class, 'dashboard.user');
|
||||
$router->get('/activation', ActiveAction::class, 'account.active');
|
||||
$router->post('/activation', ActiveAction::class);
|
||||
if ($renderer instanceof TwigRenderer) {
|
||||
$renderer->getTwig()->addExtension($adminTwigExtension);
|
||||
}*/
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,66 @@
|
|||
<?php
|
||||
namespace App\Admin;
|
||||
|
||||
use App\Admin\Table\UserTable;
|
||||
use App\Gmarche\Table\AntenneTable;
|
||||
use Framework\Renderer\RendererInterface;
|
||||
use Psr\Http\Message\ServerRequestInterface;
|
||||
|
||||
class DashboardAction
|
||||
{
|
||||
|
||||
/**
|
||||
* @var RendererInterface
|
||||
*/
|
||||
private $renderer;
|
||||
/**
|
||||
* @var AntenneTable
|
||||
*/
|
||||
private $antenneTable;
|
||||
|
||||
|
||||
/**
|
||||
* @var UserTable
|
||||
*/
|
||||
private $userTable;
|
||||
|
||||
public function __construct(
|
||||
RendererInterface $renderer,
|
||||
AntenneTable $antenneTable,
|
||||
UserTable $userTable)
|
||||
{
|
||||
$this->renderer = $renderer;
|
||||
$this->antenneTable = $antenneTable;
|
||||
$this->userTable = $userTable;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param ServerRequestInterface $request
|
||||
* @return string
|
||||
*/
|
||||
public function __invoke(ServerRequestInterface $request)
|
||||
{
|
||||
if ($request->getMethod() === 'GET') {
|
||||
|
||||
$this->renderer->addPath('admin', __DIR__ . '/views');
|
||||
$page = $params['p'] ?? 1; // Si la page n'est pas définie, on l'initialise à 1
|
||||
$liste_adminGeneral = $this->userTable->findAdminUsers('1');
|
||||
$liste_adminAntenne = $this->userTable->findAdminUsers('2');
|
||||
$liste_users_suivi = $this->userTable->findUsers('3');
|
||||
$listeAntennes = $this->antenneTable->findAllAntennes();
|
||||
if (!isset($_SESSION)) {
|
||||
session_start();
|
||||
}
|
||||
if (isset($_SESSION['user'])) {
|
||||
$nom_user = $_SESSION['user'];
|
||||
$role = $_SESSION['role'];
|
||||
} else {
|
||||
$nom_user = '';
|
||||
$role = '3';
|
||||
}
|
||||
return $this->renderer->render('@admin/dashboard',
|
||||
compact('nom_user','role', 'liste_adminGeneral', 'liste_users_suivi',
|
||||
'liste_adminAntenne', 'listeAntennes'));
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,76 @@
|
|||
<?php
|
||||
namespace App\Admin;
|
||||
|
||||
use App\Auth\UserTable;
|
||||
use App\Admin\Table\UserTable as UserTableAdmin;
|
||||
use App\Gmarche\Table\AntenneTable;
|
||||
use Framework\Auth;
|
||||
use Framework\Renderer\RendererInterface;
|
||||
use Psr\Http\Message\ServerRequestInterface;
|
||||
|
||||
class DashboardUserAction
|
||||
{
|
||||
|
||||
/**
|
||||
* @var RendererInterface
|
||||
*/
|
||||
private $renderer;
|
||||
/**
|
||||
* @var Auth
|
||||
*/
|
||||
private $auth;
|
||||
/**
|
||||
* @var AntenneTable
|
||||
*/
|
||||
private $antenneTable;
|
||||
/**
|
||||
* @var UserTable
|
||||
*/
|
||||
private $userTable;
|
||||
|
||||
public function __construct(
|
||||
RendererInterface $renderer,
|
||||
Auth $auth,
|
||||
AntenneTable $antenneTable,
|
||||
UserTable $userTable,
|
||||
UserTableAdmin $userTableAdmin)
|
||||
{
|
||||
$this->renderer = $renderer;
|
||||
$this->auth = $auth;
|
||||
$this->antenneTable = $antenneTable;
|
||||
$this->userTable = $userTable;
|
||||
$this->userTableAdmin = $userTableAdmin;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param ServerRequestInterface $request
|
||||
* @return string
|
||||
*/
|
||||
public function __invoke(ServerRequestInterface $request)
|
||||
{
|
||||
if ($request->getMethod() === 'GET') {
|
||||
$this->renderer->addPath('admin', __DIR__ . '/views');
|
||||
$liste_users_suivi = $this->userTableAdmin->findUsers('3');
|
||||
|
||||
$username = $request->getAttribute('user');
|
||||
|
||||
$profil_user = $this->userTable->findBy('username', $username);
|
||||
// var_dump($profil_user);
|
||||
// die();
|
||||
$listeAntennes = $this->antenneTable->findAllAntennes();
|
||||
if (!isset($_SESSION)) {
|
||||
session_start();
|
||||
}
|
||||
if (isset($_SESSION['user'])) {
|
||||
$nom_user = $_SESSION['user'];
|
||||
$role = $_SESSION['role'];
|
||||
} else {
|
||||
$nom_user = '';
|
||||
$role = '3';
|
||||
}
|
||||
|
||||
return $this->renderer->render('@admin/dashboard_user',
|
||||
compact('nom_user','role','username','profil_user','liste_users_suivi','listeAntennes'));
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,35 @@
|
|||
<?php
|
||||
|
||||
namespace App\Admin\Entity;
|
||||
|
||||
class User
|
||||
{
|
||||
|
||||
public $id;
|
||||
|
||||
public $username;
|
||||
|
||||
public $email;
|
||||
|
||||
public $password;
|
||||
|
||||
public $firstname;
|
||||
|
||||
public $lastname;
|
||||
|
||||
public $created_at;
|
||||
|
||||
public $role;
|
||||
|
||||
public $password_reset;
|
||||
|
||||
public $password_reset_at;
|
||||
|
||||
public $pubkey;
|
||||
|
||||
public $avatar;
|
||||
|
||||
public $suiviantenne;
|
||||
|
||||
public $actif;
|
||||
}
|
|
@ -0,0 +1,65 @@
|
|||
<?php
|
||||
|
||||
namespace App\Admin\Table;
|
||||
|
||||
use App\Admin\Entity\User;
|
||||
use App\Gmarche\Table\AntenneTable;
|
||||
use App\Gmarche\Table\RegionTable;
|
||||
use Framework\Database\Query;
|
||||
use Framework\Database\Table;
|
||||
|
||||
class UserTable extends Table
|
||||
{
|
||||
protected $entity = User::class;
|
||||
|
||||
protected $table = 'users';
|
||||
|
||||
public function findList(): array
|
||||
{
|
||||
$results = $this->pdo
|
||||
->query("SELECT id, name FROM {$this->table}")
|
||||
->fetchAll(\PDO::FETCH_NUM);
|
||||
$list = [];
|
||||
foreach ($results as $result) {
|
||||
$list[$result[0]] = $result[1];
|
||||
}
|
||||
return $list;
|
||||
}
|
||||
public function findAntennebyId(int $id_antenne): Query
|
||||
{
|
||||
$antenne = new AntenneTable($this->pdo);
|
||||
return $this->makeQuery()
|
||||
->select('a.name as nameAntenne')
|
||||
->where("a.id = $id_antenne");
|
||||
}
|
||||
public function findUsers($role): Query
|
||||
{
|
||||
return $this->makeQuery()
|
||||
->select('u.*')
|
||||
->where("u.role = '".$role."'")
|
||||
->order('u.username ASC');
|
||||
}
|
||||
/*public function findUsersSuivi($role): Query
|
||||
{
|
||||
$antenne = new AntenneTable($this->pdo);
|
||||
return $this->makeQuery()
|
||||
->join($antenne->getTable() . ' as a', 'substring(u.suiviantenne,1,1) = a.id')
|
||||
->select('u.*,a.name as nameAntenne')
|
||||
->where("u.role = '".$role."'")
|
||||
->order('u.username, nameAntenne ASC');
|
||||
}*/
|
||||
public function findAdminUsers($role): Query
|
||||
{
|
||||
return $this->makeQuery()
|
||||
->select('u.*')
|
||||
->where("u.role = $role")
|
||||
->order('u.username ASC');
|
||||
}
|
||||
public function findRole($username): Query
|
||||
{
|
||||
return $this->makeQuery()
|
||||
->select('u.role')
|
||||
->where("u.username = $username");
|
||||
}
|
||||
|
||||
}
|
|
@ -0,0 +1,105 @@
|
|||
{% extends 'layout.twig' %}
|
||||
|
||||
{% block title "Ğ1-Marché - Tableau de bord" %}
|
||||
|
||||
{% 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 - </h3>
|
||||
<h4 style="display:inline-block;">
|
||||
{% if role == '0' %} Super Admin{% endif %}
|
||||
{% if role == '1' %} Admin général{% endif %}
|
||||
{% if role == '2' %} Admin Antenne{% endif %}
|
||||
</h4>
|
||||
</h3>
|
||||
</div>
|
||||
<p></p>
|
||||
{% if role == '0' %}
|
||||
<h4>Liste des admins généraux</h4>
|
||||
<ul class="list-group list-group-flush">
|
||||
{% for admin_gen in liste_adminGeneral %}
|
||||
<a style="color:black;" href="" title="{{ admin_gen.username }}">
|
||||
<li class="liste_antennes list-group-item" style="padding: .2rem 1.25rem;">
|
||||
{{ admin_gen.username }}
|
||||
</li>
|
||||
</a>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
{% endif %}
|
||||
<p></p>
|
||||
{% if (role == '0' or role == '1') %}
|
||||
<h4>Liste des admins Antenne</h4>
|
||||
<ul class="list-group list-group-flush">
|
||||
{% for admin_ant in liste_adminAntenne %}
|
||||
<a style="color:black;" href="" title="{{ admin_ant.username }}">
|
||||
<li class="liste_antennes list-group-item" style="padding: .2rem 1.25rem;">
|
||||
{{ admin_ant.username }}
|
||||
</li>
|
||||
</a>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
{% endif %}
|
||||
<p></p>
|
||||
{% if (role == '0' or role == '1' or role == '2') %}
|
||||
<h4>Liste des régions/antennes</h4>
|
||||
<ul class="list-group list-group-flush">
|
||||
{% set antenne = '' %}
|
||||
{% set region = '' %}
|
||||
{% for item in listeAntennes %}
|
||||
{% if (item.regionName != region) %}
|
||||
<li class="liste_antennes list-group-item" style="color:black;
|
||||
background-color:lightgoldenrodyellow;padding: .2rem 1.25rem;">
|
||||
{{ item.regionName }}
|
||||
</li>
|
||||
<a style="color:black;" href="" title="{{ item.regionName }}">
|
||||
<li class="liste_antennes list-group-item" style="background-color:#8fbc8f;padding: .2rem 1.25rem;">
|
||||
► {{ item.antenneName }}
|
||||
</li>
|
||||
</a>
|
||||
{% else %}
|
||||
<a style="color:black;" href="" title="{{ item.regionName }}">
|
||||
<li class="liste_antennes list-group-item" style="background-color:#8fbc8f;padding: .2rem 1.25rem;">
|
||||
► {{ item.antenneName }}
|
||||
</li>
|
||||
</a>
|
||||
{% endif %}
|
||||
{% set antenne = item.antenneName %}
|
||||
{% set region = item.regionName %}
|
||||
{% endfor %}
|
||||
</ul>
|
||||
{% endif %}
|
||||
<p></p>
|
||||
{% if (role == '0' or role == '1' or role == '2') %}
|
||||
<h4>Liste des utilisateurs</h4>
|
||||
|
||||
<ul class="list-group list-group-flush">
|
||||
{% for item2 in liste_users_suivi %}
|
||||
<a style="color:black;" href="{{ path('dashboard.user',{user:item2.username}) }}" title="{{ item2.username }}">
|
||||
<li class="liste_antennes list-group-item" style="padding: .2rem 1.25rem;">
|
||||
{{ item2.username }}
|
||||
{% set antenne_suivie = item2.suiviantenne|split('|') %}
|
||||
{% for antenn in antenne_suivie %}
|
||||
{% for item in listeAntennes %}
|
||||
{% if (item.id == antenn) %}
|
||||
- {{ item.antenneName }}
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
{% endfor %}
|
||||
</li>
|
||||
</a>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
{% endif %}
|
||||
<p></p>
|
||||
{% if (role == '0' or role == '1') %}
|
||||
<h4>Gestion d'une antenne</h4>
|
||||
{% endif %}
|
||||
<p></p>
|
||||
{% if (role == '0' or role == '1' or role == '2') %}
|
||||
<h4>Gestion d'un G-Marché</h4>
|
||||
{% endif %}
|
||||
<div class="row">
|
||||
{{ widgets | raw }}
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
|
@ -0,0 +1,65 @@
|
|||
{% extends 'layout.twig' %}
|
||||
|
||||
{% block title "Ğ1-Marché - Tableau de 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 - {{ username }}</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">
|
||||
<button class="btn btn-primary">Désactiver l'utilisateur</button>
|
||||
{{ field('actif', false, "", {type: 'hidden'}) }}
|
||||
{{ field('username', username, "", {type: 'hidden'}) }}
|
||||
</form>
|
||||
</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', profil_user.firstname, 'Prénom') }}
|
||||
{{ field('lastname', profil_user.lastname, 'Nom') }}
|
||||
Adresse mail {{ profil_user.email }}<p></p>
|
||||
Clé publique {{ profil_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="" 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 = profil_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>
|
||||
{% endblock %}
|
|
@ -1,7 +1,7 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>{% block title "Mon site " %}</title>
|
||||
<title>{% block title "Ğ1-Marché - Administration" %}</title>
|
||||
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta/css/bootstrap.min.css" integrity="sha384-/Y6pD6FV/Vv2HJnA6t+vslU6fwYXjCFtcEpHbNJ0lyAFsXTsjBbfaDjzALeQsN6M" crossorigin="anonymous">
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/flatpickr/3.0.7/flatpickr.css">
|
||||
<style>
|
||||
|
@ -13,16 +13,45 @@
|
|||
<body>
|
||||
|
||||
<nav class="navbar fixed-top navbar-expand-sm navbar-dark bg-dark">
|
||||
<a class="navbar-brand" href="{{ path(routePrefix) }}">Ğ1-Marché</a>
|
||||
<a class="navbar-brand" href="{{ path('gmarche.index') }}">Ğ1-Marché</a>
|
||||
|
||||
<ul class="navbar-nav mr-auto">
|
||||
{{ admin_menu() }}
|
||||
<ul class="navbar-nav mr-auto" style="color: white;">
|
||||
<!-- admin_menu() -->
|
||||
role = {{ role }}
|
||||
</ul>
|
||||
<div class="navbar-nav">
|
||||
<form class="nav-item active" method="post" action="{{ path('auth.logout') }}">
|
||||
{{ csrf_input() }}
|
||||
<button class="btn-primary btn-danger">Se déconnecter</button>
|
||||
<div class="navbar-text" style="color:lightgray;margin-right:15px; margin-top:3px;">
|
||||
{{ "now"|date('d/m/y') }}
|
||||
</div>
|
||||
{% if name_user != '' %}
|
||||
<form method="post" style="margin-top:5px;" action="{{ path('account.profil') }}">
|
||||
<span><img src="\avatar_user.png" width="22" height="22" /></span>
|
||||
<button style="color:white;font-size: 14px;" class="btn-primary">user = {{ name_user }}</button>
|
||||
<button style="color:white;font-size: 14px;" class="btn-primary">user2 = {{ name_user2 }}</button>
|
||||
</form>
|
||||
<form method="post" action="{{ path('auth.logout') }}">
|
||||
<!-- csrf_input() }}-->
|
||||
<button class="btn btn-danger" style="margin-left: 7px; font-size:14px;">Se déconnecter</button>
|
||||
</form>
|
||||
{% else %}
|
||||
<span style="color:white;">
|
||||
name_user = {{ name_user }}
|
||||
name_user2 = {{ name_user2 }}</span>
|
||||
<div class="nav-item" id="bouton-connexion">
|
||||
<button style="color:white; font-size: 14px;" class="btn btn-primary" data-toggle="modal" data-target="#connexion_modal">Se connecter</button>
|
||||
</div>
|
||||
<div id="nom_connecte" style="display:none;margin-left:10px;margin-top:6px;margin-right:8px;">
|
||||
</div>
|
||||
<div id="deconnexion" style="display:none;">
|
||||
<form method="post" action="{{ path('auth.logout') }}">
|
||||
<!-- csrf_input() }}-->
|
||||
<button class="btn btn-danger" style="font-size:14px;">Se déconnecter</button>
|
||||
</form>
|
||||
</div>
|
||||
<div class="nav-item" id="inscription">
|
||||
<a class="nav-link" href="{{ path('account.signup') }}" style="font-size:14px;">S'inscrire</a>
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
|
@ -47,14 +76,6 @@
|
|||
<script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" crossorigin="anonymous"></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.11.0/umd/popper.min.js" integrity="sha384-b/U6ypiBEHpOf/4+1nzFpr53nxSS+GLCkfwBdFNTxtclqqenISfwAzpKaMNFNmj4" crossorigin="anonymous"></script>
|
||||
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta/js/bootstrap.min.js" integrity="sha384-h0AbiXch4ZDo7tp9hKZ4TsHbi047NrKGLO3SEJAg45jXxnGIfYzk4Si90RDIqNm1" crossorigin="anonymous"></script>
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/flatpickr/3.0.7/flatpickr.js"></script>
|
||||
<script>
|
||||
flatpickr('.datepicker', {
|
||||
enableTime: true,
|
||||
altInput: true,
|
||||
altFormat: 'j F Y, H:i',
|
||||
dateFormat: 'Y-m-d H:i:S'
|
||||
})
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
|
@ -1,6 +1,7 @@
|
|||
<?php
|
||||
namespace App\Auth\Action;
|
||||
|
||||
use App\Admin\Table\UserTable;
|
||||
use App\Auth\DatabaseAuth;
|
||||
use Framework\Actions\RouterAwareAction;
|
||||
use Framework\Renderer\RendererInterface;
|
||||
|
@ -37,12 +38,14 @@ class LoginAttemptAction
|
|||
RendererInterface $renderer,
|
||||
DatabaseAuth $auth,
|
||||
Router $router,
|
||||
SessionInterface $session
|
||||
SessionInterface $session,
|
||||
UserTable $userTable
|
||||
) {
|
||||
$this->renderer = $renderer;
|
||||
$this->auth = $auth;
|
||||
$this->router = $router;
|
||||
$this->session = $session;
|
||||
$this->userTable = $userTable;
|
||||
}
|
||||
|
||||
public function __invoke(ServerRequestInterface $request)
|
||||
|
@ -53,7 +56,7 @@ class LoginAttemptAction
|
|||
if(!isset($_SESSION)) {
|
||||
session_start();
|
||||
}
|
||||
$nom_user = $params['username'];
|
||||
$_SESSION['role'] = $this->userTable->findRole($params['username']);
|
||||
$_SESSION['user'] = $params['username'];
|
||||
$path = $this->session->get('auth.redirect') ?: $this->router->generateUri('gmarche.index');
|
||||
$this->session->delete('auth.redirect');
|
||||
|
|
|
@ -42,7 +42,9 @@ class LogoutAction
|
|||
public function __invoke(ServerRequestInterface $request)
|
||||
{
|
||||
$gmarchePrefix = $this->container->get('gmarche.prefix');
|
||||
if(!isset($_SESSION)) {
|
||||
session_start();
|
||||
}
|
||||
unset($_SESSION['user']);
|
||||
$this->auth->logout();
|
||||
$this->flashService->success('Vous êtes maintenant déconnecté');
|
||||
|
|
|
@ -52,7 +52,7 @@ class ForbiddenMiddleware implements MiddlewareInterface
|
|||
public function redirectLogin(ServerRequestInterface $request): ResponseInterface
|
||||
{
|
||||
$this->session->set('auth.redirect', $request->getUri()->getPath());
|
||||
(new FlashService($this->session))->error('Vous devez posséder un compte pour accéder à cette page');
|
||||
//(new FlashService($this->session))->error('Vous devez posséder un compte pour accéder à cette page');
|
||||
return new RedirectResponse($this->loginPath);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -26,13 +26,17 @@ class ContactAction
|
|||
public function __invoke(ServerRequestInterface $request)
|
||||
{
|
||||
if ($request->getMethod() === 'GET') {
|
||||
if (!isset($_SESSION)) {
|
||||
session_start();
|
||||
}
|
||||
if (isset($_SESSION['user'])) {
|
||||
$nom_user = $_SESSION['user'];
|
||||
$role = $_SESSION['role'];
|
||||
} else {
|
||||
$nom_user = '';
|
||||
$role = '3';
|
||||
}
|
||||
return $this->renderer->render('@contact/contact',compact('nom_user'));
|
||||
return $this->renderer->render('@contact/contact',compact('nom_user','role'));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -3,14 +3,6 @@
|
|||
{% block title "Ğ1-Marché - Contact" %}
|
||||
{% block body %}
|
||||
<style>
|
||||
/*body .fond {
|
||||
background-image: url("../../images/background_contacts.jpg");
|
||||
background-repeat: no-repeat;
|
||||
background-attachment:fixed;
|
||||
background-position: center;
|
||||
background-size: 100% auto;
|
||||
font-family: Bree serif,"Helvetica Neue", Helvetica, Arial, sans-serif;
|
||||
}*/
|
||||
.main {
|
||||
width: 900px;
|
||||
font-family: "Bree Serif", Arial;
|
||||
|
@ -91,6 +83,7 @@
|
|||
</script>
|
||||
{% endif %}
|
||||
<div class="main" style="background:none;">
|
||||
nom_user = {{ nom_user }}
|
||||
<div class="header">
|
||||
<img class="img_header" src="/images/logo_contacts.jpg" style="width: 294px;height: 294px;" alt="Ğ1-Marché" title="Logo Contact" />
|
||||
</div>
|
||||
|
|
|
@ -19,16 +19,26 @@ class RoleMiddleware implements MiddlewareInterface
|
|||
*/
|
||||
private $role;
|
||||
|
||||
public function __construct(Auth $auth, string $role)
|
||||
public function __construct(Auth $auth, string $role, string $role2)
|
||||
{
|
||||
$this->auth = $auth;
|
||||
$this->role = $role;
|
||||
$this->role2 = $role2;
|
||||
}
|
||||
|
||||
public function process(ServerRequestInterface $request, DelegateInterface $delegate): ResponseInterface
|
||||
{
|
||||
$user = $this->auth->getUser();
|
||||
if ($user === null || !in_array($this->role, $user->getRoles())) {
|
||||
//if (array_key_exists('premier', $search_array))
|
||||
$non_admin = true;
|
||||
if (!in_array($this->role, [$_SESSION['role']])) {
|
||||
$non_admin = false;
|
||||
}
|
||||
if (!in_array($this->role2, [$_SESSION['role']])) {
|
||||
$non_admin = false;
|
||||
}
|
||||
if ($user === null || $non_admin ) {
|
||||
//if ($user === null || !array_key_exists($chaine_user,$this->role)) {
|
||||
throw new ForbiddenException();
|
||||
}
|
||||
return $delegate->process($request);
|
||||
|
|
|
@ -17,8 +17,8 @@ class RoleMiddlewareFactory
|
|||
$this->auth = $auth;
|
||||
}
|
||||
|
||||
public function makeForRole($role): RoleMiddleware
|
||||
public function makeForRole($role, $role2): RoleMiddleware
|
||||
{
|
||||
return new RoleMiddleware($this->auth, $role);
|
||||
return new RoleMiddleware($this->auth, $role, $role2);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -9,8 +9,8 @@ class SwiftMailerFactory
|
|||
public function __invoke(ContainerInterface $container): \Swift_Mailer
|
||||
{
|
||||
if ($container->get('env') === 'production') {
|
||||
//$transport = new \Swift_SendmailTransport();
|
||||
$transport = new \Swift_SmtpTransport('localhost', 1025);
|
||||
//$transport = new \Swift_SendmailTransport();
|
||||
} else {
|
||||
$transport = new \Swift_SmtpTransport('localhost', 1025);
|
||||
}
|
||||
|
|
|
@ -1,98 +0,0 @@
|
|||
<?php
|
||||
|
||||
namespace App\Framework\Twig;
|
||||
|
||||
use App\Gmarche\Table\AntenneTable;
|
||||
use App\Gmarche\Table\RegionTable;
|
||||
use App\Product\Table\ProductTable;
|
||||
use Framework\Actions\RouterAwareAction;
|
||||
use Framework\Database\Table;
|
||||
use Psr\Container\ContainerInterface;
|
||||
use Psr\Http\Message\ServerRequestInterface as Request;
|
||||
|
||||
class AntenneExtension extends \Twig_Extension
|
||||
{
|
||||
|
||||
/**
|
||||
* @var table
|
||||
*/
|
||||
private $table;
|
||||
private $productTable;
|
||||
private $regionTable;
|
||||
private $antenneTable;
|
||||
private $container;
|
||||
|
||||
// use RouterAwareAction;
|
||||
// private $antenne_slug;
|
||||
|
||||
|
||||
public function __construct(AntenneTable $antenneTable = null)
|
||||
{
|
||||
// $this->antenne_slug = $antenne_slug;
|
||||
$this->table = $table;
|
||||
$this->productTable = $productTable;
|
||||
$this->regionTable = $regionTable;
|
||||
$this->antenneTable = $antenneTable;
|
||||
}
|
||||
|
||||
public function getFunctions()
|
||||
{
|
||||
return [
|
||||
new \Twig_SimpleFunction('current_antenne', [$this, 'currentAntenne'])
|
||||
];
|
||||
}
|
||||
|
||||
/* public function pathFor(string $path, array $params = []): string
|
||||
{
|
||||
return $this->router->generateUri($path, $params);
|
||||
}*/
|
||||
|
||||
|
||||
/**
|
||||
* @return \PDO
|
||||
*/
|
||||
public function getPdo(): \PDO
|
||||
{
|
||||
return $this->pdo;
|
||||
}
|
||||
|
||||
public function currentAntenne(?\PDO $pdo = null, string $antenne_slug): int
|
||||
{
|
||||
//echo "antenne_slug=".$antenne_slug;
|
||||
// die();
|
||||
//$params = $request->getQueryParams();
|
||||
echo "pdo";
|
||||
var_dump($pdo);
|
||||
die();
|
||||
if (self::getPdo()) {
|
||||
echo 'PDO true';
|
||||
die();
|
||||
} else {
|
||||
echo 'PDO false';
|
||||
die();
|
||||
}
|
||||
$region_id = $this->antenneTable->findBy('slug', 'paris')->id;
|
||||
echo 'region_id';
|
||||
var_dump($region_id);
|
||||
// $test = $this->antenneTable->findWithAntenne('paris');
|
||||
//$test2 = $this->table->findAllbyRegion(8);
|
||||
$test1 = $this->productTable;
|
||||
echo 'test1';
|
||||
var_dump($test1);
|
||||
$test2 = $this->table;
|
||||
echo 'test2';
|
||||
var_dump($test2);
|
||||
die();
|
||||
$test = $this->productTable->findBy('slug', 'badge');
|
||||
echo 'test = ';
|
||||
var_dump($test);
|
||||
die();
|
||||
echo 'test2 = '.var_dump($test2);
|
||||
die();
|
||||
//return $this->antenneTable->findBy('slug', 'paris')->id;
|
||||
// return(1);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -60,7 +60,9 @@ class AntenneShowAction
|
|||
'id' => $region->id
|
||||
]);
|
||||
}*/
|
||||
if (!isset($_SESSION)) {
|
||||
session_start();
|
||||
}
|
||||
if (isset($_SESSION['user'])) {
|
||||
$nom_user = $_SESSION['user'];
|
||||
} else {
|
||||
|
|
|
@ -20,12 +20,17 @@ class RegionIndexAction
|
|||
}
|
||||
public function __invoke()
|
||||
{
|
||||
if (!isset($_SESSION)) {
|
||||
session_start();
|
||||
}
|
||||
$accueil = true;
|
||||
if (isset($_SESSION['user'])) {
|
||||
$nom_user = $_SESSION['user'];
|
||||
$role = $_SESSION['role'];
|
||||
} else {
|
||||
$nom_user = '';
|
||||
$role = '3';
|
||||
}
|
||||
return $this->renderer->render('@gmarche/index', compact('nom_user'));
|
||||
return $this->renderer->render('@gmarche/index', compact('nom_user','accueil','role'));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -12,7 +12,6 @@ class AntenneTable extends Table
|
|||
|
||||
protected $table = 'antennes';
|
||||
|
||||
|
||||
public function findAllbyRegion(int $region_id): Query
|
||||
{
|
||||
$region = new RegionTable($this->pdo);
|
||||
|
@ -22,22 +21,12 @@ class AntenneTable extends Table
|
|||
->where("a.region_id = $region_id")
|
||||
->order('a.name ASC');
|
||||
}
|
||||
/* public function getAntenne(string $antenne_slug): Query
|
||||
public function findAllAntennes(): Query
|
||||
{
|
||||
//$antenne = new AntenneTable($this->pdo);
|
||||
$region = new RegionTable($this->pdo);
|
||||
return $this->makeQuery()
|
||||
->select('a.*')
|
||||
->where("a.slug = $antenne_slug")
|
||||
->order('a.name ASC');
|
||||
->join($region->getTable() . ' as r', 'a.region_id = r.id')
|
||||
->select('a.id, r.name as regionName, a.name as antenneName')
|
||||
->order('r.name, a.name ASC');
|
||||
}
|
||||
public function findPublic(): Query
|
||||
{
|
||||
return $this->findAll();
|
||||
}
|
||||
|
||||
|
||||
public function findWithAntenne(int $antenne_slug): Antenne
|
||||
{
|
||||
return $this->findPublic()->where("a.slug = $antenne_slug")->fetch();
|
||||
}*/
|
||||
}
|
||||
|
|
|
@ -56,7 +56,9 @@ class ProductIndexAction
|
|||
$page = $params['p'] ?? 1;
|
||||
$viewPath = '@product/admin/products';
|
||||
$items = $this->productTable->findByAntenneId('antenne_id', $antenne_id)->paginate(20, $page);
|
||||
if (!isset($_SESSION)) {
|
||||
session_start();
|
||||
}
|
||||
if (isset($_SESSION['user'])) {
|
||||
$nom_user = $_SESSION['user'];
|
||||
$requete_user = $this->userTable->findBy('username', $nom_user);
|
||||
|
|
|
@ -58,7 +58,9 @@ class RechIndexAction
|
|||
//$routePrefix = 'product.index';
|
||||
$viewPath = '@product/admin/recherches';
|
||||
$items = $this->rechTable->findByAntenneId('antenne_id', $antenne_id)->paginate(20, $page);
|
||||
if (!isset($_SESSION)) {
|
||||
session_start();
|
||||
}
|
||||
if (isset($_SESSION['user'])) {
|
||||
$nom_user = $_SESSION['user'];
|
||||
$requete_user = $this->userTable->findBy('username', $nom_user);
|
||||
|
|
|
@ -42,12 +42,19 @@
|
|||
<a class="navbar-brand" href="#">Ğ1-Marché</a>
|
||||
<ul class="navbar-nav mr-auto">
|
||||
<li class="nav-item">
|
||||
<a class="nav-link {% if regions %} active{% endif %}" style="font-size:14px;"
|
||||
<a class="nav-link {% if accueil %} active{% endif %}" style="font-size:14px;"
|
||||
href="{{ path('gmarche.index') }}">Accueil</a>
|
||||
</li>
|
||||
{% if role=='0' or role=='1' or role=='2' %}
|
||||
<li class="nav-item">
|
||||
<a class="nav-link {% if explodeUrl()[1]=='dashboard' %} active{% endif %}" style="font-size:14px;"
|
||||
href="{{ path('dashboard') }}">Administration</a>
|
||||
</li>
|
||||
{% endif %}
|
||||
<li class="nav-item">
|
||||
<a class="nav-link {% if explodeUrl()[1]=='contact' %} active{% endif %}" style="font-size:14px;"
|
||||
href="{{ path('contact') }}">Qui sommes-nous ?</a>
|
||||
href="{{ path('contact') }}">Qui sommes-nous ?
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
<div class="navbar-nav">
|
||||
|
@ -57,7 +64,6 @@
|
|||
{% if nom_user != '' %}
|
||||
<form method="post" style="margin-top:5px;" action="{{ path('account.profil') }}">
|
||||
<span><img src="\avatar_user.png" width="22" height="22" /></span>
|
||||
<!--<span id="nom_connecte"> nom_user </span>-->
|
||||
<button id="nom_connecte" style="color:white;font-size: 14px;" class="btn-primary">{{ nom_user }}</button>
|
||||
</form>
|
||||
<form method="post" action="{{ path('auth.logout') }}">
|
||||
|
|
Loading…
Reference in New Issue