debut du merge

pull/21/head
brongniart 5 months ago
commit 12825c3038

File diff suppressed because it is too large Load Diff

@ -0,0 +1,31 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="MessDetectorOptionsConfiguration">
<option name="transferred" value="true" />
</component>
<component name="PHPCSFixerOptionsConfiguration">
<option name="transferred" value="true" />
</component>
<component name="PHPCodeSnifferOptionsConfiguration">
<option name="highlightLevel" value="WARNING" />
<option name="transferred" value="true" />
</component>
<component name="PhpIncludePathManager">
<include_path>
<path value="$PROJECT_DIR$/vendor/composer" />
<path value="$PROJECT_DIR$/vendor/altorouter/altorouter" />
<path value="$PROJECT_DIR$/vendor/twig/twig" />
<path value="$PROJECT_DIR$/vendor/symfony/polyfill-ctype" />
<path value="$PROJECT_DIR$/vendor/symfony/polyfill-php81" />
<path value="$PROJECT_DIR$/vendor/symfony/deprecation-contracts" />
<path value="$PROJECT_DIR$/vendor/symfony/polyfill-mbstring" />
</include_path>
</component>
<component name="PhpProjectSharedConfiguration" php_language_level="8.3" />
<component name="PhpStanOptionsConfiguration">
<option name="transferred" value="true" />
</component>
<component name="PsalmOptionsConfiguration">
<option name="transferred" value="true" />
</component>
</project>

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="" vcs="Git" />
</component>
</project>

@ -0,0 +1,127 @@
<?php
use Twig\Environment;
use Twig\Error\LoaderError;
use Twig\Error\RuntimeError;
use Twig\Extension\CoreExtension;
use Twig\Extension\SandboxExtension;
use Twig\Markup;
use Twig\Sandbox\SecurityError;
use Twig\Sandbox\SecurityNotAllowedTagError;
use Twig\Sandbox\SecurityNotAllowedFilterError;
use Twig\Sandbox\SecurityNotAllowedFunctionError;
use Twig\Source;
use Twig\Template;
use Twig\TemplateWrapper;
/* signin2.html.twig */
class __TwigTemplate_487259351c054531e82d7ec374d515ee extends Template
{
private Source $source;
/**
* @var array<string, Template>
*/
private array $macros = [];
public function __construct(Environment $env)
{
parent::__construct($env);
$this->source = $this->getSourceContext();
$this->parent = false;
$this->blocks = [
];
}
protected function doDisplay(array $context, array $blocks = []): iterable
{
$macros = $this->macros;
// line 1
yield "<!DOCTYPE html>
<html lang=\"fr\">
<head>
<meta charset=\"UTF-8\">
<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">
<link rel=\"stylesheet\" type=\"text/css\" href=\"../public/styles/styleSignin.css\" media=\"screen\">
<title>Wiki Fantasy : Inscription</title>
<link id=\"favicon\" rel=\"icon\" href=\"../images/iconeSombre.ico\"> <!-- Par défaut sombre -->
<link href=\"https://fonts.googleapis.com/css2?family=Lemon&display=swap\" rel=\"stylesheet\">
<script defer src=\"../public/script/theme-toggle.js\"></script>
</head>
<body>
<div class=\"container\">
<div class=\"header\">
<div class=\"nav\">
<a href=\"favorite.html\"><img src=\"../images/coeur.svg\" alt=\"coeur\" width=\"67px\" height=\"67px\" onmousedown=\"return false\"></a>
<img id=\"theme-icon\" src=\"../images/light.svg\" alt=\"toggle theme\" width=\"72px\" height=\"37px\" onmousedown=\"return false\" onclick=\"toggleTheme()\">
<a href=\"quiz.html\"><img src=\"../images/quizz.svg\" alt=\"quizz\" width=\"51px\" height=\"82px\" onmousedown=\"return false\"></a>
</div>
<div class=\"logo\">
<a href=\"accueil.html\"><img src=\"../images/WIKIFANTASY.png\" alt=\"Logo\" width=\"227px\" height=\"106px\" onmousedown=\"return false\"></a>
</div>
<div class=\"user\">
<img src=\"../images/user_dark.png\" alt=\"user\" width=\"70px\" height=\"70px\" onmousedown=\"return false\">
</div>
</div>
</div>
<h1>▶ S'inscrazeazeazeire ◀</h1>
<form method=\"post\">
<div class=\"signin\">
<div class=\"DivId\">
<p>Identifiant *</p>
<input type=\"text\" class=\"champ\" id=\"pseudo\" name=\"pseudo\" placeholder=\"Id\" required/>
</div>
<div class=\"DivEmail\">
<p>Email *</p>
<input type=\"email\" class=\"champ\" id=\"email\" name=\"email\" required/>
</div>
<div class=\"mdp\">
<p>Mot de passe *</p>
<input type=\"password\" class=\"champ\" id=\"mdp\" name=\"mdp\" required placeholder=\"Entrez votre mot de passe\"/>
</div>
<div class=\"confmdp\">
<p>Confirmer mot de passe *</p>
<input type=\"password\" class=\"champ\" id=\"cmdp\" name=\"cmdp\" placeholder=\"Confirmez votre mot de passe\" required/>
</div>
<div class=\"imgprof\">
<p>Image *</p>
</div>
<div class=\"confirmer\">
<input type=\"submit\" class=\"btn\" value=\"Inscription\" />
</div>
</div>
</form>
</body>
</html>";
yield from [];
}
/**
* @codeCoverageIgnore
*/
public function getTemplateName(): string
{
return "signin2.html.twig";
}
/**
* @codeCoverageIgnore
*/
public function getDebugInfo(): array
{
return array ( 42 => 1,);
}
public function getSourceContext(): Source
{
return new Source("", "signin.html.twig", "/Users/kiem/Documents/WikiFantasy/WF-Website/vue/templates/signin2.html.twig");
}
}

@ -0,0 +1,144 @@
<?php
use Twig\Environment;
use Twig\Error\LoaderError;
use Twig\Error\RuntimeError;
use Twig\Extension\CoreExtension;
use Twig\Extension\SandboxExtension;
use Twig\Markup;
use Twig\Sandbox\SecurityError;
use Twig\Sandbox\SecurityNotAllowedTagError;
use Twig\Sandbox\SecurityNotAllowedFilterError;
use Twig\Sandbox\SecurityNotAllowedFunctionError;
use Twig\Source;
use Twig\Template;
use Twig\TemplateWrapper;
/* signin4.html.twig */
class __TwigTemplate_02d73cdfa663473648587454068306f0 extends Template
{
private Source $source;
/**
* @var array<string, Template>
*/
private array $macros = [];
public function __construct(Environment $env)
{
parent::__construct($env);
$this->source = $this->getSourceContext();
$this->parent = false;
$this->blocks = [
];
}
protected function doDisplay(array $context, array $blocks = []): iterable
{
$macros = $this->macros;
// line 1
yield "<!DOCTYPE html>
<html lang=\"fr\">
<head>
<meta charset=\"UTF-8\">
<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">
<link rel=\"stylesheet\" type=\"text/css\" href=\"../public/styles/styleSignin.css\" media=\"screen\">
<title>Wiki Fantasy : Inscription</title>
<link id=\"favicon\" rel=\"icon\" href=\"../images/iconeSombre.ico\"> <!-- Par défaut sombre -->
<link href=\"https://fonts.googleapis.com/css2?family=Lemon&display=swap\" rel=\"stylesheet\">
<script defer src=\"../public/script/theme-toggle.js\"></script>
</head>
<body>
<div class=\"container\">
<div class=\"header\">
<div class=\"nav\">
<a href=\"favorite.html\"><img src=\"../images/coeur.svg\" alt=\"coeur\" width=\"67px\" height=\"67px\" onmousedown=\"return false\"></a>
<img id=\"theme-icon\" src=\"../images/light.svg\" alt=\"toggle theme\" width=\"72px\" height=\"37px\" onmousedown=\"return false\" onclick=\"toggleTheme()\">
<a href=\"quiz.html\"><img src=\"../images/quizz.svg\" alt=\"quizz\" width=\"51px\" height=\"82px\" onmousedown=\"return false\"></a>
</div>
<div class=\"logo\">
<a href=\"accueil.html\"><img src=\"../images/WIKIFANTASY.png\" alt=\"Logo\" width=\"227px\" height=\"106px\" onmousedown=\"return false\"></a>
</div>
<div class=\"user\">
<img src=\"../images/user_dark.png\" alt=\"user\" width=\"70px\" height=\"70px\" onmousedown=\"return false\">
</div>
</div>
</div>
<h1>▶ ";
// line 28
yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(($context["errors"] ?? null), "html", null, true);
yield " ◀</h1>
<form method=\"post\">
<div class=\"signin\">
<div class=\"DivId\">
<p>Identifiant *</p>
<input type=\"text\" class=\"champ\" id=\"pseudo\" name=\"pseudo\" placeholder=\"Id\" required/>
</div>
<div class=\"DivEmail\">
<p>Email *</p>
<input type=\"email\" class=\"champ\" id=\"email\" name=\"email\" required/>
</div>
<div class=\"mdp\">
<p>Mot de passe *</p>
<input type=\"password\" class=\"champ\" id=\"mdp\" name=\"mdp\" required placeholder=\"";
// line 43
yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(($context["errors"] ?? null), "html", null, true);
yield "\"/>
</div>
<div class=\"confmdp\">
<p>Confirmer mot de passe *</p>
<input type=\"password\" class=\"champ\" id=\"cmdp\" name=\"cmdp\" placeholder=\"";
// line 48
yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(($context["errors"] ?? null), "html", null, true);
yield "\" required/>
</div>
<div class=\"imgprof\">
<p>Image *</p>
</div>
<div class=\"confirmer\">
<input type=\"submit\" class=\"btn\" value=\"Inscription\" />
</div>
</div>
</form>
</body>
</html>";
yield from [];
}
/**
* @codeCoverageIgnore
*/
public function getTemplateName(): string
{
return "signin4.html.twig";
}
/**
* @codeCoverageIgnore
*/
public function isTraitable(): bool
{
return false;
}
/**
* @codeCoverageIgnore
*/
public function getDebugInfo(): array
{
return array ( 97 => 48, 89 => 43, 71 => 28, 42 => 1,);
}
public function getSourceContext(): Source
{
return new Source("", "signin4.html.twig", "/Users/kiem/Documents/WikiFantasy/WF-Website/vue/templates/signin4.html.twig");
}
}

@ -0,0 +1,114 @@
<?php
use Twig\Environment;
use Twig\Error\LoaderError;
use Twig\Error\RuntimeError;
use Twig\Extension\CoreExtension;
use Twig\Extension\SandboxExtension;
use Twig\Markup;
use Twig\Sandbox\SecurityError;
use Twig\Sandbox\SecurityNotAllowedTagError;
use Twig\Sandbox\SecurityNotAllowedFilterError;
use Twig\Sandbox\SecurityNotAllowedFunctionError;
use Twig\Source;
use Twig\Template;
use Twig\TemplateWrapper;
/* login.html.twig */
class __TwigTemplate_07a755596da3dba7ab89ea161b697e55 extends Template
{
private Source $source;
/**
* @var array<string, Template>
*/
private array $macros = [];
public function __construct(Environment $env)
{
parent::__construct($env);
$this->source = $this->getSourceContext();
$this->parent = false;
$this->blocks = [
];
}
protected function doDisplay(array $context, array $blocks = []): iterable
{
$macros = $this->macros;
// line 1
yield "<!DOCTYPE html>
<html lang=\"fr\">
<head>
<meta charset=\"UTF-8\">
<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">
<link rel=\"stylesheet\" type=\"text/css\" href=\"../public/styles/styleLogin.css\" media=\"screen\">
<title>Wiki Fantasy : Connexion</title>
<link id=\"favicon\" rel=\"icon\" href=\"../../images/iconeSombre.ico\"> <!-- Par défaut sombre -->
<link href=\"https://fonts.googleapis.com/css2?family=Lemon&display=swap\" rel=\"stylesheet\">
<script defer src=\"../public/script/theme-toggle.js\"></script>
</head>
<body>
<div class=\"container\">
<div class=\"header\">
<div class=\"nav\">
<img src=\"../images/coeur.svg\" alt=\"coeur\" width=\"67px\" height=\"67px\" onmousedown=\"return false\">
<img id=\"theme-icon\" src=\"../images/light.svg\" alt=\"toggle theme\" width=\"72px\" height=\"37px\" onmousedown=\"return false\" onclick=\"toggleTheme()\">
<img src=\"../images/quizz.svg\" alt=\"quizz\" width=\"51px\" height=\"82px\" onmousedown=\"return false\">
</div>
<div class=\"logo\">
<a href=\"accueil.html\"><img src=\"../images/WIKIFANTASY.png\" alt=\"Logo\" width=\"227px\" height=\"106px\" onmousedown=\"return false\"></a>
</div>
<div class=\"user\">
<img src=\"../images/user_dark.png\" alt=\"user\" width=\"70px\" height=\"70px\" onmousedown=\"return false\">
</div>
</div>
</div>
<h1>▶ Connexion ◀</h1>
<form class=\"login\" method=\"post\">
<p> <strong>Identifiant *</strong></p>
<input type=\"text\" class=\"connexion\" name=\"pseudo\" id=\"pseudo\" placeholder=\"Entrez votre pseudo ...\" required />
<p> <strong> Mot de passe *</strong></p>
<input type=\"password\" class=\"connexion\" name=\"mdp\" id=\"mdp\" placeholder=\"Entrez votre mdp ...\" required />
<div class=\"createAccount\">
<p class=\"createAccount\">Vous n'avez pas de compte?</p>
<a href=\"signin.html.twig\" class=\"createAccount\">S'incrire</a>
</div>
<div class=\"buttonSubmitDiv\">
<button class=\"buttonSudmite\">Connexion</button>
</div>
</form>
</body>
</html>";
yield from [];
}
/**
* @codeCoverageIgnore
*/
public function getTemplateName(): string
{
return "login.html.twig";
}
/**
* @codeCoverageIgnore
*/
public function getDebugInfo(): array
{
return array ( 42 => 1,);
}
public function getSourceContext(): Source
{
return new Source("", "login.html.twig", "/Users/kiem/Documents/WikiFantasy/WF-Website/vue/templates/login.html.twig");
}
}

@ -0,0 +1,144 @@
<?php
use Twig\Environment;
use Twig\Error\LoaderError;
use Twig\Error\RuntimeError;
use Twig\Extension\CoreExtension;
use Twig\Extension\SandboxExtension;
use Twig\Markup;
use Twig\Sandbox\SecurityError;
use Twig\Sandbox\SecurityNotAllowedTagError;
use Twig\Sandbox\SecurityNotAllowedFilterError;
use Twig\Sandbox\SecurityNotAllowedFunctionError;
use Twig\Source;
use Twig\Template;
use Twig\TemplateWrapper;
/* signin5.html.twig */
class __TwigTemplate_b1f0b539b8066ca5a58d316472e062b0 extends Template
{
private Source $source;
/**
* @var array<string, Template>
*/
private array $macros = [];
public function __construct(Environment $env)
{
parent::__construct($env);
$this->source = $this->getSourceContext();
$this->parent = false;
$this->blocks = [
];
}
protected function doDisplay(array $context, array $blocks = []): iterable
{
$macros = $this->macros;
// line 1
yield "<!DOCTYPE html>
<html lang=\"fr\">
<head>
<meta charset=\"UTF-8\">
<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">
<link rel=\"stylesheet\" type=\"text/css\" href=\"../public/styles/styleSignin.css\" media=\"screen\">
<title>Wiki Fantasy : Inscription</title>
<link id=\"favicon\" rel=\"icon\" href=\"../images/iconeSombre.ico\"> <!-- Par défaut sombre -->
<link href=\"https://fonts.googleapis.com/css2?family=Lemon&display=swap\" rel=\"stylesheet\">
<script defer src=\"../public/script/theme-toggle.js\"></script>
</head>
<body>
<div class=\"container\">
<div class=\"header\">
<div class=\"nav\">
<a href=\"favorite.html\"><img src=\"../images/coeur.svg\" alt=\"coeur\" width=\"67px\" height=\"67px\" onmousedown=\"return false\"></a>
<img id=\"theme-icon\" src=\"../images/light.svg\" alt=\"toggle theme\" width=\"72px\" height=\"37px\" onmousedown=\"return false\" onclick=\"toggleTheme()\">
<a href=\"quiz.html\"><img src=\"../images/quizz.svg\" alt=\"quizz\" width=\"51px\" height=\"82px\" onmousedown=\"return false\"></a>
</div>
<div class=\"logo\">
<a href=\"accueil.html\"><img src=\"../images/WIKIFANTASY.png\" alt=\"Logo\" width=\"227px\" height=\"106px\" onmousedown=\"return false\"></a>
</div>
<div class=\"user\">
<img src=\"../images/user_dark.png\" alt=\"user\" width=\"70px\" height=\"70px\" onmousedown=\"return false\">
</div>
</div>
</div>
<h1>▶ ";
// line 28
yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(($context["test"] ?? null), "html", null, true);
yield " ◀</h1>
<form method=\"post\">
<div class=\"signin\">
<div class=\"DivId\">
<p>Identifiant *</p>
<input type=\"text\" class=\"champ\" id=\"pseudo\" name=\"pseudo\" placeholder=\"Id\" required/>
</div>
<div class=\"DivEmail\">
<p>Email *</p>
<input type=\"email\" class=\"champ\" id=\"email\" name=\"email\" required/>
</div>
<div class=\"mdp\">
<p>Mot de passe *</p>
<input type=\"password\" class=\"champ\" id=\"mdp\" name=\"mdp\" required placeholder=\"";
// line 43
yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(($context["errors"] ?? null), "html", null, true);
yield "\"/>
</div>
<div class=\"confmdp\">
<p>Confirmer mot de passe *</p>
<input type=\"password\" class=\"champ\" id=\"cmdp\" name=\"cmdp\" placeholder=\"";
// line 48
yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(($context["errors"] ?? null), "html", null, true);
yield "\" required/>
</div>
<div class=\"imgprof\">
<p>Image *</p>
</div>
<div class=\"confirmer\">
<input type=\"submit\" class=\"btn\" value=\"Inscription\" />
</div>
</div>
</form>
</body>
</html>";
yield from [];
}
/**
* @codeCoverageIgnore
*/
public function getTemplateName(): string
{
return "signin5.html.twig";
}
/**
* @codeCoverageIgnore
*/
public function isTraitable(): bool
{
return false;
}
/**
* @codeCoverageIgnore
*/
public function getDebugInfo(): array
{
return array ( 97 => 48, 89 => 43, 71 => 28, 42 => 1,);
}
public function getSourceContext(): Source
{
return new Source("", "signin5.html.twig", "/Users/kiem/Documents/WikiFantasy/WF-Website/vue/templates/signin5.html.twig");
}
}

@ -0,0 +1,144 @@
<?php
use Twig\Environment;
use Twig\Error\LoaderError;
use Twig\Error\RuntimeError;
use Twig\Extension\CoreExtension;
use Twig\Extension\SandboxExtension;
use Twig\Markup;
use Twig\Sandbox\SecurityError;
use Twig\Sandbox\SecurityNotAllowedTagError;
use Twig\Sandbox\SecurityNotAllowedFilterError;
use Twig\Sandbox\SecurityNotAllowedFunctionError;
use Twig\Source;
use Twig\Template;
use Twig\TemplateWrapper;
/* signin6.html.twig */
class __TwigTemplate_7a4f39ed5cce012c6d4972b06e431782 extends Template
{
private Source $source;
/**
* @var array<string, Template>
*/
private array $macros = [];
public function __construct(Environment $env)
{
parent::__construct($env);
$this->source = $this->getSourceContext();
$this->parent = false;
$this->blocks = [
];
}
protected function doDisplay(array $context, array $blocks = []): iterable
{
$macros = $this->macros;
// line 1
yield "<!DOCTYPE html>
<html lang=\"fr\">
<head>
<meta charset=\"UTF-8\">
<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">
<link rel=\"stylesheet\" type=\"text/css\" href=\"../public/styles/styleSignin.css\" media=\"screen\">
<title>Wiki Fantasy : Inscription</title>
<link id=\"favicon\" rel=\"icon\" href=\"../images/iconeSombre.ico\"> <!-- Par défaut sombre -->
<link href=\"https://fonts.googleapis.com/css2?family=Lemon&display=swap\" rel=\"stylesheet\">
<script defer src=\"../public/script/theme-toggle.js\"></script>
</head>
<body>
<div class=\"container\">
<div class=\"header\">
<div class=\"nav\">
<a href=\"favorite.html\"><img src=\"../images/coeur.svg\" alt=\"coeur\" width=\"67px\" height=\"67px\" onmousedown=\"return false\"></a>
<img id=\"theme-icon\" src=\"../images/light.svg\" alt=\"toggle theme\" width=\"72px\" height=\"37px\" onmousedown=\"return false\" onclick=\"toggleTheme()\">
<a href=\"quiz.html\"><img src=\"../images/quizz.svg\" alt=\"quizz\" width=\"51px\" height=\"82px\" onmousedown=\"return false\"></a>
</div>
<div class=\"logo\">
<a href=\"accueil.html\"><img src=\"../images/WIKIFANTASY.png\" alt=\"Logo\" width=\"227px\" height=\"106px\" onmousedown=\"return false\"></a>
</div>
<div class=\"user\">
<img src=\"../images/user_dark.png\" alt=\"user\" width=\"70px\" height=\"70px\" onmousedown=\"return false\">
</div>
</div>
</div>
<h1>▶ ";
// line 28
yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(($context["test"] ?? null), "html", null, true);
yield " ◀</h1>
<form method=\"post\">
<div class=\"signin\">
<div class=\"DivId\">
<p>Identifiant *</p>
<input type=\"text\" class=\"champ\" id=\"pseudo\" name=\"pseudo\" placeholder=\"Id\" required/>
</div>
<div class=\"DivEmail\">
<p>Email *</p>
<input type=\"email\" class=\"champ\" id=\"email\" name=\"email\" required/>
</div>
<div class=\"mdp\">
<p>Mot de passe *</p>
<input type=\"password\" class=\"champ\" id=\"mdp\" name=\"mdp\" required placeholder=\"";
// line 43
yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(($context["errors"] ?? null), "html", null, true);
yield "\"/>
</div>
<div class=\"confmdp\">
<p>Confirmer mot de passe *</p>
<input type=\"password\" class=\"champ\" id=\"cmdp\" name=\"cmdp\" placeholder=\"";
// line 48
yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(($context["errors"] ?? null), "html", null, true);
yield "\" required/>
</div>
<div class=\"imgprof\">
<p>Image *</p>
</div>
<div class=\"confirmer\">
<input type=\"hidden\" class=\"btn\" name=\"action\" value=\"validsignin\" />
</div>
</div>
</form>
</body>
</html>";
yield from [];
}
/**
* @codeCoverageIgnore
*/
public function getTemplateName(): string
{
return "signin6.html.twig";
}
/**
* @codeCoverageIgnore
*/
public function isTraitable(): bool
{
return false;
}
/**
* @codeCoverageIgnore
*/
public function getDebugInfo(): array
{
return array ( 97 => 48, 89 => 43, 71 => 28, 42 => 1,);
}
public function getSourceContext(): Source
{
return new Source("", "signin6.html.twig", "/Users/kiem/Documents/WikiFantasy/WF-Website/vue/templates/signin6.html.twig");
}
}

@ -0,0 +1,144 @@
<?php
use Twig\Environment;
use Twig\Error\LoaderError;
use Twig\Error\RuntimeError;
use Twig\Extension\CoreExtension;
use Twig\Extension\SandboxExtension;
use Twig\Markup;
use Twig\Sandbox\SecurityError;
use Twig\Sandbox\SecurityNotAllowedTagError;
use Twig\Sandbox\SecurityNotAllowedFilterError;
use Twig\Sandbox\SecurityNotAllowedFunctionError;
use Twig\Source;
use Twig\Template;
use Twig\TemplateWrapper;
/* signin7.html.twig */
class __TwigTemplate_179113c369ca1501764a939233b8ee58 extends Template
{
private Source $source;
/**
* @var array<string, Template>
*/
private array $macros = [];
public function __construct(Environment $env)
{
parent::__construct($env);
$this->source = $this->getSourceContext();
$this->parent = false;
$this->blocks = [
];
}
protected function doDisplay(array $context, array $blocks = []): iterable
{
$macros = $this->macros;
// line 1
yield "<!DOCTYPE html>
<html lang=\"fr\">
<head>
<meta charset=\"UTF-8\">
<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">
<link rel=\"stylesheet\" type=\"text/css\" href=\"../public/styles/styleSignin.css\" media=\"screen\">
<title>Wiki Fantasy : Inscription</title>
<link id=\"favicon\" rel=\"icon\" href=\"../images/iconeSombre.ico\"> <!-- Par défaut sombre -->
<link href=\"https://fonts.googleapis.com/css2?family=Lemon&display=swap\" rel=\"stylesheet\">
<script defer src=\"../public/script/theme-toggle.js\"></script>
</head>
<body>
<div class=\"container\">
<div class=\"header\">
<div class=\"nav\">
<a href=\"favorite.html\"><img src=\"../images/coeur.svg\" alt=\"coeur\" width=\"67px\" height=\"67px\" onmousedown=\"return false\"></a>
<img id=\"theme-icon\" src=\"../images/light.svg\" alt=\"toggle theme\" width=\"72px\" height=\"37px\" onmousedown=\"return false\" onclick=\"toggleTheme()\">
<a href=\"quiz.html\"><img src=\"../images/quizz.svg\" alt=\"quizz\" width=\"51px\" height=\"82px\" onmousedown=\"return false\"></a>
</div>
<div class=\"logo\">
<a href=\"accueil.html\"><img src=\"../images/WIKIFANTASY.png\" alt=\"Logo\" width=\"227px\" height=\"106px\" onmousedown=\"return false\"></a>
</div>
<div class=\"user\">
<img src=\"../images/user_dark.png\" alt=\"user\" width=\"70px\" height=\"70px\" onmousedown=\"return false\">
</div>
</div>
</div>
<h1>▶ ";
// line 28
yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(($context["test"] ?? null), "html", null, true);
yield " ◀</h1>
<form method=\"post\">
<div class=\"signin\">
<div class=\"DivId\">
<p>Identifiant *</p>
<input type=\"text\" class=\"champ\" id=\"pseudo\" name=\"pseudo\" placeholder=\"Id\" required/>
</div>
<div class=\"DivEmail\">
<p>Email *</p>
<input type=\"email\" class=\"champ\" id=\"email\" name=\"email\" required/>
</div>
<div class=\"mdp\">
<p>Mot de passe *</p>
<input type=\"password\" class=\"champ\" id=\"mdp\" name=\"mdp\" required placeholder=\"";
// line 43
yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(($context["errors"] ?? null), "html", null, true);
yield "\"/>
</div>
<div class=\"confmdp\">
<p>Confirmer mot de passe *</p>
<input type=\"password\" class=\"champ\" id=\"cmdp\" name=\"cmdp\" placeholder=\"";
// line 48
yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(($context["errors"] ?? null), "html", null, true);
yield "\" required/>
</div>
<div class=\"imgprof\">
<p>Image *</p>
</div>
<div class=\"confirmer\">
<input type=\"submit\" class=\"btn\" name=\"action\" value=\"validsignin\" />
</div>
</div>
</form>
</body>
</html>";
yield from [];
}
/**
* @codeCoverageIgnore
*/
public function getTemplateName(): string
{
return "signin7.html.twig";
}
/**
* @codeCoverageIgnore
*/
public function isTraitable(): bool
{
return false;
}
/**
* @codeCoverageIgnore
*/
public function getDebugInfo(): array
{
return array ( 97 => 48, 89 => 43, 71 => 28, 42 => 1,);
}
public function getSourceContext(): Source
{
return new Source("", "signin7.html.twig", "/Users/kiem/Documents/WikiFantasy/WF-Website/vue/templates/signin7.html.twig");
}
}

@ -0,0 +1,144 @@
<?php
use Twig\Environment;
use Twig\Error\LoaderError;
use Twig\Error\RuntimeError;
use Twig\Extension\CoreExtension;
use Twig\Extension\SandboxExtension;
use Twig\Markup;
use Twig\Sandbox\SecurityError;
use Twig\Sandbox\SecurityNotAllowedTagError;
use Twig\Sandbox\SecurityNotAllowedFilterError;
use Twig\Sandbox\SecurityNotAllowedFunctionError;
use Twig\Source;
use Twig\Template;
use Twig\TemplateWrapper;
/* signin1.html.twig */
class __TwigTemplate_c5ff4ebd3f89e0ca0a1643dfb2cba640 extends Template
{
private Source $source;
/**
* @var array<string, Template>
*/
private array $macros = [];
public function __construct(Environment $env)
{
parent::__construct($env);
$this->source = $this->getSourceContext();
$this->parent = false;
$this->blocks = [
];
}
protected function doDisplay(array $context, array $blocks = []): iterable
{
$macros = $this->macros;
// line 1
yield "<!DOCTYPE html>
<html lang=\"fr\">
<head>
<meta charset=\"UTF-8\">
<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">
<link rel=\"stylesheet\" type=\"text/css\" href=\"../public/styles/styleSignin.css\" media=\"screen\">
<title>Wiki Fantasy : Inscription</title>
<link id=\"favicon\" rel=\"icon\" href=\"../images/iconeSombre.ico\"> <!-- Par défaut sombre -->
<link href=\"https://fonts.googleapis.com/css2?family=Lemon&display=swap\" rel=\"stylesheet\">
<script defer src=\"../public/script/theme-toggle.js\"></script>
</head>
<body>
<div class=\"container\">
<div class=\"header\">
<div class=\"nav\">
<a href=\"favorite.html\"><img src=\"../images/coeur.svg\" alt=\"coeur\" width=\"67px\" height=\"67px\" onmousedown=\"return false\"></a>
<img id=\"theme-icon\" src=\"../images/light.svg\" alt=\"toggle theme\" width=\"72px\" height=\"37px\" onmousedown=\"return false\" onclick=\"toggleTheme()\">
<a href=\"quiz.html\"><img src=\"../images/quizz.svg\" alt=\"quizz\" width=\"51px\" height=\"82px\" onmousedown=\"return false\"></a>
</div>
<div class=\"logo\">
<a href=\"accueil.html\"><img src=\"../images/WIKIFANTASY.png\" alt=\"Logo\" width=\"227px\" height=\"106px\" onmousedown=\"return false\"></a>
</div>
<div class=\"user\">
<img src=\"../images/user_dark.png\" alt=\"user\" width=\"70px\" height=\"70px\" onmousedown=\"return false\">
</div>
</div>
</div>
<h1>▶ ";
// line 28
yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(($context["test"] ?? null), "html", null, true);
yield " ◀</h1>
<form method=\"post\">
<div class=\"signin\">
<div class=\"DivId\">
<p>Identifiant *</p>
<input type=\"text\" class=\"champ\" id=\"pseudo\" name=\"pseudo\" placeholder=\"Id\" required/>
</div>
<div class=\"DivEmail\">
<p>Email *</p>
<input type=\"email\" class=\"champ\" id=\"email\" name=\"email\" required/>
</div>
<div class=\"mdp\">
<p>Mot de passe *</p>
<input type=\"password\" class=\"champ\" id=\"mdp\" name=\"mdp\" required placeholder=\"";
// line 43
yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(($context["errors"] ?? null), "html", null, true);
yield "\"/>
</div>
<div class=\"confmdp\">
<p>Confirmer mot de passe *</p>
<input type=\"password\" class=\"champ\" id=\"cmdp\" name=\"cmdp\" placeholder=\"";
// line 48
yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(($context["errors"] ?? null), "html", null, true);
yield "\" required/>
</div>
<div class=\"imgprof\">
<p>Image *</p>
</div>
<div class=\"confirmer\">
<input type=\"submit\" class=\"btn\" name=\"action\" value=\"validsignin\" />
</div>
</div>
</form>
</body>
</html>";
yield from [];
}
/**
* @codeCoverageIgnore
*/
public function getTemplateName(): string
{
return "signin1.html.twig";
}
/**
* @codeCoverageIgnore
*/
public function isTraitable(): bool
{
return false;
}
/**
* @codeCoverageIgnore
*/
public function getDebugInfo(): array
{
return array ( 97 => 48, 89 => 43, 71 => 28, 42 => 1,);
}
public function getSourceContext(): Source
{
return new Source("", "signin1.html.twig", "/Users/kiem/Documents/WikiFantasy/WF-Website/vue/templates/signin1.html.twig");
}
}

@ -0,0 +1,127 @@
<?php
use Twig\Environment;
use Twig\Error\LoaderError;
use Twig\Error\RuntimeError;
use Twig\Extension\CoreExtension;
use Twig\Extension\SandboxExtension;
use Twig\Markup;
use Twig\Sandbox\SecurityError;
use Twig\Sandbox\SecurityNotAllowedTagError;
use Twig\Sandbox\SecurityNotAllowedFilterError;
use Twig\Sandbox\SecurityNotAllowedFunctionError;
use Twig\Source;
use Twig\Template;
use Twig\TemplateWrapper;
/* signin.html.twig */
class __TwigTemplate_f3fb3bd89b84ec5439a034a1b7acb44e extends Template
{
private Source $source;
/**
* @var array<string, Template>
*/
private array $macros = [];
public function __construct(Environment $env)
{
parent::__construct($env);
$this->source = $this->getSourceContext();
$this->parent = false;
$this->blocks = [
];
}
protected function doDisplay(array $context, array $blocks = []): iterable
{
$macros = $this->macros;
// line 1
yield "<!DOCTYPE html>
<html lang=\"fr\">
<head>
<meta charset=\"UTF-8\">
<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">
<link rel=\"stylesheet\" type=\"text/css\" href=\"../public/styles/styleSignin.css\" media=\"screen\">
<title>Wiki Fantasy : Inscription</title>
<link id=\"favicon\" rel=\"icon\" href=\"../images/iconeSombre.ico\"> <!-- Par défaut sombre -->
<link href=\"https://fonts.googleapis.com/css2?family=Lemon&display=swap\" rel=\"stylesheet\">
<script defer src=\"../public/script/theme-toggle.js\"></script>
</head>
<body>
<div class=\"container\">
<div class=\"header\">
<div class=\"nav\">
<a href=\"favorite.html\"><img src=\"../images/coeur.svg\" alt=\"coeur\" width=\"67px\" height=\"67px\" onmousedown=\"return false\"></a>
<img id=\"theme-icon\" src=\"../images/light.svg\" alt=\"toggle theme\" width=\"72px\" height=\"37px\" onmousedown=\"return false\" onclick=\"toggleTheme()\">
<a href=\"quiz.html\"><img src=\"../images/quizz.svg\" alt=\"quizz\" width=\"51px\" height=\"82px\" onmousedown=\"return false\"></a>
</div>
<div class=\"logo\">
<a href=\"accueil.html\"><img src=\"../images/WIKIFANTASY.png\" alt=\"Logo\" width=\"227px\" height=\"106px\" onmousedown=\"return false\"></a>
</div>
<div class=\"user\">
<img src=\"../images/user_dark.png\" alt=\"user\" width=\"70px\" height=\"70px\" onmousedown=\"return false\">
</div>
</div>
</div>
<h1>▶ S'inscrire ◀</h1>
<form method=\"post\">
<div class=\"signin\">
<div class=\"DivId\">
<p>Identifiant *</p>
<input type=\"text\" class=\"champ\" id=\"pseudo\" name=\"pseudo\" required/>
</div>
<div class=\"DivEmail\">
<p>Email *</p>
<input type=\"email\" class=\"champ\" id=\"email\" name=\"email\" required/>
</div>
<div class=\"mdp\">
<p>Mot de passe *</p>
<input type=\"password\" class=\"champ\" id=\"mdp\" name=\"mdp\" required/>
</div>
<div class=\"confmdp\">
<p>Confirmer mot de passe *</p>
<input type=\"password\" class=\"champ\" id=\"cmdp\" name=\"cmdp\" required/>
</div>
<div class=\"imgprof\">
<p>Image *</p>
</div>
<div class=\"confirmer\">
<input type=\"submit\" class=\"btn\" value=\"Inscription\" />
</div>
</div>
</form>
</body>
</html>";
yield from [];
}
/**
* @codeCoverageIgnore
*/
public function getTemplateName(): string
{
return "signin.html.twig";
}
/**
* @codeCoverageIgnore
*/
public function getDebugInfo(): array
{
return array ( 42 => 1,);
}
public function getSourceContext(): Source
{
return new Source("", "signin.html.twig", "/Users/kiem/Documents/WikiFantasy/WF-Website/vue/templates/signin.html.twig");
}
}

@ -0,0 +1,141 @@
<?php
use Twig\Environment;
use Twig\Error\LoaderError;
use Twig\Error\RuntimeError;
use Twig\Extension\CoreExtension;
use Twig\Extension\SandboxExtension;
use Twig\Markup;
use Twig\Sandbox\SecurityError;
use Twig\Sandbox\SecurityNotAllowedTagError;
use Twig\Sandbox\SecurityNotAllowedFilterError;
use Twig\Sandbox\SecurityNotAllowedFunctionError;
use Twig\Source;
use Twig\Template;
use Twig\TemplateWrapper;
/* signin3.html.twig */
class __TwigTemplate_13f68f972002b997fce4f87301b50b63 extends Template
{
private Source $source;
/**
* @var array<string, Template>
*/
private array $macros = [];
public function __construct(Environment $env)
{
parent::__construct($env);
$this->source = $this->getSourceContext();
$this->parent = false;
$this->blocks = [
];
}
protected function doDisplay(array $context, array $blocks = []): iterable
{
$macros = $this->macros;
// line 1
yield "<!DOCTYPE html>
<html lang=\"fr\">
<head>
<meta charset=\"UTF-8\">
<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">
<link rel=\"stylesheet\" type=\"text/css\" href=\"../public/styles/styleSignin.css\" media=\"screen\">
<title>Wiki Fantasy : Inscription</title>
<link id=\"favicon\" rel=\"icon\" href=\"../images/iconeSombre.ico\"> <!-- Par défaut sombre -->
<link href=\"https://fonts.googleapis.com/css2?family=Lemon&display=swap\" rel=\"stylesheet\">
<script defer src=\"../public/script/theme-toggle.js\"></script>
</head>
<body>
<div class=\"container\">
<div class=\"header\">
<div class=\"nav\">
<a href=\"favorite.html\"><img src=\"../images/coeur.svg\" alt=\"coeur\" width=\"67px\" height=\"67px\" onmousedown=\"return false\"></a>
<img id=\"theme-icon\" src=\"../images/light.svg\" alt=\"toggle theme\" width=\"72px\" height=\"37px\" onmousedown=\"return false\" onclick=\"toggleTheme()\">
<a href=\"quiz.html\"><img src=\"../images/quizz.svg\" alt=\"quizz\" width=\"51px\" height=\"82px\" onmousedown=\"return false\"></a>
</div>
<div class=\"logo\">
<a href=\"accueil.html\"><img src=\"../images/WIKIFANTASY.png\" alt=\"Logo\" width=\"227px\" height=\"106px\" onmousedown=\"return false\"></a>
</div>
<div class=\"user\">
<img src=\"../images/user_dark.png\" alt=\"user\" width=\"70px\" height=\"70px\" onmousedown=\"return false\">
</div>
</div>
</div>
<h1>▶ lo ◀</h1>
<form method=\"post\">
<div class=\"signin\">
<div class=\"DivId\">
<p>Identifiant *</p>
<input type=\"text\" class=\"champ\" id=\"pseudo\" name=\"pseudo\" placeholder=\"Id\" required/>
</div>
<div class=\"DivEmail\">
<p>Email *</p>
<input type=\"email\" class=\"champ\" id=\"email\" name=\"email\" required/>
</div>
<div class=\"mdp\">
<p>Mot de passe *</p>
<input type=\"password\" class=\"champ\" id=\"mdp\" name=\"mdp\" required placeholder=\"";
// line 43
yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(($context["errors"] ?? null), "html", null, true);
yield "\"/>
</div>
<div class=\"confmdp\">
<p>Confirmer mot de passe *</p>
<input type=\"password\" class=\"champ\" id=\"cmdp\" name=\"cmdp\" placeholder=\"";
// line 48
yield $this->env->getRuntime('Twig\Runtime\EscaperRuntime')->escape(($context["errors"] ?? null), "html", null, true);
yield "\" required/>
</div>
<div class=\"imgprof\">
<p>Image *</p>
</div>
<div class=\"confirmer\">
<input type=\"submit\" class=\"btn\" value=\"Inscription\" />
</div>
</div>
</form>
</body>
</html>";
yield from [];
}
/**
* @codeCoverageIgnore
*/
public function getTemplateName(): string
{
return "signin3.html.twig";
}
/**
* @codeCoverageIgnore
*/
public function isTraitable(): bool
{
return false;
}
/**
* @codeCoverageIgnore
*/
public function getDebugInfo(): array
{
return array ( 94 => 48, 86 => 43, 42 => 1,);
}
public function getSourceContext(): Source
{
return new Source("", "signin3.html.twig", "/Users/kiem/Documents/WikiFantasy/WF-Website/vue/templates/signin3.html.twig");
}
}

@ -11,7 +11,7 @@ require_once __DIR__ . '/config/config.php';
require __DIR__ . '/vendor/autoload.php'; require __DIR__ . '/vendor/autoload.php';
$co = new \Gateway\Connection('pgsql:host=localhost;dbname=dbkekentin;', 'kekentin', 'Chocolat-77'); $co = new \Gateway\Connection('pgsql:host=localhost;dbname=dbkekentin;', 'kekentin', 'passwd');
//twig //twig
$loader = new \Twig\Loader\FilesystemLoader('vue/templates'); $loader = new \Twig\Loader\FilesystemLoader('vue/templates');

@ -1,6 +1,12 @@
@import url(./style.css); /* Import de style.css */ @import url(./style.css); /* Import de style.css */
@import url(./styleQuoteLittle.css); @import url(./styleQuoteLittle.css);
h2 {
text-align: center;
font-size: 2em;
margin: 20px 0;
}
/* Conteneur général pour les citations */ /* Conteneur général pour les citations */
.citations-section { .citations-section {
display: flex; display: flex;

@ -98,7 +98,7 @@ body.light-mode .createAccount{
font-family: "Lemon", serif; font-family: "Lemon", serif;
} }
body.light-mode .buttonSudmite{ body.light-mode .buttonSubmit{
background: linear-gradient(180deg, rgba(187,211,249,1) 0%, rgba(199,246,196,1) 100%); background: linear-gradient(180deg, rgba(187,211,249,1) 0%, rgba(199,246,196,1) 100%);
font-family: "Lemon", serif; font-family: "Lemon", serif;
border: none; border: none;
@ -123,7 +123,7 @@ body.light-mode .connexion{
/* ====== DEFAULT ====== */ /* ====== DEFAULT ====== */
.buttonSudmiteDiv{ .buttonSubmitDiv{
text-align: center; text-align: center;
} }

@ -118,3 +118,25 @@ body.light-mode .champ{
background-color: #fff1f1; background-color: #fff1f1;
border: 1px solid #000000; border: 1px solid #000000;
} }
body.dark-mode .connectAccount{
margin-top: 5%;
margin-bottom: 5%;
font-size: 13px;
text-align: center;
padding-top: 1%;
color: white;
border: 1px solid transparent;
font-family: "Lemon", serif;
}
body.light-mode .connectAccount{
margin-top: 5%;
margin-bottom: 5%;
font-size: 13px;
text-align: center;
padding-top: 1%;
color: black;
font-family: "Lemon", serif;
}

@ -7,7 +7,7 @@ Class FrontControler{
private $listAction; private $listAction;
private string $role = 'admin'; //Mettre en admin le temps de créer les comptes private string $role = 'user'; //Mettre en admin le temps de créer les comptes
private Connection $co; private Connection $co;
@ -16,8 +16,8 @@ Class FrontControler{
$this->listAction = ['visitor' => array('accueil','search','quote','login','signin', 'favorite'), $this->listAction = ['visitor' => array('accueil','search','quote','login','signin'),
'user' => array('quiz','commentary','logout'), 'user' => array('quiz','commentary','logout', 'favorite'),
'admin' => array('null')]; 'admin' => array('null')];
$dVueEreur = []; $dVueEreur = [];
@ -42,7 +42,7 @@ Class FrontControler{
$router->map('GET|POST', '/quote/[i:idQuote]', 'VisitorControler','quote'); $router->map('GET|POST', '/quote/[i:idQuote]', 'VisitorControler','quote');
$router->map('GET|POST', '/login', 'VisitorControler','login'); $router->map('GET|POST', '/login', 'VisitorControler','login');
$router->map('GET|POST', '/signin', 'VisitorControler','signin'); $router->map('GET|POST', '/signin', 'VisitorControler','signin');
$router->map('GET|POST', '/favorite', 'VisitorControler','favorite'); $router->map('GET|POST', '/favorite', 'UserControler','favorite');
$router->map('GET', '/quiz/[i:id]?', 'QuizControler','quiz'); $router->map('GET', '/quiz/[i:id]?', 'QuizControler','quiz');
$router->map('GET|POST', '/search', 'VisitorControler','search'); $router->map('GET|POST', '/search', 'VisitorControler','search');

@ -30,7 +30,7 @@ class QuizControler
* @throws RuntimeError * @throws RuntimeError
* @throws LoaderError * @throws LoaderError
*/ */
public function __construct(Connection $co) public function __construct(Connection $co, ?string $action = null)
{ {
$this -> co = $co; $this -> co = $co;
$this -> gw = new QuestionGateway($this -> co); $this -> gw = new QuestionGateway($this -> co);

@ -1,23 +1,29 @@
<?php <?php
namespace Controleur; namespace Controleur;
Class UserControler{ use Gateway\QuoteGateway;
public function quiz(){ class UserControler {
private QuoteGateway $quoteGateway;
public function __construct() {
global $co;
$this->quoteGateway = new QuoteGateway($co);
}
public function quiz() {
global $vues; global $vues;
require_once $vues['quiz']; require_once $vues['quiz'];
} }
public function favorits() { public function favorite(array $args) {
global $vues; global $vues;
$user = $_SESSION['username']; $userId = 1;
$idUser = $this->userGateway->getIdUser($user);
$suggestions = $this->favoritsGateway->getFavorits(0, 'fr'); $favorites = $this->quoteGateway->getFavorites($userId);
require_once $vues['favorits']; require_once $vues['favorite'];
} }
} }

@ -4,23 +4,65 @@ namespace Controleur;
use Model\QuoteModel; use Model\QuoteModel;
use Model\SearchModel; use Model\SearchModel;
use Gateway\Connection; use Gateway\Connection;
use Gateway\QuoteGateway; use Gateway\UserGateway;
use Model\UserModel;
use Twig\Error\LoaderError;
use Twig\Error\RuntimeError;
use Twig\Error\SyntaxError;
use Gateway\AccueilGateway; use Gateway\AccueilGateway;
class VisitorControler { Class VisitorControler {
private QuoteModel $qMod; private QuoteModel $qMod;
private AccueilGateway $accueilGateway; private AccueilGateway $accueilGateway;
private SearchModel $sMod; private SearchModel $sMod;
public function __construct(){ private UserGateway $gw;
private UserModel $mdl;
private array $errors;
/**
* @throws SyntaxError
* @throws RuntimeError
* @throws LoaderError
*/
public function __construct() {
global $co; global $co;
$this->qMod = new QuoteModel(new QuoteGateway($co)); $this->qMod = new QuoteModel(new QuoteGateway($co));
$this->accueilGateway = new AccueilGateway($co); $this->accueilGateway = new AccueilGateway($co);
$this->gw = new UserGateway($co);
$this->mdl = new UserModel($this->gw);
$this -> getAction($action);
} }
public function accueil() { /**
* @throws SyntaxError
* @throws RuntimeError
* @throws LoaderError
*/
public function getAction(string $action): void
{
switch ($action) {
case "login":
$this -> visitorLogIn();
break;
case "signin":
$this -> visitorSignIn();
break;
case "validsignin":
$this -> toSignIn();
break;
case "validlogin":
$this -> toLogIn();
break;
default:
break;
}
}
public function accueil(){
global $vues; global $vues;
// Récupérer la citation du jour via AccueilGateway // Récupérer la citation du jour via AccueilGateway
@ -31,23 +73,119 @@ class VisitorControler {
require_once $vues['accueil']; require_once $vues['accueil'];
} }
public function quote(array $arg) { public function quote(array $arg){
global $vues; global $vues;
$id=$arg['idQuote']; $id=$arg['idQuote'];
$q = $this->qMod->searchId($id); $q = $this->qMod->searchId($id);
require_once $vues['quote']; require_once $vues['quote'];
} }
public function login() { /**
global $vues; * @throws SyntaxError
require_once $vues['login']; * @throws RuntimeError
* @throws LoaderError
*/
public function visitorLogIn(): void
{
global $twig;
echo $twig->render("login.html.twig");
$this -> toLogIn();
} }
public function signin() { public function toLogIn() : void
global $vues; {
require_once $vues['signin']; if ($_POST)
{
$pseudo = $_POST['pseudo'] ?? null;
$mdp = $_POST['mdp'] ?? null;
$user = $this -> mdl -> getUsername($pseudo);
if ($user)
{
if (password_verify($mdp, $user->getPassword()))
{
$_SESSION['user'] = $pseudo;
$_SESSION['role'] = 'user';
header("Location: /");
exit();
}else
{
global $twig;
$this -> errors = ["Identifiant ou mot de passe incorrect"];
echo $twig -> render("login.html.twig", ['error' => $this -> errors[0]]);
exit();
}
}
else
{
global $twig;
$this -> errors = ["Identifiant ou mot de passe incorrect"];
echo $twig -> render("login.html.twig", ['error' => $this -> errors[0]]);
exit();
}
}
}
/**
* @throws SyntaxError
* @throws RuntimeError
* @throws LoaderError
*/
public function visitorSignIn(): void
{
global $twig;
echo $twig->render("signin.html.twig");
}
/**
* @throws RuntimeError
* @throws SyntaxError
* @throws LoaderError
*/
public function toSignIn() : void
{
global $twig;
$this -> errors = [null, null, null];
if ($_POST) {
$pseudo = $_POST['pseudo'] ?? null;
$email = $_POST['email'] ?? null;
$mdp = $_POST['mdp'] ?? null;
$cmdp = $_POST['cmdp'] ?? null;
if ($mdp != $cmdp) {
$this->errors[2] = "Mots de passe incorrects";
//$this->visitorSignIn();
echo $twig->render("signin.html.twig", ['error' => $this->errors]);
exit();
}
$option = ['cost' => 12];
$hmdp = password_hash($mdp, PASSWORD_BCRYPT, $option);
$isUserAlreadyUsed = $this -> mdl -> getUsername($pseudo);
$isEmailAlreadyUsed = $this -> mdl -> getEmail($email);
if ($isUserAlreadyUsed and !$isEmailAlreadyUsed) {
$this->errors[0] = "Pseudo déjà utilisé";
echo $twig->render("signin.html.twig", ['error' => $this->errors]);
exit();
}
else if ($isEmailAlreadyUsed and !$isUserAlreadyUsed) {
$this->errors[1] = "Email déjà utilisé";
echo $twig->render("signin.html.twig", ['error' => $this->errors]);
exit();
}
else echo $this->mdl->insertUser($pseudo, $email, $hmdp);
$_SESSION["pseudo"] = $pseudo;
header("Location: /");
}
} }
public function favorite() { public function favorite() {

@ -1,124 +1,107 @@
<?php <?php
namespace Entity; namespace Entity;
class User{ class UserEntity {
private int $id; private int $id;
private string $username; private string $pseudo;
private string $passwd; private string $password;
private string $hidenPasswd;
private int $img;
private string $email; private string $email;
private string $date;
private bool $isAdmin;
private int $imgPrfl;
/**
* @param int $id
* @param string $username
* @param string $passwd
* @param string $hidenPasswd
* @param int $img
* @param string $email
*/
public function __construct(int $id, string $username, string $passwd, int $img, string $email)
{
$this->id = $id;
$this->username = $username;
$this->passwd = $passwd;
$this->hidenPasswd = hidenPasswd($passwd);
$this->img = $img;
$this->email = $email;
}
/**
* @return string
*/
public function getId(): int public function getId(): int
{ {
return $this->id; return $this->id;
} }
/**
* @param string $id
*/
public function setId(int $id): void public function setId(int $id): void
{ {
$this->id = $id; $this->id = $id;
} }
/** public function getPseudo(): string
* @return string
*/
public function getUsername(): string
{ {
return $this->username; return $this->pseudo;
} }
/** public function setPseudo(string $pseudo): void
* @param string $username
*/
public function setUsername(string $username): void
{ {
$this->username = $username; $this->pseudo = $pseudo;
} }
/** public function getPassword(): string
* @return string
*/
public function getImg(): int
{ {
return $this->img; return $this->password;
} }
/** public function setPassword(string $password): void
* @param string $img
*/
public function setImg(int $img): void
{ {
$this->img = $img; $this->password = $password;
} }
/**
* @return string
*/
public function getEmail(): string public function getEmail(): string
{ {
return $this->email; return $this->email;
} }
/**
* @param string $email
*/
public function setEmail(string $email): void public function setEmail(string $email): void
{ {
$this->email = $email; $this->email = $email;
} }
/** public function getDate(): string
* @return string
*/
public function getPasswd(): string
{ {
return $this->passwd; return $this->date;
} }
/** public function setDate(string $date): void
* @return string {
*/ $this->date = $date;
public function getHidenPasswd(): string }
public function isAdmin(): bool
{
return $this->isAdmin;
}
public function setIsAdmin(bool $isAdmin): void
{ {
return $this->hidenPasswd; $this->isAdmin = $isAdmin;
}
public function getImgPrfl(): int
{
return $this->imgPrfl;
}
public function setImgPrfl(int $imgPrfl): void
{
$this->imgPrfl = $imgPrfl;
} }
/** /**
* @param string $passwd * @param int $id
* @param string $pseudo
* @param string $password
* @param string $email
* @param int $imgPrfl
* @param bool $isAdmin
* @param string $date
*/ */
public function setPasswd(string $passwd): void public function __construct(int $id, string $pseudo, string $password, string $email, int $imgPrfl, bool $isAdmin, string $date)
{ {
$this->passwd = $passwd; $this->id = $id;
$this->hidenPassWd = hidenPassWd($passwd); $this->pseudo = $pseudo;
$this->password = $password;
$this->email = $email;
$this->imgPrfl = $imgPrfl;
$this->isAdmin = $isAdmin;
$this->date = $date;
} }
} }
// ============================================ En attente du Model ============================================ // ============================================ En attente du Model ============================================
/*$dsn = "pgsql:host=londres;dbname=dblebeaulato"; /*$dsn = "pgsql:host=londres;dbname=dblebeaulato";

@ -155,6 +155,27 @@ Class QuoteGateway{
return $result; return $result;
} }
public function getFavorites(string $userId): array {
$query = "SELECT q.id_quote, q.content, c.caracter, i.imgPath, s.title, s.dateS, q.likes, q.langue
FROM Favorite f
JOIN Quote q ON f.quote = q.id_quote
JOIN Caracter c ON c.id_caracter = q.id_caracter
JOIN Source s ON s.id_source = q.id_source
JOIN Image i ON c.id_img = i.id_img
WHERE f.users = :userId";
try {
$this->con->executeQuery($query, [
':userId' => [$userId, PDO::PARAM_STR]
]);
return $this->con->getResults();
} catch (PDOException $e) {
echo "Erreur dans getFavorites: " . $e->getMessage();
return [];
}
}
} }
?> ?>

@ -11,21 +11,5 @@ class AccueilGateway {
$this->con = $con; $this->con = $con;
} }
public function getSuggestions(int $numpage, string $language): array {
$username = $_SESSION['username'];
$userId = $this->userGateway->getIdUser($username);
$query = "SELECT q.id_quote, q.content, c.caracter, i.imgPath, s.title, s.dateS, q.likes, q.langue
FROM Quote q
JOIN Favorite f ON f.quote = q.id_quote
JOIN Caracter c ON c.id_caracter = q.id_caracter
JOIN Source s ON s.id_source = q.id_source
JOIN Image i ON c.id_img = i.id_img
WHERE q.isValide = true
AND q.langue = :language
AND f.users = :userId";
return $this->con->getResults();
}
} }

@ -1,177 +1,124 @@
<?php <?php
namespace Gateway; namespace Gateway;
use Connection;
use PDO;
Class UserGateway{ Class UserGateway{
private Connection $con; private \Gateway\Connection $con;
public function __construct(Connection $con){ public function __construct(Connection $con){
$this->con=$con; $this->con=$con;
} }
public function insert(string $username,string $email,string $passwd):string{ public function getNumberOfUsers() : array
{
$query = "SELECT Count(*) FROM Users";
$this -> con -> executeQuery($query);
return $this -> con -> getResults();
}
//crypte passeword public function insertUser(int $id, string $pseudo, string $email, string $password, bool $isAdmin, int $imgPrfl) : bool {
$passwordEncrypted = crypt($passwd); $query = "
// insertion user INSERT INTO Users
$query='INSERT INTO Users VALUES (:username,:email,:passwd,CURRENT_DATE,false);'; VALUES (:id, :pseudo, :email, :password, CURRENT_DATE, :isAdmin, :imgPrfl)
$this->con->executeQuery($query,array(':username' => array($u->username,PDO::PARAM_STR),':email' => array($u->email,PDO::PARAM_STR),':passwd' => array($u->passwordEncrypted,PDO::PARAM_STR))); ";
return $id; return $this -> con -> executeQuery($query, [
":id" => [$id, PDO::PARAM_INT],
":pseudo" => [$pseudo, PDO::PARAM_STR],
":email" => [$email, PDO::PARAM_STR],
":password" => [$password, PDO::PARAM_STR],
":isAdmin" => [$isAdmin, PDO::PARAM_INT],
":imgPrfl" => [$imgPrfl, PDO::PARAM_STR]
]);
} }
public function delete(string $id) : bool{ public function delete(string $id) : bool{
// suppression user // supretion user
$query='DELETE FROM Users WHERE id_user = :id;'; $query='DELETE FROM Users WHERE id_user = :id;';
return $this->con->executeQuery($query,array(':id' => array($id,PDO::PARAM_INT))); return $this->con->executeQuery($query,array(':id' => array($id,PDO::PARAM_STR)));
} }
public function getFavorite(string $id):array{ public function getFavorite(string $id):array{
//obtention favoris d'un user //obtention favoris d'un user
$query='SELECT * FROM Quote WHERE id_quote IN (SELECT id_quote IN Favorite f JOIN User u ON u.id_user = f.user WHERE id_user = :id);'; $query='SELECT * FROM Quote WHERE id_quote IN (SELECT id_quote FROM Favorite f JOIN users u ON u.id_user = f.user_f WHERE u.id_user = :id);';
$this->con->executeQuery($query,array(':id' => array($id,PDO::PARAM_INT))); $this->con->executeQuery($query,array(':id' => array($id,PDO::PARAM_STR)));
$result=$this->con->getResults(); $result=$this->con->getResults();
return $result; return $result;
} }
//obtenir les information d'un user //obtenir les information d'un user
public function findDataUser(int $id):array{ public function findDataUser(int $id):array{
$query = 'SELECT * FROM Users WHERE id_user=:idUser'; $query = 'SELECT * FROM Users WHERE id_user=:idUser';
$con->executeQuery($query, array(':idUser'=>array($id, PDO::PARAM_INT))); $this->con->executeQuery($query, array(':idUser'=>array($id, PDO::PARAM_STR)));
$result = $con->getResults(); $result = $this->con->getResults();
return $result; return $result;
} }
public function createQuote(int $id, string $content, string $langue, string $caracter, string $source):array{ // obtenir les informations d'un user selon son pseudo
public function findUsername(string $username):array{
//recupère id du personnage $query = 'SELECT * FROM Users WHERE username= :username';
$queryCaracter = "SELECT id_caracter FROM Caracter WHERE caracter =:caracter"; $this->con->executeQuery($query, array(':username'=>array($username, PDO::PARAM_STR)));
$con->executeQuery($queryCaracter, array( return $this->con->getResults();
':caracter'=>array($caracter, PDO::PARAM_STR)
));
$resultCaracter = $con->getResult();
if($resultCaracter == NULL){
//ajout creationCaracter
}
//recupère id de la source
$querySource = "SELECT id_source FROM Source WHERE title =:source";
$con->executeQuery($querySource, array(
':source'=>array($source, PDO::PARAM_STR)
));
$resultSource = $con->getResult();
if($resultSource == NULL){
//ajout creationSource
}
$queryInsert = "INSERT INTO Quote (content, langue, id_caracter, id_source, id_user_verif) VALUES (:content, :langue, :caracter, :source, :idverif)";
$con->executeQuery($queryInsert, array(
':content'=>array($content, PDO::PARAM_STR),
':langue'=>array($langue, PDO::PARAM_STR),
':caracter'=>array($resultCaracter, PDO::PARAM_STR),
':source'=>array($resultSource, PDO::PARAM_STR),
':idverif'=>array($id, PDO::PARAM_INT)
));
}
public function createCaracter(string $caracter, string $img):array{
//creation du personnage
$queryCaracter = "INSERT INTO Caracter(caracter, img_path) VALUES (:caracter, :img)";
$con->executeQuery($queryCaracter, array(
':caracter'=>array($caracter, PDO::PARAM_STR),
'img'=>array($img, PDO::PARAM_STR)
));
//récuperation de id caracter
$queryCaracter = "SELECT id_caracter FROM Caracter WHERE caracter =:caracter";
$con->executeQuery($queryCaracter, array(
':caracter'=>array($caracter, PDO::PARAM_STR)
));
$resultCaracter = $con->getResult();
} }
public function findEmail(string $email):array{
$query = 'SELECT * FROM Users WHERE email = :email';
public function createSource(string $title, string $dateS):array{ $this->con->executeQuery($query, array(':email'=>array($email, PDO::PARAM_STR)));
//creation du personnage return $this->con->getResults();
$querySource = "INSERT INTO Source(title, dateS) VALUES (:title, :dateS)";
$con->executeQuery($querySource, array(
':title'=>array($title, PDO::PARAM_STR),
'dateS'=>array($dateS, PDO::PARAM_STR)
));
//recupère id de la source
$querySource = "SELECT id_source FROM Source WHERE title =:source";
$con->executeQuery($querySource, array(
':source'=>array($source, PDO::PARAM_STR)
));
$querySource = $con->getResult();
} }
// ===================== UPDATE FUNCTION ===================== // ===================== UPDATE FUNCTION =====================
public function updateUsername(int $id, string $newUsername):array{ public function updateUsername(int $id, string $newUsername):bool{
//Update le nom du user passé en paramètre //Update le nom du user passé en paramètre
$queryUpdate = 'UPDATE Users SET username=:newUsername WHERE id_user=:idUser'; $queryUpdate = 'UPDATE Users SET username=:newUsername WHERE id_user=:idUser';
$con->executeQuery($queryUpdate, array(':idUser'=>array($id, PDO::PARAM_INT), ':newUsername'=> array($newUsername, PDO::PARAM_STR))); $this->con->executeQuery($queryUpdate, array(':idUser'=>array($id, PDO::PARAM_STR), ':newUsername'=> array($newUsername, PDO::PARAM_STR)));
//Renvoie le nouveau nom du user //Renvoie le nouveau nom du user
$queryReponse = 'SELECT username FROM Users WHERE id_user=:idUser'; $queryReponse = 'SELECT username FROM Users WHERE id_user=:idUser';
$con->executeQuery($queryReponse, array($id=>array($id, PDO::PARAM_INT)));
return $result; return $this->con->executeQuery($queryReponse, array($id=>array($newUsername, PDO::PARAM_STR)));
} }
public function updateEmail(int $id, string $newEmail):array{ public function updateEmail(int $id, string $newEmail):bool{
//Update le email du user passé en paramètre //Update le email du user passé en paramètre
$queryUpdate = 'UPDATE Users SET email=:newEmail WHERE id_user=:idUser'; $queryUpdate = 'UPDATE Users SET email=:newEmail WHERE id_user=:idUser';
$con->executeQuery($queryUpdate, array(':idUser'=>array($id, PDO::PARAM_INT), ':newEmail'=> array($newEmail, PDO::PARAM_STR))); $this->con->executeQuery($queryUpdate, array(':idUser'=>array($id, PDO::PARAM_STR), ':newEmail'=> array($newEmail, PDO::PARAM_STR)));
//Renvoie le nouveau email du user //Renvoie le nouveau email du user
$queryReponse = 'SELECT email FROM Users WHERE id_user=:idUser'; $queryReponse = 'SELECT email FROM Users WHERE id_user=:idUser';
$con->executeQuery($queryReponse, array(':idUser'=>array($id, PDO::PARAM_INT))); return $this->con->executeQuery($queryReponse, array(':idUser'=>array($id, PDO::PARAM_STR)));
$result = $con->getResults();
return $result;
} }
public function updateImg(int $id, int $newImg):array{ public function updateImg(int $id, int $newImg):array{
//Update l'image du user passé en paramètre //Update l'image du user passé en paramètre
$query = 'UPDATE Users SET img=:newImg WHERE id_user=:idUser'; $query = 'UPDATE Users SET img_prfl=:newImg WHERE id_user=:idUser';
$con->executeQuery($query, array(':idUser'=>array($id, PDO::PARAM_INT), ':newImg'=> array($newImg, PDO::PARAM_STR))); $this->con->executeQuery($query, array(':idUser'=>array($id, PDO::PARAM_STR), ':newImg'=> array($newImg, PDO::PARAM_STR)));
//Renvoie la nouvelle image du user //Renvoie la nouvelle image du user
$queryReponse = 'SELECT img FROM Users WHERE id_user=:idUser'; $queryReponse = 'SELECT img_prfl FROM Users WHERE id_user=:idUser';
$con->executeQuery($queryReponse, array(':idUser'=>array($id, PDO::PARAM_INT))); $this->con->executeQuery($queryReponse, array(':idUser'=>array($id, PDO::PARAM_STR)));
$result = $con->getResults(); $result = $this->con->getResults();
return $result; return $result;
} }
public function updatePasswd(int $id, string $newPassWd):array{ public function updatePasswd(int $id, string $newPassWd):array{
//crypte le mot de passe
$passwordEncrypted = crypt($newPassWd);
//Update le passwd du user passé en paramètre //Update le passwd du user passé en paramètre
$query = 'UPDATE Users SET password=:newPassWd WHERE id_user=:idUser'; $query = 'UPDATE Users SET pssword=:newPassWd WHERE id_user=:idUser';
$con->executeQuery($query, array(':idUser'=>array($id, PDO::PARAM_INT), ':newPassWd'=> array($passwordEncrypted, PDO::PARAM_STR))); $this->con->executeQuery($query, array(':idUser'=>array($id, PDO::PARAM_STR), ':newPassWd'=> array($newPassWd, PDO::PARAM_STR)));
}
public function getIdUser(string $username):array{ //Renvoie le nouveau passwd du user
$query = 'SELECT id_user FROM Users WHERE username=:username'; $queryReponse = 'SELECT pssword FROM Users WHERE id_user=:idUser';
$con->executeQuery($query, array(':username'=>array($username, PDO::PARAM_STR))); $this->con->executeQuery($queryReponse, array(':idUser'=>array($id, PDO::PARAM_STR)));
$result = $con->getResults(); $result = $this->con->getResults();
return $result; return $result;
} }
} }
$uG = new UserGateway(new Connection("pgsql:host=londres;dbname=dblebeaulato","lebeaulato",""));
?> ?>

@ -1,6 +1,7 @@
<?php <?php
namespace Model; namespace Model;
use Entity\User; use Entity\User;
use Entity\UserEntity;
use Gateway\UserGateway; use Gateway\UserGateway;
class UserModel class UserModel
@ -11,39 +12,76 @@
$this->gateway = $gate; $this->gateway = $gate;
} }
public function insertUser(string $username,string $email,string $passwd) : User{ public function insertUser(string $username,string $email,string $passwd) : bool{
global $rep,$image; /*global $rep,$image;*/
$id = $this->gateway->insert($username,$email,$passwd); return $this->gateway->insertUser($this->getNumberOfUsers() + 1, $username, $email, $passwd, false, 0);
$u = new User($id,$usename,$passwd,$rep.$image['default'],$email);
} }
public function deletUser(string $id) : bool{ public function getNumberOfUsers() : int
{
return $this->gateway->getNumberOfUsers()[0]['count'] ?? 0;
}
public function deleteUser(string $id) : bool{
return $this->gateway->delete($id); return $this->gateway->delete($id);
} }
// public function getFavoriteUser(string $id) : array{ // public function getFavoriteUser(string $id) : array{
// $res = array(); // $res[0] = array();
// $data = $this->gateway->getFavorite($id); // $data = $this->gateway->getFavorite($id);
// foreach ($data as $favoris) { // foreach ($data as $favoris) {
// $res[] = new Quote(); // $res[0][] = new Quote();
// } // }
// } // }
public function getDataUser(int $id){ public function getDataUser(int $id) : ?UserEntity {
$res = $this->gateway->findDataUser($id); $res = $this->gateway->findDataUser($id);
foreach($res as $sources){ if ($res)
$src[] = new User( return new UserEntity(
$sources['id_user'], $res[0]['id_user'],
$sources['username'], $res[0]['username'],
$sources['pssword'], $res[0]['pssword'],
$sources['img'], $res[0]['email'],
$sources['email'] $res[0]['img_prfl'],
$res[0]['is_admin'],
$res[0]['creation']
); );
return null;
} }
return $src;
public function getUsername(string $username) : ?UserEntity
{
$res = $this->gateway->findUsername($username);
if ($res)
return new UserEntity(
$res[0]['id_user'],
$res[0]['username'],
$res[0]['pssword'],
$res[0]['email'],
$res[0]['img_prfl'],
$res[0]['is_admin'],
$res[0]['creation']
);
return null;
} }
public function getEmail(string $email) : ?UserEntity
{
$res = $this->gateway->findEmail($email);
if ($res)
return new UserEntity(
$res[0]['id_user'],
$res[0]['username'],
$res[0]['pssword'],
$res[0]['email'],
$res[0]['img_prfl'],
$res[0]['is_admin'],
$res[0]['creation']
);
return null;
}
public function setUsername(int $id, string $newUsername){ public function setUsername(int $id, string $newUsername){
$res = $this->gateway->updateUsername($id,$newUsername); $res = $this->gateway->updateUsername($id,$newUsername);

@ -5,6 +5,7 @@ global $twig;
echo $twig->render('head.html.twig', [ echo $twig->render('head.html.twig', [
'title' => "Accueil", 'title' => "Accueil",
'style' => "public/styles/styleAccueil.css", 'style' => "public/styles/styleAccueil.css",
'scripts' => array("public/script/theme-toggle.js")
]); ]);

@ -1,25 +1,28 @@
<?php <?php
global $twig; global $twig;
// Rendu de l'en-tête
echo $twig->render('head.html.twig', [ echo $twig->render('head.html.twig', [
'title' => "Accueil", 'title' => "Favoris",
'style' => "public/styles/styleAccueil.css", 'style' => "public/styles/styleAccueil.css",
'scripts' => array("public/script/theme-toggle.js")
]); ]);
// Rendu du bandeau
echo $twig->render('bandeau.html.twig'); echo $twig->render('bandeau.html.twig');
echo "<h2>Favorits</h2>"; if (!empty($favorites)) {
echo "<div class='suggestions-container'>"; echo "<h2>Vos favoris</h2>";
foreach ($suggestions as $suggestion) { echo "<div class='suggestions-container'>";
echo $twig->render('favorits.html.twig', [ foreach ($favorites as $favorite) {
'quote' => $suggestion['content'], echo $twig->render('suggestion.html.twig', [
'movie' => $suggestion['title'], 'quote' => $favorite['content'],
'character' => $suggestion['caracter'], 'movie' => $favorite['title'],
'year' => $suggestion['dates'], 'character' => $favorite['caracter'],
'imagePath' => $suggestion['imgpath'] 'year' => $favorite['dates'],
'imagePath' => $favorite['imgpath']
]); ]);
}
echo "</div>";
} else {
echo "<p>Vous n'avez pas encore de favorits</p>";
} }
echo "</div>";
?> ?>

@ -0,0 +1,52 @@
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" type="text/css" href="../public/styles/styleLogin.css" media="screen">
<title>Wiki Fantasy : Connexion</title>
<link id="favicon" rel="icon" href="../../images/iconeSombre.ico"> <!-- Par défaut sombre -->
<link href="https://fonts.googleapis.com/css2?family=Lemon&display=swap" rel="stylesheet">
<script defer src="../public/script/theme-toggle.js"></script>
</head>
<body>
<div class="container">
<div class="header">
<div class="nav">
<img src="../images/coeur.svg" alt="coeur" width="67px" height="67px" onmousedown="return false">
<img id="theme-icon" src="../images/light.svg" alt="toggle theme" width="72px" height="37px" onmousedown="return false" onclick="toggleTheme()">
<img src="../images/quizz.svg" alt="quizz" width="51px" height="82px" onmousedown="return false">
</div>
<div class="logo">
<a href="accueil.html"><img src="../images/WIKIFANTASY.png" alt="Logo" width="227px" height="106px" onmousedown="return false"></a>
</div>
<div class="user">
<img src="../images/user_dark.png" alt="user" width="70px" height="70px" onmousedown="return false">
</div>
</div>
</div>
<h1>▶ Connexion ◀</h1>
<form class="login" method="post" action="/validlogin">
<p> <strong>Identifiant *</strong></p>
<input type="text" class="connexion" name="pseudo" id="pseudo" placeholder="Entrez votre pseudo" required />
<p> <strong> Mot de passe *</strong></p>
<input type="password" class="connexion" name="mdp" id="mdp" placeholder="Entrez votre mdp" required />
{% if error is defined and error is not empty %}
<p style="color: red">{{ error }}</p>
{% endif %}
<div class="createAccount">
<p class="createAccount">Vous n'avez de compte?</p>
<a href="/signin" class="createAccount">S'incrire</a>
</div>
<div class="buttonSubmitDiv">
<button class="buttonSudmite">Se Connecter</button>
</div>
</form>
</body>
</html>

@ -0,0 +1,74 @@
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" type="text/css" href="../public/styles/styleSignin.css" media="screen">
<title>Wiki Fantasy : Inscription</title>
<link id="favicon" rel="icon" href="../images/iconeSombre.ico"> <!-- Par défaut sombre -->
<link href="https://fonts.googleapis.com/css2?family=Lemon&display=swap" rel="stylesheet">
<script defer src="../public/script/theme-toggle.js"></script>
</head>
<body>
<div class="container">
<div class="header">
<div class="nav">
<a href="favorite.html"><img src="../images/coeur.svg" alt="coeur" width="67px" height="67px" onmousedown="return false"></a>
<img id="theme-icon" src="../images/light.svg" alt="toggle theme" width="72px" height="37px" onmousedown="return false" onclick="toggleTheme()">
<a href="quiz.html"><img src="../images/quizz.svg" alt="quizz" width="51px" height="82px" onmousedown="return false"></a>
</div>
<div class="logo">
<a href="accueil.html"><img src="../images/WIKIFANTASY.png" alt="Logo" width="227px" height="106px" onmousedown="return false"></a>
</div>
<div class="user">
<img src="../images/user_dark.png" alt="user" width="70px" height="70px" onmousedown="return false">
</div>
</div>
</div>
<h1>▶ S'inscrire ◀</h1>
<form method="post" action="/validsignin">
<div class="signin">
<div class="DivId">
<p>Identifiant *</p>
<input type="text" class="champ" id="pseudo" name="pseudo" placeholder="Entrez votre pseudo" required/>
{% if error[0] is defined and error[0] is not empty %}
<p style="color: red">{{ error[0] }}</p>
{% endif %}
</div>
<div class="DivEmail">
<p>Email *</p>
<input type="email" class="champ" id="email" name="email" placeholder="Entrez votre email" required/>
{% if error[1] is defined and error[1] is not empty %}
<p style="color: red">{{ error[1] }}</p>
{% endif %}
</div>
<div class="mdp">
<p>Mot de passe *</p>
<input type="password" class="champ" id="mdp" name="mdp" required placeholder="Entrez votre mdp"/>
</div>
<div class="confmdp">
<p>Confirmer mot de passe *</p>
<input type="password" class="champ" id="cmdp" name="cmdp" placeholder="Confirmez votre mdp" required/>
{% if error[2] is defined and error[2] is not empty %}
<p style="color: red">{{ error[2] }}</p>
{% endif %}
</div>
<div class="imgprof">
<p>Image *</p>
</div>
<div class="connectAccount">
<p class="createAccount">Vous avez un compte?</p>
<a href="/login" class="connectAccount">Se connecter</a>
</div>
<div class="confirmer">
<input type="submit" class="btn" name="action" value="S'inscrire" />
</div>
</div>
</form>
</body>
</html>

@ -0,0 +1,62 @@
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" type="text/css" href="../public/styles/styleSignin.css" media="screen">
<title>Wiki Fantasy : Inscription</title>
<link id="favicon" rel="icon" href="../images/iconeSombre.ico"> <!-- Par défaut sombre -->
<link href="https://fonts.googleapis.com/css2?family=Lemon&display=swap" rel="stylesheet">
<script defer src="../public/script/theme-toggle.js"></script>
</head>
<body>
<div class="container">
<div class="header">
<div class="nav">
<a href="favorite.html"><img src="../images/coeur.svg" alt="coeur" width="67px" height="67px" onmousedown="return false"></a>
<img id="theme-icon" src="../images/light.svg" alt="toggle theme" width="72px" height="37px" onmousedown="return false" onclick="toggleTheme()">
<a href="quiz.html"><img src="../images/quizz.svg" alt="quizz" width="51px" height="82px" onmousedown="return false"></a>
</div>
<div class="logo">
<a href="accueil.html"><img src="../images/WIKIFANTASY.png" alt="Logo" width="227px" height="106px" onmousedown="return false"></a>
</div>
<div class="user">
<img src="../images/user_dark.png" alt="user" width="70px" height="70px" onmousedown="return false">
</div>
</div>
</div>
<h1>▶ z{{ test }} aeazrazeraz ◀</h1>
<form method="post">
<div class="signin">
<div class="DivId">
<p>Identifiant *</p>
<input type="text" class="champ" id="pseudo" name="pseudo" placeholder="Id" required/>
</div>
<div class="DivEmail">
<p>Email *</p>
<input type="email" class="champ" id="email" name="email" required/>
</div>
<div class="mdp">
<p>Mot de passe *</p>
<input type="password" class="champ" id="mdp" name="mdp" required placeholder="{{ errors }}"/>
</div>
<div class="confmdp">
<p>Confirmer mot de passe *</p>
<input type="password" class="champ" id="cmdp" name="cmdp" placeholder="{{ errors }}" required/>
</div>
<div class="imgprof">
<p>Image *</p>
</div>
<div class="confirmer">
<input type="submit" class="btn" name="action" value="validsignin" />
</div>
</div>
</form>
</body>
</html>
Loading…
Cancel
Save