Update 1.6
@ -2,25 +2,33 @@
|
|||||||
pageURL = "https://e59.fr/"
|
pageURL = "https://e59.fr/"
|
||||||
filePath = "/var/www/e59/"
|
filePath = "/var/www/e59/"
|
||||||
|
|
||||||
|
[social]
|
||||||
|
instagram = "https://instagram.com/e59.club"
|
||||||
|
linkedin = "https://linkedin.com/company/e59/"
|
||||||
|
x = "https://twitter.com/e59_club"
|
||||||
|
youtube = "https://www.youtube.com/@e59-club"
|
||||||
|
|
||||||
[sql]
|
[sql]
|
||||||
databaseName = "E59"
|
databaseName = "E59"
|
||||||
databaseUser = "root"
|
databaseUser = "root"
|
||||||
databasePass = "Broadca@Storm_SQL"
|
databasePass = "Broadca@Storm_SQL"
|
||||||
databaseHost = "127.0.0.1"
|
databaseHost = "127.0.0.1"
|
||||||
|
|
||||||
|
[recaptcha]
|
||||||
|
siteKey = "6LeoNrMpAAAAALnwweMo-JUMu7VvJlR6JUQW1fqy"
|
||||||
|
secretKey = "6LeoNrMpAAAAAAqmZpuvcFwuRhglX0rkI2rcdvw9"
|
||||||
|
|
||||||
[main]
|
[main]
|
||||||
pageTitle = "Club Réseaux - E59"
|
pageTitle = "E59"
|
||||||
pageName = "E59"
|
pageName = "E59"
|
||||||
headerTitle = "E59"
|
headerTitle = "E59"
|
||||||
headerSubtitle = "Club Réseaux"
|
headerSubtitle = "Club Réseaux"
|
||||||
footerText = "© Jan BELLON - E59 v1.5"
|
footerText = "© Jan BELLON - E59 v1.6"
|
||||||
|
|
||||||
[darkThemes]
|
[darkThemes]
|
||||||
0 = '.body {--text: #ffffff; --background: #0e0e0e; --panel-background: #000000; --buttons: #000000} textarea, .button, button, .form, .select-input select, .select-input, .text-input, .file-input input {border:1px solid #a0a0a0}'
|
0 = '.body {--text: #ffffff; --background: #0e0e0e; --panel-background: #0e0e0e; --buttons: #C2694C} textarea, .form, .select-input, .text-input, .file-input input {border:1px solid #a0a0a0}'
|
||||||
1 = '.body {--text: hsl(208, 100%, 96%); --background: hsl(215, 21%, 11%); --panel-background: hsl(216, 28%, 7%); --buttons: hsl(216, 28%, 7%)}'
|
1 = '.body {--text: hsl(208, 100%, 96%); --background: hsl(215, 21%, 11%); --panel-background: hsl(216, 28%, 7%); --buttons: hsl(216, 28%, 7%)}'
|
||||||
2 = '.body {--text: hsl(160, 65%, 95%); --background: hsl(160, 65%, 3%); --panel-background: hsl(160, 65%, 3%); --buttons: hsl(160, 65%, 3%)} .text-input, .file-input input, .select-input, .select-input select, textarea, .button, button, .form {border:1px solid var(--text)}'
|
2 = '.body {--text: hsl(160, 65%, 95%); --background: hsl(160, 65%, 3%); --panel-background: hsl(160, 65%, 3%); --buttons: hsl(160, 65%, 3%)} .text-input, .file-input input, .select-input, .select-input select, textarea, .button, button, .form {border:1px solid var(--text)}'
|
||||||
|
|
||||||
[lightThemes]
|
[lightThemes]
|
||||||
0 = '.body {--text: #0e0e0e; --background: #ffffff; --panel-background: #ffffff; --buttons: #fafafa} textarea, .button, button, .form, .select-input select, .select-input, .text-input, .file-input input {border:1px solid #a0a0a0}'
|
0 = '.body {--text: #0e0e0e; --background: #ffffff; --panel-background: #ffffff; --buttons: #fafafa} textarea, .button, button, .form, .select-input select, .select-input, .text-input, .file-input input {border:1px solid #a0a0a0}'
|
||||||
1 = '.body {--text: hsl(208, 100%, 0%); --background: hsl(215, 21%, 100%); --panel-background: hsl(216, 28%, 95%); --buttons: hsl(216, 28%, 95%)}'
|
|
||||||
2 = '.body {--text: hsl(160, 65%, 20%); --background: hsl(160, 30%, 98%); --panel-background: hsl(160, 30%, 98%); --buttons: hsl(160, 30%, 98%)} .text-input, .file-input input, .select-input, .select-input select, textarea, .button, button, .form {border:1px solid var(--text)}'
|
|
13
content/articles/16.md
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
##Visite du Forum InCyber à Lille<br />
|
||||||
|
Ce Mardi 26 mars, l'équipe de la E59 est allée visiter le forum International de Cybersécurité à Lille.<br />
|
||||||
|
Cette journée a été une superbe expérience pour nous tous et nous avons eu l'occasion d'échanger avec différents acteurs de la cyber.<br />
|
||||||
|
##Nouvelle fonctionnalité sur GitHub<br />
|
||||||
|
Lors de ce forum, GitHub a présenté une nouvelle fonctionnalité qui permet d'identifier des failles dans du code. Cette fonctionnalité devrait sortir prochainement<br />
|
||||||
|
##Echange avec la CNIL<br />
|
||||||
|
Nous avons eu l'occasion d'échanger avec un représentant de la CNIL, nous lui avons posé diverses questions concernant la gestion des donnés sur nos différentes infrastructures (sites web, vidéosurveillance). Cela nous a permis d'avoir une vision plus clair de nos responsabilités vis à vis des données personnelles que nous gérons.<br />
|
||||||
|
##Yubico<br />
|
||||||
|
Yubico nous ont présenté leur Yubikey, une solution d'authentification par clé. Nous sommes intéressés par cette solution pour nos systèmes d'authentification sur notre infrastructure.<br />
|
||||||
|
##Les outils de forensique de la Douane<br />
|
||||||
|
La Douane nous a présenté leurs outils de forensique permettant de récupérer le contenu d'un disque dur. Ils ne nous ont pas donné de précisions détaillées quant au fonctionnement de ces systèmes.<br />
|
||||||
|
##Thalès pirate un microprocesseur avec un oscilloscope.<br />
|
||||||
|
Thalès nous a présenté leur système permettant de pirater un microprocesseur faisant tourner de l'IA. Ce système est composé d'un capteur sensible aux variations électromagnétiques tenu par un bras et posé sur une zone précise du microprocesseur. Ce capteur est relié à un oscilloscope qui affiche les variations électromagnétiques sur un écran. En retrouvant des motifs répétitifs de variations, il est possible de tromper le comportement de la puce pour changer le résultat de sortie de la chaine neuronale. Il serait donc possible par exemple de tromper un système de reconnaissance faciale en lui faisant croire que nous sommes une personne différente ou encore forcer une authentification.
|
22
content/articles/17.md
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
##Une infra on premise<br />
|
||||||
|
Notre objectif est d'avoir une infrastructure avec 0 frais d'abonnement, nous souhaitons donc nous séparer de nos VPS dans le but de tout héberger en E59.<br />
|
||||||
|
<br />
|
||||||
|
##Accès internet<br />
|
||||||
|
Notre accès internet actuel passe par Renater. Les nombreux blocages ainsi que les coupures occasionnelles de l'accès internet nous ont poussé à prévoir des solutions pour nous créer un accès internet indépendant de Renater.<br />
|
||||||
|
Emilien a eu l'idée ambitieuse de demander un accès internet direct à l'IUT et une adresse IP publique pour la E59. Il est confiant quant au fait que Madame Moreau ait la possibilité de répondre à notre demande.<br />
|
||||||
|
Jan quant à lui est moins optimiste et il est nécéssaire selon lui de prévoir un plan B au cas ou L'IUT nous refuse la demande.<br />
|
||||||
|
<br />
|
||||||
|
##Cybersécurité 0 trust<br />
|
||||||
|
Emilien suivi par Eliott et Akram, souhaite mettre en place une infrastructure 0 trust avec 3 firewall, un bastion et un reverse proxy. Jan et Lucas quant à eux ne sont pas totalement convaincus de l'idée affirmant que c'est une approche paranoïaque abusive. <br />
|
||||||
|
Il est cependant important de souligner le fait que c'est Emilien, Eliott et Akram les responsables du réseau et qu'elles sont prêtes à donner du temps pour mettre en place l'infrastructure d'Emilien.<br />
|
||||||
|
Jan et Lucas ne se sont donc pas opposés à l'idée et souhaitent bonne chance à Emilien et son équipe pour mettre en place l'infrastructure.<br />
|
||||||
|
<br />
|
||||||
|
##Trop de brassage d'air selon Jan<br />
|
||||||
|
Jan a fait un coup de gueule sur teams dans la soirée, affirmant que ce n'est pas en ajoutant des étages à la tour qu'on fait avancer le projet. <br />
|
||||||
|
Selon lui, tout le monde a déjà une vision du projet final et, pour être efficace, il faut juste passer à l'action et commencer le projet en faisant des planifications court terme des actions.<br />
|
||||||
|
<br />
|
||||||
|
##Pour conclure..<br />
|
||||||
|
L'équipe de la E59 est pleine d'idées et a beaucoup d'ambition.<br />
|
||||||
|
Le 5 avril, aura lieu la première assemblée générale durant laquelle, les personnes impliquées dans le projet de la E59 auront l'occasion de mettre leur point de vue sur la table et échanger à propos de la création de l'Association E59. <br />
|
||||||
|
Ce sera aussi l'occasion de planifier les taches pour créer les statuts et trouver une assurance.<br />
|
||||||
|
Nous nous retrouverons Vendredi, pour faire un point sur l'assemblée générale numéro 1.
|
@ -1,5 +1,4 @@
|
|||||||
# SpyLab, une plateforme de CTF<br />
|
#SpyLab, une plateforme de CTF<br />
|
||||||
<br />
|
|
||||||
La plateforme de CTF SpyLab est displonible sur le gitlab de la E59.<br />
|
La plateforme de CTF SpyLab est displonible sur le gitlab de la E59.<br />
|
||||||
Ce projet a été mené dans le cadre de la SAE Pentest, un projet universitaire dirigé par Monsieur Guillemin.<br />
|
Ce projet a été mené dans le cadre de la SAE Pentest, un projet universitaire dirigé par Monsieur Guillemin.<br />
|
||||||
Nous remercions tous les participants de ce projet pour leur contribution. <br />
|
Nous remercions tous les participants de ce projet pour leur contribution. <br />
|
||||||
|
@ -1,3 +0,0 @@
|
|||||||
#Bienvenue sur le journal de la E59.<br />
|
|
||||||
**Vous y trouverez les dernières actualités du Club.<br />**
|
|
||||||
**Vous pouvez nous contacter en écrivant à [club@e59.fr](mailto:club@e59.fr).**
|
|
@ -19,7 +19,7 @@ $pdo = sqlConnect($sqlDatabaseHost, $sqlDatabaseName, $sqlDatabaseUser, $sqlData
|
|||||||
|
|
||||||
<header>
|
<header>
|
||||||
<div class="panel-content">
|
<div class="panel-content">
|
||||||
<?php fillHeader($rootPageURL, $headerTitle, $headerSubtitle);?>
|
<?php fillHeader($rootPageURL, $headerTitle, $headerSubtitle, $social);?>
|
||||||
</div>
|
</div>
|
||||||
</header>
|
</header>
|
||||||
|
|
||||||
|
@ -94,12 +94,11 @@ if (isset($_FILES['newBanner']) && $_FILES['newBanner']['error'] == 0) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isset($_POST['userDisplayName']) && isset($_POST['userBio'])) {
|
if (isset($_POST['userDisplayName']) || isset($_POST['userBio'])) {
|
||||||
if(preg_match('!\S!u', $_POST['userDisplayName']) && preg_match('!\S!u', $_POST['userBio'])) {
|
|
||||||
$sqlRequest = "UPDATE users SET display_name = :userDisplayName, bio = :userBio, last_update = now() WHERE ID = :userID";
|
$sqlRequest = "UPDATE users SET display_name = :userDisplayName, bio = :userBio, last_update = now() WHERE ID = :userID";
|
||||||
$request = $pdo->prepare($sqlRequest);
|
$request = $pdo->prepare($sqlRequest);
|
||||||
$userDisplayName = htmlspecialchars(substr($_POST['userDisplayName'], 0, 20));
|
$userDisplayName = isset($_POST['userDisplayName']) ? htmlspecialchars(substr($_POST['userDisplayName'], 0, 20)) : "Guest";
|
||||||
$userBio = htmlspecialchars(substr($_POST['userBio'], 0, 200));
|
$userBio = isset($_POST['userBio']) ? htmlspecialchars(substr($_POST['userBio'], 0, 200)) : "";
|
||||||
$request->bindParam(":userDisplayName", $userDisplayName);
|
$request->bindParam(":userDisplayName", $userDisplayName);
|
||||||
$request->bindParam(":userBio", $userBio);
|
$request->bindParam(":userBio", $userBio);
|
||||||
$request->bindParam(":userID", $_SESSION['userID']);
|
$request->bindParam(":userID", $_SESSION['userID']);
|
||||||
@ -107,7 +106,6 @@ if (isset($_POST['userDisplayName']) && isset($_POST['userBio'])) {
|
|||||||
$status = "Informations mises à jour";
|
$status = "Informations mises à jour";
|
||||||
$_SESSION['userDisplayName'] = htmlspecialchars($_POST['userDisplayName']);
|
$_SESSION['userDisplayName'] = htmlspecialchars($_POST['userDisplayName']);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$request = $pdo->prepare("SELECT username, display_name, profile_picture, banner, bio FROM users WHERE ID = :userID");
|
$request = $pdo->prepare("SELECT username, display_name, profile_picture, banner, bio FROM users WHERE ID = :userID");
|
||||||
@ -181,7 +179,7 @@ if($result) {
|
|||||||
|
|
||||||
<header>
|
<header>
|
||||||
<div class="panel-content">
|
<div class="panel-content">
|
||||||
<?php fillHeader($rootPageURL, $headerTitle, $headerSubtitle);?>
|
<?php fillHeader($rootPageURL, $headerTitle, $headerSubtitle, $social);?>
|
||||||
</div>
|
</div>
|
||||||
</header>
|
</header>
|
||||||
|
|
||||||
|
@ -62,7 +62,7 @@ if (isset($_POST['delete-user']) && isset($_POST['delete-user-id'])) {
|
|||||||
|
|
||||||
<header>
|
<header>
|
||||||
<div class="panel-content">
|
<div class="panel-content">
|
||||||
<?php fillHeader($rootPageURL, $headerTitle, $headerSubtitle);?>
|
<?php fillHeader($rootPageURL, $headerTitle, $headerSubtitle, $social);?>
|
||||||
</div>
|
</div>
|
||||||
</header>
|
</header>
|
||||||
|
|
||||||
|
Before Width: | Height: | Size: 466 KiB After Width: | Height: | Size: 123 KiB |
BIN
html/assets/banners/44.png
Normal file
After Width: | Height: | Size: 928 KiB |
BIN
html/assets/miniatures/16.png
Normal file
After Width: | Height: | Size: 221 KiB |
BIN
html/assets/miniatures/17.png
Normal file
After Width: | Height: | Size: 183 KiB |
Before Width: | Height: | Size: 33 KiB After Width: | Height: | Size: 5.6 KiB |
BIN
html/assets/pp/44.png
Normal file
After Width: | Height: | Size: 13 KiB |
BIN
html/assets/pp/46.png
Normal file
After Width: | Height: | Size: 23 KiB |
@ -168,7 +168,7 @@ if (isset($_FILES['miniature']) && $_FILES['miniature']['error'] == 0 && isset($
|
|||||||
|
|
||||||
<header>
|
<header>
|
||||||
<div class="panel-content">
|
<div class="panel-content">
|
||||||
<?php fillHeader($rootPageURL, $headerTitle, $headerSubtitle);?>
|
<?php fillHeader($rootPageURL, $headerTitle, $headerSubtitle, $social);?>
|
||||||
</div>
|
</div>
|
||||||
</header>
|
</header>
|
||||||
|
|
||||||
|
@ -20,7 +20,7 @@ $pdo = sqlConnect($sqlDatabaseHost, $sqlDatabaseName, $sqlDatabaseUser, $sqlData
|
|||||||
|
|
||||||
<header>
|
<header>
|
||||||
<div class="panel-content">
|
<div class="panel-content">
|
||||||
<?php fillHeader($rootPageURL, $headerTitle, $headerSubtitle);?>
|
<?php fillHeader($rootPageURL, $headerTitle, $headerSubtitle, $social);?>
|
||||||
</div>
|
</div>
|
||||||
</header>
|
</header>
|
||||||
|
|
||||||
@ -32,13 +32,17 @@ $pdo = sqlConnect($sqlDatabaseHost, $sqlDatabaseName, $sqlDatabaseUser, $sqlData
|
|||||||
|
|
||||||
<main>
|
<main>
|
||||||
<div class="content">
|
<div class="content">
|
||||||
|
<h1>Bienvenue sur le site de la E59</h1>
|
||||||
<div class="markdown-text">
|
<h2>Qui sommes nous ?</h2>
|
||||||
<?php
|
<div>
|
||||||
$pageContent = markdownContent('../content/pages/index.md', $rootFilePath);
|
Nous sommes un petit groupe de passionés d'informatique.<br>
|
||||||
echo($pageContent);
|
Notre objectif est d'aider les membres de notre club à mener leurs projets que ça soit un site web, développer un jeu ou du pentest.<br>
|
||||||
?>
|
Nous prévoyons de nous émanciper pour augmenter nos moyens matériels et financiers.<br>
|
||||||
|
Si le projet vous intéresse et que vous êtes étudiant à l'IUT de Vélizy, venez nous voir en E59 dans la Halle Bastié<br>
|
||||||
|
Vous pouvez aussi nous écrire à l'adresse <a href="mailto:club@e59.fr">club@e59.fr</a><br>
|
||||||
|
Au plaisir de vous rencontrer.
|
||||||
</div>
|
</div>
|
||||||
|
<h2>Nos dernières actualités</h2>
|
||||||
<div class="articles-list">
|
<div class="articles-list">
|
||||||
<?php
|
<?php
|
||||||
$sqlRequest = "SELECT articles.ID, articles.title, articles.creation_date, articles.miniature, articles.resume, users.username, users.display_name, roles.badge_svg FROM articles INNER JOIN users ON articles.author = users.ID LEFT JOIN roles ON users.role = roles.ID WHERE articles.classification <= :userAccreditation ORDER BY articles.creation_date DESC LIMIT 3";
|
$sqlRequest = "SELECT articles.ID, articles.title, articles.creation_date, articles.miniature, articles.resume, users.username, users.display_name, roles.badge_svg FROM articles INNER JOIN users ON articles.author = users.ID LEFT JOIN roles ON users.role = roles.ID WHERE articles.classification <= :userAccreditation ORDER BY articles.creation_date DESC LIMIT 3";
|
||||||
|
@ -66,7 +66,7 @@ if (isset($_POST['username']) && isset($_POST['password'])) {
|
|||||||
|
|
||||||
<header>
|
<header>
|
||||||
<div class="panel-content">
|
<div class="panel-content">
|
||||||
<?php fillHeader($rootPageURL, $headerTitle, $headerSubtitle);?>
|
<?php fillHeader($rootPageURL, $headerTitle, $headerSubtitle, $social);?>
|
||||||
</div>
|
</div>
|
||||||
</header>
|
</header>
|
||||||
|
|
||||||
@ -87,8 +87,8 @@ if (isset($_POST['username']) && isset($_POST['password'])) {
|
|||||||
textInput("password", "", "password", "Mot de Passe", "");
|
textInput("password", "", "password", "Mot de Passe", "");
|
||||||
?>
|
?>
|
||||||
<button type="submit">Se connecter</button>
|
<button type="submit">Se connecter</button>
|
||||||
<!--<div>ou</div>
|
<div>ou</div>
|
||||||
<a href="register.php" class="button">Créer un compte</a>-->
|
<a href="register.php" class="button">Créer un compte</a>
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
|
@ -1,114 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
require("../../include/variables.php");
|
|
||||||
require("../../include/init.php");
|
|
||||||
|
|
||||||
if (isset($_SESSION['userID'])) {
|
|
||||||
header("Location: index.php");
|
|
||||||
die("Vous êtes déjà connecté");
|
|
||||||
}
|
|
||||||
|
|
||||||
require("../../include/main-functions.php");
|
|
||||||
require("../../include/inputs.php");
|
|
||||||
require("../../include/panels.php");
|
|
||||||
|
|
||||||
$pdo = sqlConnect($sqlDatabaseHost, $sqlDatabaseName, $sqlDatabaseUser, $sqlDatabasePass);
|
|
||||||
|
|
||||||
if (isset($_POST['username']) && isset($_POST['password1']) && isset($_POST['password2'])) {
|
|
||||||
if(empty($_POST['username']) == false && empty($_POST['password1']) === false && empty($_POST['password2']) === false) {
|
|
||||||
if(preg_match('!\S!u', $_POST['username']) && preg_match('!\S!u', $_POST['password1']) && preg_match('!\S!u', $_POST['password2'])) {
|
|
||||||
if($_POST['password1'] == $_POST['password2']) {
|
|
||||||
|
|
||||||
if (empty($_POST['email']) === false && preg_match('!\S!u', $_POST['username']) == false) {
|
|
||||||
$status = "Caractères illégaux";
|
|
||||||
} else {
|
|
||||||
$userEmail = isset($_POST['email']) ? strtolower($_POST['email']) : NULL;
|
|
||||||
$userDisplayName = htmlspecialchars(substr($_POST['username'], 0, 20));
|
|
||||||
$userName = str_replace(" ", "_", strtolower(htmlspecialchars(substr($_POST['username'], 0, 20))));
|
|
||||||
|
|
||||||
$sqlRequest = "SELECT ID FROM users WHERE username = :username";
|
|
||||||
$request = $pdo->prepare($sqlRequest);
|
|
||||||
$request->bindParam(":username", $userName);
|
|
||||||
$request->execute();
|
|
||||||
$result = $request->fetchAll(PDO::FETCH_ASSOC);
|
|
||||||
|
|
||||||
if($result) {
|
|
||||||
$status = "Le nom d'utilisateur existe déjà";
|
|
||||||
} else {
|
|
||||||
|
|
||||||
$request = $pdo->prepare("INSERT INTO users (username, password, email, display_name, role, accreditation) VALUES (:username, :password, :email, :display_name, 1, 1)");
|
|
||||||
$request->bindParam(':username', $userName);
|
|
||||||
$request->bindParam(':password', md5($_POST['password1']));
|
|
||||||
$request->bindParam(':email', $userEmail);
|
|
||||||
$request->bindParam(':display_name', $userDisplayName);
|
|
||||||
|
|
||||||
if ($request->execute()) {
|
|
||||||
header("Location: index.php");
|
|
||||||
exit();
|
|
||||||
} else {
|
|
||||||
$status = "Erreur SQL";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
$status = "Les mots de passe ne correspondent pas";
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
$status = "Caractères illégaux";
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
$status = "Les champs ne doivent pas être vides";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
?>
|
|
||||||
|
|
||||||
<!DOCTYPE html>
|
|
||||||
<html lang="fr">
|
|
||||||
|
|
||||||
<head>
|
|
||||||
<?php fillHead($rootPageURL, "Créer un compte - " . $pageName, $darkTheme, $lightTheme);?>
|
|
||||||
<style>
|
|
||||||
/* CUSTOM STYLE */
|
|
||||||
</style>
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body class="body">
|
|
||||||
|
|
||||||
<header>
|
|
||||||
<div class="panel-content">
|
|
||||||
<?php fillHeader($rootPageURL, $headerTitle, $headerSubtitle);?>
|
|
||||||
</div>
|
|
||||||
</header>
|
|
||||||
|
|
||||||
<nav>
|
|
||||||
<div class="panel-content">
|
|
||||||
<?php fillNav($rootPageURL);?>
|
|
||||||
</div>
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
<main>
|
|
||||||
<div class="content">
|
|
||||||
<form action="#" method="post">
|
|
||||||
<div class="form">
|
|
||||||
<div class="form-title">Créer un compte</div>
|
|
||||||
<div class="status"><?=$status?></div>
|
|
||||||
<?php
|
|
||||||
textInput("text", "", "username", "Login", "");
|
|
||||||
textInput("email", "", "email", "Email (facultatif)", "");
|
|
||||||
textInput("password", "", "password1", "Mot de Passe", "");
|
|
||||||
textInput("password", "", "password2", "Confirmation du Mot de passe", "");
|
|
||||||
?>
|
|
||||||
<button type="submit">Créer un compte</button>
|
|
||||||
<div>ou</div>
|
|
||||||
<a href="index.php" class="button">Se connecter</a>
|
|
||||||
</div>
|
|
||||||
</form>
|
|
||||||
</div>
|
|
||||||
</main>
|
|
||||||
<footer>
|
|
||||||
<div class="panel-content">
|
|
||||||
<?php fillFooter($footerText);?>
|
|
||||||
</div>
|
|
||||||
</footer>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
129
html/login/register.php
Executable file
@ -0,0 +1,129 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
require("../../include/variables.php");
|
||||||
|
require("../../include/init.php");
|
||||||
|
|
||||||
|
if (isset($_SESSION['userID'])) {
|
||||||
|
header("Location: index.php");
|
||||||
|
die("Vous êtes déjà connecté");
|
||||||
|
}
|
||||||
|
|
||||||
|
require("../../include/main-functions.php");
|
||||||
|
require("../../include/inputs.php");
|
||||||
|
require("../../include/panels.php");
|
||||||
|
|
||||||
|
$pdo = sqlConnect($sqlDatabaseHost, $sqlDatabaseName, $sqlDatabaseUser, $sqlDatabasePass);
|
||||||
|
|
||||||
|
if(isset($_POST['username'])) {
|
||||||
|
if(isset($_POST['g-recaptcha-response'])) {
|
||||||
|
$recaptchaResponse = $_POST['g-recaptcha-response'];
|
||||||
|
$recaptchaUrl = 'https://www.google.com/recaptcha/api/siteverify?secret=' . urlencode($recaptchaSecretKey) . '&response=' . urlencode($recaptchaResponse);
|
||||||
|
$recaptcha = json_decode(file_get_contents($recaptchaUrl));
|
||||||
|
if (!$recaptcha->success) {
|
||||||
|
$status = "Veuillez cocher la case reCAPTCHA.";
|
||||||
|
} else {
|
||||||
|
if (isset($_POST['password1']) && isset($_POST['password2'])) {
|
||||||
|
if(empty($_POST['username']) == false && empty($_POST['password1']) === false && empty($_POST['password2']) === false) {
|
||||||
|
if(preg_match('!\S!u', $_POST['username']) && preg_match('!\S!u', $_POST['password1']) && preg_match('!\S!u', $_POST['password2'])) {
|
||||||
|
if($_POST['password1'] == $_POST['password2']) {
|
||||||
|
|
||||||
|
if (empty($_POST['email']) === false && preg_match('!\S!u', $_POST['username']) == false) {
|
||||||
|
$status = "Caractères illégaux";
|
||||||
|
} else {
|
||||||
|
$userEmail = isset($_POST['email']) ? strtolower($_POST['email']) : NULL;
|
||||||
|
$userDisplayName = htmlspecialchars(substr($_POST['username'], 0, 20));
|
||||||
|
$userName = str_replace(" ", "_", strtolower(htmlspecialchars(substr($_POST['username'], 0, 20))));
|
||||||
|
|
||||||
|
$sqlRequest = "SELECT ID FROM users WHERE username = :username";
|
||||||
|
$request = $pdo->prepare($sqlRequest);
|
||||||
|
$request->bindParam(":username", $userName);
|
||||||
|
$request->execute();
|
||||||
|
$result = $request->fetchAll(PDO::FETCH_ASSOC);
|
||||||
|
|
||||||
|
if($result) {
|
||||||
|
$status = "Le nom d'utilisateur existe déjà";
|
||||||
|
} else {
|
||||||
|
|
||||||
|
$request = $pdo->prepare("INSERT INTO users (username, password, email, display_name, role, accreditation) VALUES (:username, :password, :email, :display_name, 1, 1)");
|
||||||
|
$request->bindParam(':username', $userName);
|
||||||
|
$request->bindParam(':password', md5($_POST['password1']));
|
||||||
|
$request->bindParam(':email', $userEmail);
|
||||||
|
$request->bindParam(':display_name', $userDisplayName);
|
||||||
|
|
||||||
|
if ($request->execute()) {
|
||||||
|
header("Location: index.php");
|
||||||
|
exit();
|
||||||
|
} else {
|
||||||
|
$status = "Erreur SQL";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$status = "Les mots de passe ne correspondent pas";
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$status = "Caractères illégaux";
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$status = "Les champs ne doivent pas être vides";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$status = "Erreur, captcha vide";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
?>
|
||||||
|
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="fr">
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<?php fillHead($rootPageURL, "Créer un compte - " . $pageName, $darkTheme, $lightTheme);?>
|
||||||
|
<script src="https://www.google.com/recaptcha/api.js" async defer></script>
|
||||||
|
<style>
|
||||||
|
/* CUSTOM STYLE */
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body class="body">
|
||||||
|
|
||||||
|
<header>
|
||||||
|
<div class="panel-content">
|
||||||
|
<?php fillHeader($rootPageURL, $headerTitle, $headerSubtitle, $social);?>
|
||||||
|
</div>
|
||||||
|
</header>
|
||||||
|
|
||||||
|
<nav>
|
||||||
|
<div class="panel-content">
|
||||||
|
<?php fillNav($rootPageURL);?>
|
||||||
|
</div>
|
||||||
|
</nav>
|
||||||
|
|
||||||
|
<main>
|
||||||
|
<div class="content">
|
||||||
|
<form action="#" method="post">
|
||||||
|
<div class="form">
|
||||||
|
<div class="form-title">Créer un compte</div>
|
||||||
|
<div class="status"><?=$status?></div>
|
||||||
|
<?php
|
||||||
|
textInput("text", "", "username", "Login", "");
|
||||||
|
textInput("email", "", "email", "Email (facultatif)", "");
|
||||||
|
textInput("password", "", "password1", "Mot de Passe", "");
|
||||||
|
textInput("password", "", "password2", "Confirmation du Mot de passe", "");
|
||||||
|
?>
|
||||||
|
<div class="g-recaptcha" data-sitekey="<?=$recaptchaSiteKey?>" data-theme="dark" data-size="normal"></div>
|
||||||
|
<button type="submit">Créer un compte</button>
|
||||||
|
<div>ou</div>
|
||||||
|
<a href="index.php" class="button">Se connecter</a>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</main>
|
||||||
|
<footer>
|
||||||
|
<div class="panel-content">
|
||||||
|
<?php fillFooter($footerText);?>
|
||||||
|
</div>
|
||||||
|
</footer>
|
||||||
|
</body>
|
||||||
|
</html>
|
@ -107,17 +107,27 @@ if (isset($_GET['article']) && filter_var($_GET['article'], FILTER_VALIDATE_INT)
|
|||||||
max-height: 30em;
|
max-height: 30em;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.article .article-content {
|
||||||
|
font-family: cfont, Arial, sans-serif;
|
||||||
|
}
|
||||||
|
|
||||||
|
.article .article-content p {
|
||||||
|
font-family: Calibri, Arial, sans-serif;
|
||||||
|
}
|
||||||
|
|
||||||
.article .article-content img {
|
.article .article-content img {
|
||||||
max-width: 100%;
|
max-width: 100%;
|
||||||
max-height: 30em;
|
max-height: 30em;
|
||||||
}
|
}
|
||||||
|
|
||||||
.article .article-content h1 {
|
.article .article-content h1 {
|
||||||
font-family: Arial, sans-serif;
|
|
||||||
font-weight: bold;
|
|
||||||
font-size: 2em;
|
font-size: 2em;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.article .article-content h2 {
|
||||||
|
font-weight: normal;
|
||||||
|
}
|
||||||
|
|
||||||
.button {
|
.button {
|
||||||
display: block;
|
display: block;
|
||||||
width: min-content;
|
width: min-content;
|
||||||
@ -129,7 +139,7 @@ if (isset($_GET['article']) && filter_var($_GET['article'], FILTER_VALIDATE_INT)
|
|||||||
|
|
||||||
<header>
|
<header>
|
||||||
<div class="panel-content">
|
<div class="panel-content">
|
||||||
<?php fillHeader($rootPageURL, $headerTitle, $headerSubtitle);?>
|
<?php fillHeader($rootPageURL, $headerTitle, $headerSubtitle, $social);?>
|
||||||
</div>
|
</div>
|
||||||
</header>
|
</header>
|
||||||
|
|
||||||
@ -170,7 +180,7 @@ if (isset($_GET['article']) && filter_var($_GET['article'], FILTER_VALIDATE_INT)
|
|||||||
echo ('</div>');
|
echo ('</div>');
|
||||||
echo ('</div>');
|
echo ('</div>');
|
||||||
} else {
|
} else {
|
||||||
echo ('<h1>News</h1>');
|
echo ('<h1>Actualités</h1>');
|
||||||
|
|
||||||
echo ('<form action="" method="get">');
|
echo ('<form action="" method="get">');
|
||||||
$shapePath = '<path d="M10.25 3.75c-3.59 0-6.5 2.91-6.5 6.5s2.91 6.5 6.5 6.5c1.795 0 3.419-.726 4.596-1.904 1.178-1.177 1.904-2.801 1.904-4.596 0-3.59-2.91-6.5-6.5-6.5zm-8.5 6.5c0-4.694 3.806-8.5 8.5-8.5s8.5 3.806 8.5 8.5c0 1.986-.682 3.815-1.824 5.262l4.781 4.781-1.414 1.414-4.781-4.781c-1.447 1.142-3.276 1.824-5.262 1.824-4.694 0-8.5-3.806-8.5-8.5z"></path>';
|
$shapePath = '<path d="M10.25 3.75c-3.59 0-6.5 2.91-6.5 6.5s2.91 6.5 6.5 6.5c1.795 0 3.419-.726 4.596-1.904 1.178-1.177 1.904-2.801 1.904-4.596 0-3.59-2.91-6.5-6.5-6.5zm-8.5 6.5c0-4.694 3.806-8.5 8.5-8.5s8.5 3.806 8.5 8.5c0 1.986-.682 3.815-1.824 5.262l4.781 4.781-1.414 1.414-4.781-4.781c-1.447 1.142-3.276 1.824-5.262 1.824-4.694 0-8.5-3.806-8.5-8.5z"></path>';
|
||||||
|
@ -63,7 +63,7 @@ if (isset($_POST['delete-account']) && $_POST['delete-account'] == "delete-accou
|
|||||||
|
|
||||||
<header>
|
<header>
|
||||||
<div class="panel-content">
|
<div class="panel-content">
|
||||||
<?php fillHeader($rootPageURL, $headerTitle, $headerSubtitle);?>
|
<?php fillHeader($rootPageURL, $headerTitle, $headerSubtitle, $social);?>
|
||||||
</div>
|
</div>
|
||||||
</header>
|
</header>
|
||||||
|
|
||||||
|
@ -65,7 +65,7 @@ if (isset($_POST['username']) && isset($_POST['email'])) {
|
|||||||
|
|
||||||
<header>
|
<header>
|
||||||
<div class="panel-content">
|
<div class="panel-content">
|
||||||
<?php fillHeader($rootPageURL, $headerTitle, $headerSubtitle);?>
|
<?php fillHeader($rootPageURL, $headerTitle, $headerSubtitle, $social);?>
|
||||||
</div>
|
</div>
|
||||||
</header>
|
</header>
|
||||||
|
|
||||||
|
@ -13,8 +13,10 @@ html {
|
|||||||
|
|
||||||
body {
|
body {
|
||||||
font-family: cfont, Arial, sans-serif;
|
font-family: cfont, Arial, sans-serif;
|
||||||
|
font-size: 20px;
|
||||||
color: var(--text);
|
color: var(--text);
|
||||||
margin: 0;
|
margin: 0;
|
||||||
|
line-height: 1.3;
|
||||||
}
|
}
|
||||||
|
|
||||||
a {
|
a {
|
||||||
@ -72,11 +74,11 @@ input:focus, textarea:focus {
|
|||||||
color: var(--text);
|
color: var(--text);
|
||||||
border-radius: 10px;
|
border-radius: 10px;
|
||||||
padding: 0.5em 1em;
|
padding: 0.5em 1em;
|
||||||
font-size: 1.2em;
|
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
border: none;
|
border: none;
|
||||||
border-radius: 1.5em;
|
border-radius: 1.5em;
|
||||||
margin: 0.5em 0;
|
margin: 0.5em 0;
|
||||||
|
font-size: 0.8em;
|
||||||
}
|
}
|
||||||
|
|
||||||
.status {
|
.status {
|
||||||
@ -115,6 +117,40 @@ header {
|
|||||||
font-size: 3em;
|
font-size: 3em;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.social-zone {
|
||||||
|
display: flex;
|
||||||
|
justify-content: right;
|
||||||
|
}
|
||||||
|
|
||||||
|
.social-zone .social-link {
|
||||||
|
margin: 0 0.2em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.social-zone .social-logo {
|
||||||
|
height: 1.2em;
|
||||||
|
border-radius: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.social-zone .instagram-logo {
|
||||||
|
background-image: url("/src/svg/instagram.svg");
|
||||||
|
background-size: contain;
|
||||||
|
}
|
||||||
|
|
||||||
|
.social-zone .linkedin-logo {
|
||||||
|
-webkit-mask: url("/src/svg/linkedin.svg");
|
||||||
|
mask: url("/src/svg/linkedin.svg") no-repeat center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.social-zone .x-logo {
|
||||||
|
-webkit-mask: url("/src/svg/x.svg");
|
||||||
|
mask: url("/src/svg/x.svg") no-repeat center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.social-zone .youtube-logo {
|
||||||
|
-webkit-mask: url("/src/svg/youtube.svg");
|
||||||
|
mask: url("/src/svg/youtube.svg") no-repeat center;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* NAV */
|
/* NAV */
|
||||||
|
|
||||||
@ -127,17 +163,19 @@ nav {
|
|||||||
|
|
||||||
.nav-link {
|
.nav-link {
|
||||||
padding: 0.5em;
|
padding: 0.5em;
|
||||||
background-color: var(--buttons);
|
|
||||||
margin-right: 1em;
|
margin-right: 1em;
|
||||||
border-top-right-radius: 10px;
|
border-radius: 10px;
|
||||||
border-top-left-radius: 10px;
|
border-bottom: 1px solid var(--panel-background)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.nav-link:hover {
|
||||||
|
border-bottom: 1px solid var(--text)
|
||||||
|
}
|
||||||
|
|
||||||
/* MAIN */
|
/* MAIN */
|
||||||
|
|
||||||
main {
|
main {
|
||||||
font-family: Helvetica, Arial, sans-serif;
|
font-family: Calibri, Arial, sans-serif;
|
||||||
background: var(--background);
|
background: var(--background);
|
||||||
width: 100%;
|
width: 100%;
|
||||||
margin: 0;
|
margin: 0;
|
||||||
@ -146,8 +184,23 @@ main {
|
|||||||
|
|
||||||
main h1 {
|
main h1 {
|
||||||
font-family: cfont, Arial, sans-serif;
|
font-family: cfont, Arial, sans-serif;
|
||||||
font-size: 3em;
|
font-size: 2em;
|
||||||
font-weight: lighter;
|
font-weight: lighter;
|
||||||
|
margin: 2em 0 0.5em 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
main h2 {
|
||||||
|
font-family: cfont, Arial, sans-serif;
|
||||||
|
font-size: 1.5em;
|
||||||
|
font-weight: lighter;
|
||||||
|
margin: 2em 0 0.5em 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
main h3 {
|
||||||
|
font-family: cfont, Arial, sans-serif;
|
||||||
|
font-size: 1em;
|
||||||
|
font-weight: lighter;
|
||||||
|
margin: 2em 0 0.5em 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* FOOTER */
|
/* FOOTER */
|
||||||
@ -158,6 +211,7 @@ footer {
|
|||||||
padding: 1em;
|
padding: 1em;
|
||||||
background: var(--panel-background);
|
background: var(--panel-background);
|
||||||
display: flex;
|
display: flex;
|
||||||
|
font-size: 0.8em;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ARTICLES LISTING */
|
/* ARTICLES LISTING */
|
||||||
@ -242,7 +296,6 @@ footer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.file-input input[type='file'] {
|
.file-input input[type='file'] {
|
||||||
background-color: var(--buttons);
|
|
||||||
padding: 0.5em;
|
padding: 0.5em;
|
||||||
border-radius: 1.5em;
|
border-radius: 1.5em;
|
||||||
}
|
}
|
||||||
@ -337,7 +390,7 @@ footer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.user-widget .user-display-name {
|
.user-widget .user-display-name {
|
||||||
font-weight: bold;
|
font-family: cfont, Arial, sans-serif;
|
||||||
display: flex;
|
display: flex;
|
||||||
white-space: nowrap;
|
white-space: nowrap;
|
||||||
}
|
}
|
||||||
@ -382,7 +435,7 @@ footer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.user-profile .display-name {
|
.user-profile .display-name {
|
||||||
font-weight: bold;
|
font-family: cfont, Arial, sans-serif;
|
||||||
display: inline;
|
display: inline;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -408,6 +461,13 @@ footer {
|
|||||||
margin: 0 auto;
|
margin: 0 auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.g-recaptcha {
|
||||||
|
margin: 1em auto;
|
||||||
|
width: 300px;
|
||||||
|
height: 75px;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
/* PHONE SCREEN */
|
/* PHONE SCREEN */
|
||||||
|
|
||||||
@media(max-width: 750px) {
|
@media(max-width: 750px) {
|
||||||
|
Before Width: | Height: | Size: 188 KiB |
Before Width: | Height: | Size: 65 KiB After Width: | Height: | Size: 35 KiB |
BIN
html/src/img/tampon-club.png
Normal file
After Width: | Height: | Size: 209 KiB |
6
html/src/svg/instagram.svg
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<svg id="Instagram" data-name="Instagram" class="social-icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1000 1000">
|
||||||
|
<defs>
|
||||||
|
</defs>
|
||||||
|
<path fill="#fff" class="cls-1" d="M292.92,3.46c-53.2,2.51-89.54,11.03-121.29,23.47-32.87,12.81-60.73,29.99-88.45,57.82-27.75,27.85-44.79,55.76-57.51,88.66-12.31,31.83-20.66,68.19-23,121.42C.33,348.17-.2,365.18.06,500.96c.26,135.76.86,152.8,3.4,206.15,2.54,53.19,11.03,89.51,23.47,121.28,12.83,32.87,29.99,60.72,57.83,88.45,27.83,27.73,55.76,44.76,88.68,57.49,31.8,12.3,68.17,20.67,121.39,23,53.33,2.35,70.36,2.87,206.1,2.61,135.8-.26,152.83-.86,206.16-3.39,53.2-2.54,89.5-11.06,121.29-23.47,32.87-12.86,60.73-29.99,88.45-57.83,27.72-27.83,44.76-55.76,57.48-88.68,12.31-31.8,20.69-68.17,23-121.36,2.33-53.36,2.88-70.41,2.62-206.16-.26-135.77-.87-152.78-3.4-206.1-2.53-53.23-11.05-89.54-23.47-121.32-12.85-32.87-29.99-60.7-57.82-88.45-27.83-27.72-55.76-44.79-88.68-57.48-31.82-12.31-68.17-20.7-121.39-23C651.85.32,634.83-.2,499.04.06c-135.76.26-152.78.84-206.11,3.4M298.76,907.34c-48.75-2.12-75.22-10.22-92.86-17.01-23.36-9.04-40.03-19.88-57.58-37.29-17.51-17.48-28.38-34.1-37.5-57.41-6.85-17.64-15.1-44.08-17.38-92.83-2.48-52.7-3.05-68.51-3.29-202.02-.26-133.47.23-149.29,2.53-202.03,2.09-48.71,10.24-75.22,17.01-92.84,9.04-23.39,19.84-40.03,37.29-57.58,17.48-17.54,34.1-28.38,57.43-37.5,17.63-6.89,44.06-15.07,92.79-17.38,52.73-2.5,68.53-3.03,202-3.29,133.5-.26,149.32.21,202.06,2.53,48.71,2.12,75.22,10.19,92.83,17.01,23.38,9.04,40.05,19.81,57.58,37.29,17.53,17.48,28.4,34.07,37.52,57.45,6.88,17.58,15.07,44.05,17.37,92.76,2.51,52.73,3.08,68.54,3.32,202.02.26,133.51-.23,149.32-2.54,202.03-2.12,48.75-10.21,75.23-17.01,92.89-9.04,23.34-19.85,40.01-37.31,57.56-17.46,17.48-34.08,28.38-57.43,37.5-17.59,6.87-44.06,15.07-92.76,17.38-52.73,2.48-68.53,3.05-202.05,3.29-133.47.26-149.27-.24-202.01-2.53M706.36,232.73c.06,33.11,26.99,59.92,60.1,59.86,33.13-.06,59.94-26.97,59.89-60.09-.07-33.11-26.99-59.94-60.12-59.88-33.13.06-59.94,26.99-59.88,60.1M243.27,500.49c.27,141.8,115.44,256.5,257.21,256.22,141.78-.28,256.54-115.41,256.27-257.21-.28-141.75-115.46-256.51-257.26-256.24-141.77.28-256.5,115.46-256.22,257.23M333.33,500.31c-.16-92.03,74.33-166.8,166.34-166.96,92.03-.18,166.81,74.28,166.99,166.33.18,92.05-74.31,166.8-166.36,166.98-92.02.18-166.8-74.29-166.97-166.34"/>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 2.3 KiB |
14
html/src/svg/linkedin.svg
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<svg id="linkedin" data-name="Linkedin" class="social-logo" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1000 1000">
|
||||||
|
<defs>
|
||||||
|
</defs>
|
||||||
|
<g>
|
||||||
|
<path fill="#fff" class="cls-1" d="M541.19,362.58l-33.64-19.5c-4.76-2.76-10.33-2.76-15.09,0l-33.64,19.5c-5.82,3.37-9.51,10.34-9.51,17.96v38.08c0,.79.38,1.51.98,1.86l9.76,5.66h0s38.08,22.08,38.08,22.08c1.18.68,2.56.68,3.73,0l33.93-19.67c1.91-1.11,4.16.53,4.16,3.04h0c0,1.29-.62,2.47-1.61,3.04l-35.63,20.66c-1.71.99-3.71.99-5.42,0l-46.48-26.94c-.69-.4-1.51.19-1.51,1.1h0c0,6.42,3.1,12.28,8,15.12l35.15,20.38c4.76,2.76,10.33,2.76,15.09,0l33.64-19.5c5.82-3.37,9.51-10.34,9.51-17.96v-46.92c0-7.63-3.69-14.59-9.51-17.96ZM539.95,409.21c0,2.74-1.32,5.24-3.42,6.45l-33.83,19.61c-1.71.99-3.71.99-5.42,0l-33.83-19.61c-2.09-1.21-3.42-3.71-3.42-6.45v-30.42c0-2.74,1.32-5.24,3.42-6.45l33.83-19.61c1.71-.99,3.71-.99,5.42,0l33.83,19.61c2.09,1.21,3.42,3.71,3.42,6.45v30.42Z"/>
|
||||||
|
<path fill="#fff" class="cls-1" d="M529.28,378.86l-7.14-4.01c-.59-.33-1.28-.33-1.87,0l-9.08,5.1-9.48,5.33c-1.08.61-2.35.61-3.43,0l-8.14-4.57c-.55-.31-.55-1.2,0-1.5l9.86-5.54,8-4.5c.82-.46.82-1.8,0-2.26l-6.47-3.64c-.96-.54-2.09-.54-3.05,0l-27.76,15.6s-.01,0-.02,0c-.78.44-.76,1.72.02,2.16l26.2,14.72c1.94,1.09,4.22,1.09,6.16,0l16.57-9.31c.71-.4,1.54.19,1.54,1.09v12.92c0,1.2-.6,2.3-1.54,2.83l-18.67,10.49c-.62.35-1.34.35-1.96,0l-18.72-10.52c-.91-.51-1.49-1.57-1.49-2.73v-3.54c0-.49-.25-.94-.63-1.16l-7.74-4.35c-.75-.42-1.64.2-1.64,1.16v12.97c0,1.49.75,2.86,1.92,3.52l27.75,15.59c.96.54,2.09.54,3.05,0l27.75-15.59c1.18-.66,1.92-2.03,1.92-3.52v-23.23c0-1.49-.75-2.86-1.92-3.52Z"/>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<path fill="#fff" class="cls-1" d="M339.72,269.41c0,41.94-34,75.93-75.93,75.93s-75.93-34-75.93-75.93,34-75.93,75.93-75.93,75.93,34,75.93,75.93ZM331.69,794.24h-127.09v-411.83h127.09v411.83Z"/>
|
||||||
|
<path fill="#fff" class="cls-1" d="M793.09,794.24h-127.06v-229.51c0-63.99-22.86-96-68.57-96-22.05,0-40.2,8.47-54.45,25.41-14.26,16.94-21.38,38.46-21.38,64.54v235.56h-127.46v-413.03h127.46v65.34h1.61c30.38-50.28,74.62-75.43,132.7-75.43,91.42,0,137.14,56.74,137.14,170.22v252.9Z"/>
|
||||||
|
</g>
|
||||||
|
<path fill="#fff" class="cls-1" d="M755,90c41.4,0,80.33,16.12,109.6,45.4,29.28,29.28,45.4,68.2,45.4,109.6v510c0,41.4-16.12,80.33-45.4,109.6-29.28,29.28-68.2,45.4-109.6,45.4H245c-41.4,0-80.33-16.12-109.6-45.4s-45.4-68.2-45.4-109.6V245c0-41.4,16.12-80.33,45.4-109.6,29.28-29.28,68.2-45.4,109.6-45.4h510M755,0H245C109.69,0,0,109.69,0,245v510c0,135.31,109.69,245,245,245h510c135.31,0,245-109.69,245-245V245C1000,109.69,890.31,0,755,0h0Z"/>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 2.5 KiB |
7
html/src/svg/x.svg
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<svg id="x-logo" data-name="X" class="social-logo" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1000 1000">
|
||||||
|
<defs>
|
||||||
|
</defs>
|
||||||
|
<path fill="#fff" class="cls-1" d="M755,90c41.4,0,80.33,16.12,109.6,45.4,29.28,29.28,45.4,68.2,45.4,109.6v510c0,41.4-16.12,80.33-45.4,109.6-29.28,29.28-68.2,45.4-109.6,45.4H245c-41.4,0-80.33-16.12-109.6-45.4s-45.4-68.2-45.4-109.6V245c0-41.4,16.12-80.33,45.4-109.6,29.28-29.28,68.2-45.4,109.6-45.4h510M755,0H245C109.69,0,0,109.69,0,245v510c0,135.31,109.69,245,245,245h510c135.31,0,245-109.69,245-245V245C1000,109.69,890.31,0,755,0h0Z"/>
|
||||||
|
<path fill="#fff" class="cls-1" d="M554.45,447.86l218.84-254.38h-51.86l-190.02,220.88-151.77-220.88h-175.05l229.5,334.01-229.5,266.76h51.86l200.66-233.25,160.28,233.25h175.05l-238.01-346.38h.01ZM483.42,530.42l-23.25-33.26-185.02-264.65h79.66l149.31,213.58,23.25,33.26,194.09,277.62h-79.66l-158.38-226.54h0Z"/>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 925 B |
6
html/src/svg/youtube.svg
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<svg id="yt-logo" data-name="Youtube" class="social-logo" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1428.57 1000">
|
||||||
|
<defs>
|
||||||
|
</defs>
|
||||||
|
<path fill="#fff" class="cls-1" d="M1398.72,156.15c-16.43-61.46-64.84-109.87-126.3-126.3C1161.01,0,714.29,0,714.29,0,714.29,0,267.56,0,156.15,29.85c-61.46,16.43-109.87,64.84-126.3,126.3C0,267.56,0,500,0,500,0,500,0,732.44,29.85,843.85c16.43,61.46,64.84,109.87,126.3,126.3,111.41,29.85,558.13,29.85,558.13,29.85,0,0,446.73,0,558.13-29.85,61.46-16.43,109.87-64.84,126.3-126.3,29.85-111.41,29.85-343.85,29.85-343.85,0,0,0-232.44-29.85-343.85ZM571.43,714.29v-428.57l371.14,214.29-371.14,214.28Z"/>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 681 B |
@ -63,7 +63,7 @@ if(isset($_POST['article-content']) && isset($_POST['classification'])) {
|
|||||||
|
|
||||||
<header>
|
<header>
|
||||||
<div class="panel-content">
|
<div class="panel-content">
|
||||||
<?php fillHeader($rootPageURL, $headerTitle, $headerSubtitle);?>
|
<?php fillHeader($rootPageURL, $headerTitle, $headerSubtitle, $social);?>
|
||||||
</div>
|
</div>
|
||||||
</header>
|
</header>
|
||||||
|
|
||||||
|
@ -71,7 +71,7 @@ if(isset($_GET['u']) && empty($_GET['u']) == false) {
|
|||||||
|
|
||||||
<header>
|
<header>
|
||||||
<div class="panel-content">
|
<div class="panel-content">
|
||||||
<?php fillHeader($rootPageURL, $headerTitle, $headerSubtitle);?>
|
<?php fillHeader($rootPageURL, $headerTitle, $headerSubtitle, $social);?>
|
||||||
</div>
|
</div>
|
||||||
</header>
|
</header>
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@ if (!isset($_SESSION['userAccreditation']) || !isset($_SESSION['userRole'])) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!isset($_COOKIE['theme'])) {
|
if (!isset($_COOKIE['theme'])) {
|
||||||
$theme = random_int(0, 3);
|
$theme = 0;
|
||||||
setcookie('theme', $theme, time()+10*60*60, "/", ".e59.fr");
|
setcookie('theme', $theme, time()+10*60*60, "/", ".e59.fr");
|
||||||
$darkTheme = $darkThemes[$theme];
|
$darkTheme = $darkThemes[$theme];
|
||||||
$lightTheme = $lightThemes[$theme];
|
$lightTheme = $lightThemes[$theme];
|
||||||
|
@ -8,22 +8,14 @@ function fillHead($rootPageURL, $pageTitle, $darkTheme, $lightTheme) {
|
|||||||
echo ('<link rel="icon" href="' . $rootPageURL . 'src/img/favicon.ico">');
|
echo ('<link rel="icon" href="' . $rootPageURL . 'src/img/favicon.ico">');
|
||||||
|
|
||||||
echo ('<style>');
|
echo ('<style>');
|
||||||
|
|
||||||
echo ('@media (prefers-color-scheme: dark) {');
|
|
||||||
echo ($darkTheme);
|
echo ($darkTheme);
|
||||||
echo ('}');
|
|
||||||
|
|
||||||
echo ('@media (prefers-color-scheme: light) {');
|
|
||||||
echo ($lightTheme);
|
|
||||||
echo ('}');
|
|
||||||
|
|
||||||
echo ('</style>');
|
echo ('</style>');
|
||||||
|
|
||||||
echo ('<title>' . $pageTitle . '</title>');
|
echo ('<title>' . $pageTitle . '</title>');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
function fillHeader($rootPageURL, $headerTitle, $headerSubtitle) {
|
function fillHeader($rootPageURL, $headerTitle, $headerSubtitle, $social) {
|
||||||
|
|
||||||
echo ('<div class="logo-container">');
|
echo ('<div class="logo-container">');
|
||||||
|
|
||||||
@ -35,6 +27,14 @@ function fillHeader($rootPageURL, $headerTitle, $headerSubtitle) {
|
|||||||
|
|
||||||
echo ('<div class="content">');
|
echo ('<div class="content">');
|
||||||
|
|
||||||
|
echo ('<div class="social-zone">');
|
||||||
|
foreach($social as $name => $url) {
|
||||||
|
echo ('<a href="' . $url . '" target="_blank" class="social-link">');
|
||||||
|
echo ('<img src="/src/svg/' . $name . '.svg" class="' . $name . '-logo social-logo">');
|
||||||
|
echo ('</a>');
|
||||||
|
}
|
||||||
|
echo ('</div>');
|
||||||
|
|
||||||
echo ('<div class="header-title-container">');
|
echo ('<div class="header-title-container">');
|
||||||
echo ('<div class="header-title">' . $headerTitle . '</div>');
|
echo ('<div class="header-title">' . $headerTitle . '</div>');
|
||||||
echo ('<div class="header-subtitle">' . $headerSubtitle . '</div>');
|
echo ('<div class="header-subtitle">' . $headerSubtitle . '</div>');
|
||||||
@ -45,11 +45,10 @@ function fillHeader($rootPageURL, $headerTitle, $headerSubtitle) {
|
|||||||
|
|
||||||
|
|
||||||
function fillNav($rootPageURL) {
|
function fillNav($rootPageURL) {
|
||||||
|
echo ('<a href="' . $rootPageURL . 'news"><div class="nav-link">Actualités</div></a>');
|
||||||
echo ('<a href="' . $rootPageURL . 'news"><div class="nav-link">News</div></a>');
|
|
||||||
echo ('<a href="' . $rootPageURL . 'about"><div class="nav-link">A propos</div></a>');
|
echo ('<a href="' . $rootPageURL . 'about"><div class="nav-link">A propos</div></a>');
|
||||||
|
|
||||||
if ($_SESSION['userRole'] >= 3) {
|
if ($_SESSION['userRole'] == 50) {
|
||||||
echo ('<a href="' . $rootPageURL . 'admin"><div class="nav-link">Admin</div></a>');
|
echo ('<a href="' . $rootPageURL . 'admin"><div class="nav-link">Admin</div></a>');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -16,6 +16,11 @@
|
|||||||
$headerSubtitle = $globalConfig['main']['headerSubtitle'];
|
$headerSubtitle = $globalConfig['main']['headerSubtitle'];
|
||||||
$footerText = $globalConfig['main']['footerText'];
|
$footerText = $globalConfig['main']['footerText'];
|
||||||
|
|
||||||
|
$social = $globalConfig['social'];
|
||||||
|
|
||||||
|
$recaptchaSiteKey = $globalConfig['recaptcha']['siteKey'];
|
||||||
|
$recaptchaSecretKey = $globalConfig['recaptcha']['secretKey'];
|
||||||
|
|
||||||
$darkThemes = $globalConfig['darkThemes'];
|
$darkThemes = $globalConfig['darkThemes'];
|
||||||
$lightThemes = $globalConfig['lightThemes'];
|
$lightThemes = $globalConfig['lightThemes'];
|
||||||
?>
|
?>
|