master
Noan07 2 years ago
parent 96db845ac8
commit 9a31b4be3c

@ -10,7 +10,6 @@ import { uploadPicture } from '../../actions/user.actions';
const ConfigurationDuProfil = ()=>{ const ConfigurationDuProfil = ()=>{
const userData = useSelector((state) => state.user.user); const userData = useSelector((state) => state.user.user);
const [pseudo, setPseudo] = useState(userData.pseudo); const [pseudo, setPseudo] = useState(userData.pseudo);
const[userPicture, setUserPicture] = useState(userData.picture) const[userPicture, setUserPicture] = useState(userData.picture)

@ -6,21 +6,19 @@ const PolitiqueDeConfidentialite =()=>{
return( return(
<div className='PolitiqueDeConfidentialiteText'> <div className='PolitiqueDeConfidentialiteText'>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer nec odio. Praesent libero. Sed cursus ante dapibus diam. Sed nisi. Nulla quis sem at nibh elementum imperdiet. Duis sagittis ipsum. Praesent mauris. Fusce nec tellus sed augue semper porta. Mauris massa. Vestibulum lacinia arcu eget nulla. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Curabitur sodales ligula in libero. Sed dignissim lacinia nunc. </p> <p>La politique de confidentialité de notre réseau social est conçue pour vous informer sur les types d'informations que nous collectons, comment elles sont utilisées et protégées, et les choix que vous pouvez faire en ce qui concerne la collecte, l'utilisation et la divulgation de vos informations.</p>
<p>Curabitur tortor. Pellentesque nibh. Aenean quam. In scelerisque sem at dolor. Maecenas mattis. Sed convallis tristique sem. Proin ut ligula vel nunc egestas porttitor. Morbi lectus risus, iaculis vel, suscipit quis, luctus non, massa. Fusce ac turpis quis ligula lacinia aliquet. Mauris ipsum. Nulla metus metus, ullamcorper vel, tincidunt sed, euismod in, nibh. Quisque volutpat condimentum velit. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. </p> <p>Nous collectons des informations vous concernant lorsque vous utilisez notre réseau social, y compris les informations de compte, les informations de profil, les informations de contenu, les informations de localisation, les informations de connexion et les informations de communication. Nous utilisons ces informations pour fournir et améliorer nos services, personnaliser votre expérience, communiquer avec vous, et pour d'autres fins autorisées par la loi.</p>
<p>Nam nec ante. Sed lacinia, urna non tincidunt mattis, tortor neque adipiscing diam, a cursus ipsum ante quis turpis. Nulla facilisi. Ut fringilla. Suspendisse potenti. Nunc feugiat mi a tellus consequat imperdiet. Vestibulum sapien. Proin quam. Etiam ultrices. Suspendisse in justo eu magna luctus suscipit. Sed lectus. Integer euismod lacus luctus magna. Quisque cursus, metus vitae pharetra auctor, sem massa mattis sem, at interdum magna augue eget diam. </p> <p>Nous ne vendons ni ne partageons vos informations personnelles avec des tiers à des fins commerciales sans votre consentement. Nous pouvons cependant partager des informations avec des partenaires de confiance pour des raisons telles que la fourniture de services, la conformité aux exigences légales, et la protection de nos utilisateurs et de notre réseau social.</p>
<p>Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Morbi lacinia molestie dui. Praesent blandit dolor. Sed non quam. In vel mi sit amet augue congue elementum. Morbi in ipsum sit amet pede facilisis laoreet. Donec lacus nunc, viverra nec, blandit vel, egestas et, augue. Vestibulum tincidunt malesuada tellus. Ut ultrices ultrices enim. Curabitur sit amet mauris. Morbi in dui quis est pulvinar ullamcorper. Nulla facilisi. Integer lacinia sollicitudin massa. Cras metus. </p> <p>Vous pouvez contrôler les informations que vous partagez sur notre réseau social en modifiant les paramètres de votre compte. Vous pouvez également choisir de ne pas recevoir de communications marketing de notre part en suivant les instructions de désinscription incluses dans ces communications.</p>
<p>Sed aliquet risus a tortor. Integer id quam. Morbi mi. Quisque nisl felis, venenatis tristique, dignissim in, ultrices sit amet, augue. Proin sodales libero eget ante. Nulla quam. Aenean laoreet. Vestibulum nisi lectus, commodo ac, facilisis ac, ultricies eu, pede. Ut orci risus, accumsan porttitor, cursus quis, aliquet eget, justo. Sed pretium blandit orci. Ut eu diam at pede suscipit sodales. Aenean lectus elit, fermentum non, convallis id, sagittis at, neque. </p> <p>Nous prenons des mesures pour protéger vos informations contre l'accès non autorisé, l'utilisation, la modification, la divulgation ou la destruction. Ces mesures comprennent des contrôles physiques, électroniques et administratifs pour protéger les informations stockées sur nos systèmes.</p>
<p>Nullam mauris orci, aliquet et, iaculis et, viverra vitae, ligula. Nulla ut felis in purus aliquam imperdiet. Maecenas aliquet mollis lectus. Vivamus consectetuer risus et tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer nec odio. Praesent libero. Sed cursus ante dapibus diam. Sed nisi. Nulla quis sem at nibh elementum imperdiet. Duis sagittis ipsum. </p> <p>Si vous avez des questions ou des préoccupations concernant notre politique de confidentialité, veuillez nous contacter à l'adresse e-mail indiquée sur notre site web. Nous nous réservons le droit de modifier cette politique de temps à autre et vous invite à consulter régulièrement cette page pour rester informé de tout changement.</p>
<p>Praesent mauris. Fusce nec tellus sed augue semper porta. Mauris massa. Vestibulum lacinia arcu eget nulla. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Curabitur sodales ligula in libero. Sed dignissim lacinia nunc. Curabitur tortor. Pellentesque nibh. Aenean quam. In scelerisque sem at dolor. Maecenas mattis. Sed convallis tristique sem. Proin ut ligula vel nunc egestas porttitor. </p> <p>En utilisant notre réseau social, vous acceptez les termes de cette politique de confidentialité.</p>
<p>Morbi lectus risus, iaculis vel, suscipit quis, luctus non, massa. Fusce ac turpis quis ligula lacinia aliquet. Mauris ipsum. Nulla metus metus, ullamcorper vel, tincidunt sed, euismod in, nibh. Quisque volutpat condimentum velit. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Nam nec ante. Sed lacinia, urna non tincidunt mattis, tortor neque adipiscing diam, a cursus ipsum ante quis turpis. Nulla facilisi. Ut fringilla. Suspendisse potenti. </p>
</div> </div>
) )

@ -9,6 +9,7 @@ const Inscription = () => {
const [email, setEmail] = useState(''); const [email, setEmail] = useState('');
const [password, setPassword] = useState(''); const [password, setPassword] = useState('');
const [controlPassword, setControlPassword] = useState(''); const [controlPassword, setControlPassword] = useState('');
const handleRegister = async (e) => { const handleRegister = async (e) => {
e.preventDefault(); e.preventDefault();

@ -1,33 +0,0 @@
#suivreAussi{
font-size: 8px;
text-align: center;
border: 2px solid;
border-radius: 30px;
width: 200px;
}
#listeCompteASuivre{
border-top: 2px solid;
}
.infoPersonne{
display: flex;
}
.name{
font-size: 12px;
}
.arobase{
color:gray;
}
.PhotoProfile{
margin: 10px 15px 0px 20px;
width: 40px;
height:40px;
border-radius: 20px;
border: 2px solid #555;
}

@ -1,36 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Ma page de test</title>
<link rel="stylesheet" href="SuivreAussi.css" />
</head>
<body>
<div id="suivreAussi">
<h1>Suivre aussi</h1>
<div id="listeCompteASuivre">
<div class="infoPersonne">
<img class="PhotoProfile" src="https://i.pinimg.com/originals/5c/a0/cf/5ca0cf624647dced23ec5329ed0cde6f.png"/>
<div class="cadreName">
<h2 class="name">personne 1</h2>
<h3 class="arobase">@personne1</h3>
</div>
</div>
<div class="infoPersonne">
<img class="PhotoProfile" src="https://i.pinimg.com/originals/5c/a0/cf/5ca0cf624647dced23ec5329ed0cde6f.png"/>
<div class="cadreName">
<h2 class="name">personne 1</h2>
<h3 class="arobase">@personne1</h3>
</div>
</div>
<div class="infoPersonne">
<img class="PhotoProfile" src="https://i.pinimg.com/originals/5c/a0/cf/5ca0cf624647dced23ec5329ed0cde6f.png"/>
<div class="cadreName">
<h2 class="name">personne 1</h2>
<h3 class="arobase">@personne1</h3>
</div>
</div>
</div>
</div>
</body>
</html>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 448 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 336 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 226 B

@ -1,165 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<title>Titre du document</title>
<style>
#likeCommentaire{
background-color: white;
position:fixed;
margin-left:33%;
margin-right: 33%;
border: 2px solid #666;
border-radius:10px;
width: 33%;
}
#divButton{
display:flex;
justify-content: space-between;
}
#divButton > div{
width:50%;
}
#buttonLike,#buttonCommentaire {
margin-top:10px;
background-color: white;
border:none;
width:100%;
height:25px;
}
#buttonLike{
border-bottom:solid 5px black;
}
#like{
display: block;
}
#buttonCommentaire{
border-bottom: none;
}
#commentaire{
display: none;
}
/*like et commentaire*/
#like, #commentaire{
font-size: 8px;
text-align: center;
}
#listeCompteASuivre{
border-top: 2px solid;
}
.infoPersonne{
display: flex;
}
.name{
font-size: 12px;
}
.arobase{
color:gray;
}
.PhotoProfile{
margin: 10px 15px 0px 20px;
width: 40px;
height:40px;
border-radius: 20px;
border: 2px solid #555;
}
</style>
</head>
<body>
<div id="likeCommentaire">
<div id="divButton">
<div><button type="button" id="buttonLike" onclick="openLike()">like</button></div>
<div><button type="button" id="buttonCommentaire" onclick="openCommentaire()">commentaire</button></div>
</div>
<div id="like">
<div class="infoPersonne">
<img class="PhotoProfile" src="https://i.pinimg.com/originals/5c/a0/cf/5ca0cf624647dced23ec5329ed0cde6f.png"/>
<div class="cadreName">
<h2 class="name">personne 1</h2>
<h3 class="arobase">@personne1</h3>
</div>
</div>
<div class="infoPersonne">
<img class="PhotoProfile" src="https://i.pinimg.com/originals/5c/a0/cf/5ca0cf624647dced23ec5329ed0cde6f.png"/>
<div class="cadreName">
<h2 class="name">personne 1</h2>
<h3 class="arobase">@personne1</h3>
</div>
</div>
<div class="infoPersonne">
<img class="PhotoProfile" src="https://i.pinimg.com/originals/5c/a0/cf/5ca0cf624647dced23ec5329ed0cde6f.png"/>
<div class="cadreName">
<h2 class="name">personne 1</h2>
<h3 class="arobase">@personne1</h3>
</div>
</div>
</div>
<div id="commentaire">
<div class="infoPersonne">
<img class="PhotoProfile" src="https://i.pinimg.com/originals/5c/a0/cf/5ca0cf624647dced23ec5329ed0cde6f.png"/>
<div class="cadreName">
<h2 class="name">personne 1</h2>
<h3 class="arobase">@personne1</h3>
<h4>texte du commantaire</h4>
</div>
</div>
<div class="infoPersonne">
<img class="PhotoProfile" src="https://i.pinimg.com/originals/5c/a0/cf/5ca0cf624647dced23ec5329ed0cde6f.png"/>
<div class="cadreName">
<h2 class="name">personne 1</h2>
<h3 class="arobase">@personne1</h3>
<h4>texte du commantaire</h4>
</div>
</div>
<div class="infoPersonne">
<img class="PhotoProfile" src="https://i.pinimg.com/originals/5c/a0/cf/5ca0cf624647dced23ec5329ed0cde6f.png"/>
<div class="cadreName">
<h2 class="name">personne 1</h2>
<h3 class="arobase">@personne1</h3>
<h4>texte du commantaire</h4>
</div>
</div>
</div>
</div>
</body>
<script>
function openLike() {
document.getElementById("like").style.display = "block";
document.getElementById("buttonLike").style.borderBottom = "solid 5px black";
document.getElementById("commentaire").style.display = "none";
document.getElementById("buttonCommentaire").style.borderBottom = "none";
}
function openCommentaire() {
document.getElementById("like").style.display = "none";
document.getElementById("buttonLike").style.borderBottom = "none";
document.getElementById("commentaire").style.display = "block";
document.getElementById("buttonCommentaire").style.borderBottom = "solid 5px black";
}
</script>
</html>

@ -1,111 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<title>Titre du document</title>
<style>
* {
box-sizing: border-box;
}
body {
font-family: Roboto, Helvetica, sans-serif;
}
.form-popup {
background-color: white;
display: none;
position:fixed;
margin-left:33%;
margin-right: 33%;
border: 2px solid #666;
border-radius:10px;
width: 33%;
}
/* Largeur complète pour les champs de saisie */
.form-container input[name="lien"],
.form-container textarea[name="description"],
.form-container label{
width: 80%;
margin: 10px 10% 50px 10%;
}
textarea{
resize: none;
height: 100px;
}
input[name="lien"],
textarea[name="description"]{
margin-left: 100px;
border: none;
background: #D9D9D9;
}
.input{
margin-top:20px;
}
#buttonForm{
margin-left:10%;
margin-right:10%;
margin-bottom:10px;
display:flex;
justify-content: space-between;
}
</style>
</head>
<body>
<h2>Forme Popup</h2>
<p>Cliquez sur le bouton "Ouvrir la forme" pour ouvrir la fdbjfndbfhbdbnfhdbfnbdhbfhbdhbfhdbfhdhbfhdbhfforme Popup.</p>
<div class="open-btn">
<button class="open-button" onclick="openForm()"><strong>Ouvrir la forme</strong></button>
</div>
<div>
<div class="form-popup" id="popupFormulaireCreationPoste">
<form action="/action_page.php" class="form-container">
<div class="input">
<label for="lien">Lien:</label>
<input type="text" name="lien" required />
</div>
<div class="input">
<label for="description">Description:</label>
<textarea name="description" row =250></textarea>
</div>
<div id="buttonForm">
<div>
<button type="button" class="btn cancel" onclick="closeForm()">retour</button>
</div>
<div>
<button type="submit" class="btn">Poster</button>
</div>
</div>
</form>
</div>
</div>
<script>
function openForm() {
document.getElementById("popupFormulaireCreationPoste").style.display = "block";
}
function closeForm() {
document.getElementById("popupFormulaireCreationPoste").style.display = "none";
}
</script>
</body>
</html>

@ -1,32 +0,0 @@
#PhotoProfile{
display: block;
margin-left: auto;
margin-right: auto;
width: 150px;
height:150px;
border-radius: 80px;
border: 2px solid #555;
}
#blocAbonnement{
display: flex;
justify-content: center;
}
#blocAbonnement div{
margin-left: 80px;
margin-right: 80px;
}
#blocName{
text-align: center;
}
.nombre{
color:black;
}
.texteNombre{
color:grey;
}

@ -1,28 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Ma page de test</title>
<link rel="stylesheet" href="pagePerso.css" />
</head>
<body>
<div id="image">
<img id="PhotoProfile" src="https://i.pinimg.com/originals/5c/a0/cf/5ca0cf624647dced23ec5329ed0cde6f.png"/>
</div>
<div id="blocName">
<h1>Lena 1er</h1>
<h2 class="subdo">@Lena1er</h2>
<div>
<div id="blocAbonnement">
<div>
<div class="nombre">10k</div>
<div class="texteNombre">Abonnement</div>
</div>
<div>
<div class="nombre">10k</div>
<div class="texteNombre">Abonnée</div>
</div>
</div>
</body>
</html>

@ -1,74 +0,0 @@
body{
background: green;
}
#cadrePoste{
background: white;
border-radius: 5px;
width: 40%;
margin-left: auto;
margin-right: auto;
}
/*haut du poste*/
/*
#cadreInfoPoste{
display: flex;
align-items:center;
}
#PhotoProfile{
margin: 10px 15px 0px 20px;
width: 40px;
height:40px;
border-radius: 20px;
border: 2px solid #555;
}
#NomProfile{
font-family: arial;
font-size: 18px;
}*/
#hautPoste{
display: flex;
align-items:center;
justify-content: space-between;
margin-right: 15px;
}
#cadreInfoPoste{
display: flex;
align-items:center;
}
#PhotoProfile{
margin: 10px 15px 0px 20px;
width: 40px;
height:40px;
border-radius: 20px;
border: 2px solid #555;
}
#NomProfile{
font-family: arial;
font-size: 18px;
}
/*bas poste*/
#basPoste{
display: flex;
align-items:center;
justify-content: space-between;
margin-left: 10px;
margin-right: 10px;
}
#like, #commentaire{
display: flex;
align-items:center;
}

@ -1,43 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Ma page de test</title>
<link rel="stylesheet" href="poste.css" />
</head>
<body>
<!--<div id="cadrePoste">
<div id="cadreInfoPoste">
<img id="PhotoProfile" src="https://i.pinimg.com/originals/5c/a0/cf/5ca0cf624647dced23ec5329ed0cde6f.png"/>
<h6 id="NomProfile">Lena 1er</h6>
</div>
</div>-->
<div id="cadrePoste">
<div id="hautPoste">
<div id="cadreInfoPoste">
<img id="PhotoProfile" src="https://i.pinimg.com/originals/5c/a0/cf/5ca0cf624647dced23ec5329ed0cde6f.png"/>
<h6 id="NomProfile">Lena 1er</h6>
</div>
<div>6 jours</div>
</div>
<div id="contenuePoste">
/*utliser leakpreview*/
</div>
<div id="basPoste">
<div id="like">
<img src="coeurs.png">
<div>10k</div>
</div>
<div id="commentaire"> </>
<img src="commentaire.png">
<div>10k</div>
</div>
</div>
</div>
</body>
</html>

@ -115,6 +115,12 @@ const Navbar = () => {
<span className="navbar-title">Me</span> <span className="navbar-title">Me</span>
</NavLink> </NavLink>
</li> </li>
<li className="navbar-item">
<NavLink to="/SearchBar" className="navbar-link">
<i className="fas fa-search navbar-icon"></i>
<span className="navbar-title">Recherche</span>
</NavLink>
</li>
<li className="navbar-item"> <li className="navbar-item">
<NavLink to="/Configuration" className="navbar-link"> <NavLink to="/Configuration" className="navbar-link">
<i className="fas fa-cog navbar-icon"></i> <i className="fas fa-cog navbar-icon"></i>

@ -6,6 +6,7 @@ import Trends from '../../pages/Trends.js';
import Discover from '../../pages/Discover.js'; import Discover from '../../pages/Discover.js';
import Profil from '../../pages/Profil.js'; import Profil from '../../pages/Profil.js';
import Configuration from '../../pages/Configuration.js'; import Configuration from '../../pages/Configuration.js';
import SearchBar from '../../pages/SearchBar.js';
const index = () => { const index = () => {
return ( return (
@ -15,6 +16,7 @@ const index = () => {
<Route path="/Home" element={<Home/>} /> <Route path="/Home" element={<Home/>} />
<Route path="/Trends" element={<Trends/>} /> <Route path="/Trends" element={<Trends/>} />
<Route path="/Discover" element={<Discover/>} /> <Route path="/Discover" element={<Discover/>} />
<Route path="/SearchBar" element={<SearchBar/>} />
{/* <Route path="*" element={<HomeNavigation/>} /> */} {/* <Route path="*" element={<HomeNavigation/>} /> */}
<Route path="/Profil" element={<Profil />} /> <Route path="/Profil" element={<Profil />} />
<Route path="/Configuration" element={<Configuration/>}/> <Route path="/Configuration" element={<Configuration/>}/>

@ -0,0 +1,83 @@
import React, { useState } from 'react';
import { useSelector } from 'react-redux';
import Navbar from '../components/Navbar';
const SearchBar = () => {
const [searchValue, setSearchValue] = useState("");
const [searchUsers, setSearchUsers] = useState(true);
const [searchPosts, setSearchPosts] = useState(false);
const [searchResults, setSearchResults] = useState([]);
const postsData = useSelector((state) => state.post.post);
const usersData = useSelector((state) => state.users.users);
function handleSearch() {
const input = searchValue.toLowerCase();
console.log("Recherche pour : " + input);
const filteredResultsUsers = usersData.filter(function(item) {
return item.pseudo.toLowerCase().indexOf(input) !== -1;
});
const filteredResultsPosts = postsData.filter(function(item) {
return item.message.toLowerCase().indexOf(input) !== -1;
});
if(searchUsers)
setSearchResults(filteredResultsUsers);
if(searchPosts)
setSearchResults(filteredResultsPosts);
console.log(searchResults);
}
const handleModals = (e) => {
if (e.target.id === "Users") {
setSearchUsers(true);
setSearchPosts(false);
} else {
setSearchPosts(true);
setSearchUsers(false);
}
};
return (
<div>
<Navbar />
<main>
<form>
<input type="text" value={searchValue} onChange={(e) => setSearchValue(e.target.value)} placeholder="Rechercher..." />
<button type="button" onClick={handleSearch}>Rechercher</button>
</form>
<div class="divMenu">
<nav role="navigation" class="navProfil">
<ul class="navItemsProfil">
<li class="navItemProfil">
<a class="navLinkProfil" onClick={handleModals} id="Users" >Utilisateur</a>
</li>
<li class="navItemProfil">
<a class="navLinkProfil" onClick={handleModals} id="Posts" >Postes</a>
</li>
</ul>
</nav>
</div>
{ searchUsers &&
<ul>
{searchResults.map((result) => (
<li key={result.pseudo}>{result.pseudo}</li>
))}
</ul>
}
{ searchPosts &&
<ul>
{searchResults.map((result) => (
<li key={result.message}>{result.message}</li>
))}
</ul>
}
</main>
</div>
);
};
export default SearchBar;

@ -1,7 +1,7 @@
const UserModel = require('../models/user.model'); const UserModel = require('../models/user.model');
const jwt = require('jsonwebtoken'); const jwt = require('jsonwebtoken');
const { signUpErrors, signInErrors } = require('../utils/errors.utils'); const { signUpErrors, signInErrors } = require('../utils/errors.utils');
//const nodemailer = require('nodemailer');
const maxAge = 3 * 24 * 60 * 60 * 1000; const maxAge = 3 * 24 * 60 * 60 * 1000;
//expiresIn temps avant l'expiration du token //expiresIn temps avant l'expiration du token
@ -12,6 +12,63 @@ const createToken = (id) => {
} }
// // Définir les informations de connexion pour le service d'envoi d'e-mails
// const transporter = nodemailer.createTransport({
// service: 'gmail',
// auth: {
// user: 'mixmox07340@gmail.com',
// pass: 'Appwow07'
// }
// });
// module.exports.signUp = async (req, res) => {
// console.log(req.body);
// const {pseudo, email, password} = req.body
// try {
// const user = await UserModel.create({pseudo, email, password});
// // Générer un jeton de vérification
// const verificationToken = jwt.sign({ email }, 'secret-key', { expiresIn: '24h' });
// // Préparer l'e-mail de vérification
// const mailOptions = {
// from: 'your-email@gmail.com',
// to: email,
// subject: 'Vérifiez votre adresse e-mail',
// html: `
// <p>Veuillez cliquer sur le lien ci-dessous pour vérifier votre adresse e-mail :</p>
// <a href="http://your-website.com/verify-email?token=${verificationToken}">Cliquez ici pour vérifier</a>
// `
// };
// // Envoyer l'e-mail de vérification
// await transporter.sendMail(mailOptions);
// // Stocker le jeton de vérification associé à l'utilisateur dans la base de données
// await UserModel.updateOne({ _id: user._id }, { verificationToken });
// res.status(200).json({ user: user._id});
// }
// catch(err) {
// const errors = signUpErrors(err);
// res.status(200).send({ errors })
// }
// }
// module.exports.verifyEmail = async (req, res) => {
// const { email, token } = req.body;
// try {
// // Vérifier le jeton de vérification
// jwt.verify(token, 'secret-key', async (err, decoded) => {
// if (err) {
// return res.status(401).json({ error: 'Jeton de vérification non valide' });
// }
// if (decoded.email){
// }
// })
// }catch(err){
// }
// };
//gestion des erreurs //gestion des erreurs
module.exports.signUp = async (req, res) => { module.exports.signUp = async (req, res) => {
console.log(req.body); console.log(req.body);
@ -22,7 +79,7 @@ module.exports.signUp = async (req, res) => {
try { try {
const user = await UserModel.create({pseudo, email, password}); const user = await UserModel.create({pseudo, email, password});
res.status(201).json({ user: user._id}); res.status(200).json({ user: user._id});
} }
catch(err) { catch(err) {
const errors = signUpErrors(err); const errors = signUpErrors(err);

@ -21,6 +21,7 @@
"jsonwebtoken": "^8.5.1", "jsonwebtoken": "^8.5.1",
"mongoose": "^6.6.6", "mongoose": "^6.6.6",
"multer": "^1.4.5-lts.1", "multer": "^1.4.5-lts.1",
"nodemailer": "^6.9.0",
"nodemon": "^2.0.20", "nodemon": "^2.0.20",
"react-dom": "^18.2.0", "react-dom": "^18.2.0",
"react-redux": "^8.0.5", "react-redux": "^8.0.5",
@ -13520,6 +13521,14 @@
"resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.8.tgz", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.8.tgz",
"integrity": "sha512-dFSmB8fFHEH/s81Xi+Y/15DQY6VHW81nXRj86EMSL3lmuTmK1e+aT4wrFCkTbm+gSwkw4KpX+rT/pMM2c1mF+A==" "integrity": "sha512-dFSmB8fFHEH/s81Xi+Y/15DQY6VHW81nXRj86EMSL3lmuTmK1e+aT4wrFCkTbm+gSwkw4KpX+rT/pMM2c1mF+A=="
}, },
"node_modules/nodemailer": {
"version": "6.9.0",
"resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-6.9.0.tgz",
"integrity": "sha512-jFaCEGTeT3E/m/5R2MHWiyQH3pSARECRUDM+1hokOYc3lQAAG7ASuy+2jIsYVf+RVa9zePopSQwKNVFH8DKUpA==",
"engines": {
"node": ">=6.0.0"
}
},
"node_modules/nodemon": { "node_modules/nodemon": {
"version": "2.0.20", "version": "2.0.20",
"resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.20.tgz", "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.20.tgz",
@ -28646,6 +28655,11 @@
"resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.8.tgz", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.8.tgz",
"integrity": "sha512-dFSmB8fFHEH/s81Xi+Y/15DQY6VHW81nXRj86EMSL3lmuTmK1e+aT4wrFCkTbm+gSwkw4KpX+rT/pMM2c1mF+A==" "integrity": "sha512-dFSmB8fFHEH/s81Xi+Y/15DQY6VHW81nXRj86EMSL3lmuTmK1e+aT4wrFCkTbm+gSwkw4KpX+rT/pMM2c1mF+A=="
}, },
"nodemailer": {
"version": "6.9.0",
"resolved": "https://registry.npmjs.org/nodemailer/-/nodemailer-6.9.0.tgz",
"integrity": "sha512-jFaCEGTeT3E/m/5R2MHWiyQH3pSARECRUDM+1hokOYc3lQAAG7ASuy+2jIsYVf+RVa9zePopSQwKNVFH8DKUpA=="
},
"nodemon": { "nodemon": {
"version": "2.0.20", "version": "2.0.20",
"resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.20.tgz", "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.20.tgz",

@ -22,6 +22,7 @@
"jsonwebtoken": "^8.5.1", "jsonwebtoken": "^8.5.1",
"mongoose": "^6.6.6", "mongoose": "^6.6.6",
"multer": "^1.4.5-lts.1", "multer": "^1.4.5-lts.1",
"nodemailer": "^6.9.0",
"nodemon": "^2.0.20", "nodemon": "^2.0.20",
"react-dom": "^18.2.0", "react-dom": "^18.2.0",
"react-redux": "^8.0.5", "react-redux": "^8.0.5",

@ -9,6 +9,7 @@ const upload = multer();
//controlleur d'authentification //controlleur d'authentification
router.post('/register', authController.signUp); router.post('/register', authController.signUp);
router.post('/login', authController.signIn); router.post('/login', authController.signIn);
//router.post('/send-verification-email', authController.verifEmail);
//retirer le token (cookie) //retirer le token (cookie)
router.get('/logout', authController.logout); router.get('/logout', authController.logout);

Loading…
Cancel
Save