Skip to content

Commit

Permalink
Merge pull request #65 from WildCodeSchool/remove-extra-files
Browse files Browse the repository at this point in the history
Remove extra files
  • Loading branch information
mahdimcheik authored Mar 24, 2024
2 parents 3a5bbf8 + 993aa9b commit 9b9a144
Show file tree
Hide file tree
Showing 32 changed files with 674 additions and 384 deletions.
6 changes: 3 additions & 3 deletions backend/database/client.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,9 @@ const mysql = require("mysql2/promise");
const client = mysql.createPool({
host: DB_HOST,
port: DB_PORT,
user: DB_USER,
password: DB_PASSWORD,
database: DB_NAME,
user: DB_USER ?? "mahdi",
password: DB_PASSWORD ?? "ThisIsNotMe1",
database: DB_NAME ?? "projet",
});

// Try to get a connection to the database
Expand Down
2 changes: 1 addition & 1 deletion backend/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
"db:seed": "node seed.js",
"build": "node migrate.js",
"start": "node index.js",
"test": "jest"
"test": "jest --coverage"
},
"dependencies": {
"axios": "^1.6.7",
Expand Down
50 changes: 37 additions & 13 deletions backend/src/controllers/userControllers.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
const jwt = require("jsonwebtoken");
const jwtDecode = require("jwt-decode");
const userManager = require("../models/userManager");
const activationManager = require("../models/activationManager");

async function getProfile(req, res) {
try {
Expand Down Expand Up @@ -38,19 +39,29 @@ const browseByEmail = async (req, res) => {
}
};

function validatePassword(password) {
const regex =
/^(?=.*[a-z])(?=.*[A-Z])(?=.*\d)(?=.*[@$!%*?&])[A-Za-z\d@$!%*?&]{8,}$/;
return regex.test(password);
}

async function add(req, res) {
try {
const user = req.body;
if (!validatePassword(user.password)) {
return res
.status(401)
.json({ message: "password non-conforme", insertId: 0 });
}
const { message, insertId } = await userManager.create(user);

if (+insertId !== 0) {
res.status(201).json({ message, insertId });
return;
return res.status(201).json({ message, insertId });
}
res.status(500).json({ message, insertId });
return res.status(500).json({ message, insertId });
} catch (err) {
console.error("catch triggered ", err.message);
res.status(409).json({ message: "Email existant!!!", insertId: 0 });
// console.error("catch triggered ", err.message);
return res.status(409).json({ message: "Email existant!!!", insertId: 0 });
}
}
async function check(req, res) {
Expand Down Expand Up @@ -89,10 +100,10 @@ async function check(req, res) {
}
async function destroy(req, res) {
try {
const { email, password } = req.body;
const result = await userManager.delete(email, password);
const { email } = req.body;
const result = await userManager.delete(email);
if (+result !== 0) {
res.status(200).json({ message: "Utilisateur supprimé" });
res.status(202).json({ message: "Utilisateur supprimé" });
} else {
res
.status(404)
Expand Down Expand Up @@ -174,13 +185,13 @@ async function updatePassword(req, res) {
.status(200)
.json({ message: "Mot de passe actualisé!!!", result: true });
} else {
res.status(200).json({ message: "Erreur coté serveur", result: false });
res.status(400).json({ message: "Erreur coté serveur", result: false });
}
} else {
res.status(200).json({ message: "Mauvais code", result: false });
res.status(400).json({ message: "Mauvais code", result: false });
}
} catch (err) {
res.status(409).json({ message: err.message, result: false });
res.status(400).json({ message: err.message, result: false });
}
}
async function updateName(req, res) {
Expand All @@ -207,7 +218,6 @@ async function updateName(req, res) {

async function updateDescription(req, res) {
try {
// console.log("update Description");
const { description, email } = req.body;
const { affectedRows } = await userManager.update({
description,
Expand All @@ -219,7 +229,7 @@ async function updateDescription(req, res) {
.json({ message: "description actualisée!!!", result: true });
} else {
res
.status(404)
.status(400)
.json({ message: "Utilisateur non existant", result: false });
}
} catch (err) {
Expand Down Expand Up @@ -285,7 +295,21 @@ async function resetPassword(req, res) {
}
}

async function recieveMail(req, res) {
try {
const { email, firstname, lastname } = req.userInfo;
const { title, text } = req.body;
activationManager.sendMail(email, firstname, lastname, title, text);
activationManager.autoAnswerMail(email, firstname, title, text);
res.status(200).send("Mail envoyé");
} catch (err) {
console.error(err.message);
res.status(404).json({ message: "Aucun mail envoyé " });
}
}

module.exports = {
recieveMail,
browse,
add,
destroy,
Expand Down
69 changes: 69 additions & 0 deletions backend/src/models/activationManager.js
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,75 @@ class ActivationManager {
}
});
}

static sendMail(sender, firstname, lastname, title, text) {
const transporter = createTransport({
host: process.env.NODE_HOST,
port: process.env.NODE_PORT,
auth: {
user: process.env.NODE_USER,
pass: process.env.NODE_MAILER_KEY,
},
});
const mailOptions = {
from: process.env.NODE_USER,
to: "[email protected]",
subject: "Fiche contact, la Banque de tutos",
text: "",
html: `
<h3> Title : ${title}</h3>
<h3> Sender : ${firstname} ${lastname} (${sender})</h3>
<h3> Message</h3>
<pre>${text}</pre>
`,
};
transporter.sendMail(mailOptions, (error, info) => {
if (error) {
console.error(error);
return false;
}
console.error("Email sent: ", info.response);
return true;
});
}

static autoAnswerMail(sender, firstname, title, text) {
const transporter = createTransport({
host: process.env.NODE_HOST,
port: process.env.NODE_PORT,
auth: {
user: process.env.NODE_USER,
pass: process.env.NODE_MAILER_KEY,
},
});
const lien = `${process.env.FRONTEND_URL}`;
const mailOptions = {
from: process.env.NODE_USER,
to: sender,
subject: "Message reçu, de la part de la Banque de tutos",
text: "",
html: `
<h2>Bonjour ${firstname}, </h2>
<p>La banque de tutos vous remercie pour votre message. Veuillez noter que nous avons bien reçu votre e-mail. </p>
<p>Nos administrateurs s'efforcent de répondre dans les plus brefs délais. Nous vous remercions de votre patience et de votre compréhension.</p>
<p>Cordialement</p>
<a href="${lien}">${lien}</a>
<h3> Message</h3>
<h3> Title : ${title}</h3>
<h3> Sender : ${sender}</h3>
<pre>${text}</pre>
`,
};
transporter.sendMail(mailOptions, (error, info) => {
if (error) {
console.error(error);
} else {
console.error("Email sent: ", info.response);
}
});
}
}

module.exports = ActivationManager;
20 changes: 8 additions & 12 deletions backend/src/models/userManager.js
Original file line number Diff line number Diff line change
Expand Up @@ -19,16 +19,15 @@ class UserManager {
try {
const randomCode = uuid();
const [result] = await database.query(
`insert into user (firstname, lastname, email, password, birthday, isAdmin, imgUrl, activationCode) values (?,?,?,?,?,?,?,?)`,
`insert into user (firstname, lastname, email, password, birthday,activationCode, imgUrl ) values (?,?,?,?,?,?,?)`,
[
user.firstname,
user.lastname,
user.email,
hashedPassword,
user.birthday,
user.isAdmin,
user.imgUrl,
randomCode,
user.imgUrl,
]
);

Expand Down Expand Up @@ -124,20 +123,17 @@ class UserManager {
return res.affectedRows;
}

static async delete(email, password) {
static async delete(email) {
try {
const [user] = await database.query(
"select * from user WHERE email = ?",
[email]
);
if (user[0]) {
const comparison = await this.compare(password, user[0].password);
if (comparison) {
const res = await database.query("delete from user WHERE email = ?", [
email,
]);
return res.affectedRows;
}
const res = await database.query("delete from user WHERE email = ?", [
email,
]);
return res.affectedRows;
}
return 0;
} catch (err) {
Expand Down Expand Up @@ -231,7 +227,7 @@ class UserManager {
`select * from user where email = ?`,
[email]
);
const hashedPassword = await this.Hashing(password);
const hashedPassword = await UserManager.hashing(password);
if (userdb[0]) {
const [res] = await database.query(
"update user set password = ? WHERE email = ?",
Expand Down
10 changes: 7 additions & 3 deletions backend/src/router.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@ const express = require("express");
const multer = require("multer");
const multerMiddle = require("./middlewares/multerMiddle");
const userMiddle = require("./middlewares/userMiddle");
const { verifyToken } = require("./middlewares/userMiddle");

const router = express.Router();

Expand Down Expand Up @@ -66,9 +65,9 @@ router.post("/user", userControllers.check);
// router.put("/user", userControllers.edit);

// Route to delete existed users
router.delete("/user", userMiddle.verifyAdminToken, userControllers.destroy);
router.delete("/user", userMiddle.verifyToken, userControllers.destroy);

router.get("/getprofile", verifyToken, userControllers.getProfile);
router.get("/getprofile", userMiddle.verifyToken, userControllers.getProfile);

// to be deleted
const upload = multer({ dest: "./public/uploads/" });
Expand Down Expand Up @@ -98,6 +97,11 @@ router.post(
userMiddle.verifyToken,
userControllers.updateDescription
);
router.post(
"/recievemail",
userMiddle.verifyToken,
userControllers.recieveMail
);

/* ************************************************************************* */

Expand Down
16 changes: 12 additions & 4 deletions backend/src/routerUpload.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,20 +2,28 @@ const express = require("express");
const multer = require("multer");
const uploadController = require("./controllers/uploadController");
const multerMiddle = require("./middlewares/multerMiddle");
const userMiddle = require("./middlewares/userMiddle");

const routerUpload = express.Router();

const upload = multer({ dest: "./public/uploads/" });
routerUpload.post(
"/video",
// userMiddle.verifyToken,
// multerMiddle.saveFile,
userMiddle.verifyAdminToken,
upload.single("file"),
multerMiddle.renameFile,
uploadController.uploadVideo
);
routerUpload.get("/initialize", uploadController.initiateAuth);
routerUpload.get(
"/initialize",
userMiddle.verifyAdminToken,
uploadController.initiateAuth
);
routerUpload.get("/setuptoken", uploadController.getYoutubeCodeBackUp);
routerUpload.post("/uploadvideo", uploadController.uploadVideo);
routerUpload.post(
"/uploadvideo",
userMiddle.verifyAdminToken,
uploadController.uploadVideo
);

module.exports = routerUpload;
37 changes: 0 additions & 37 deletions backend/tests/items/manager.spec.js

This file was deleted.

Loading

0 comments on commit 9b9a144

Please sign in to comment.