Updated env + Added SignIn/SignUp

This commit is contained in:
Damien Broqua 2022-02-13 17:59:42 +01:00
parent 2218d2663b
commit 33c87b434c
25 changed files with 625 additions and 41 deletions

44
src/middleware/Auth.js Normal file
View file

@ -0,0 +1,44 @@
import Pages from "./Pages";
import Users from "../models/users";
/**
* Classe permettant la gestion des utilisateurs
*/
class Auth extends Pages {
/**
* Méthode permettant de créer un nouvel utilisateur
* @param {Req} req
*
* @return {Object}
*/
static async register(req) {
try {
const { username, email, password } = req.body;
const user = new Users({
username,
email,
salt: password,
});
const resUser = await user.save();
await new Promise((resolve, reject) => {
req.login(resUser, (errLogin) => {
if (errLogin) {
return reject(errLogin);
}
return resolve(null);
});
});
return resUser;
} catch (err) {
req.flash("error", err.toString());
throw err;
}
}
}
export default Auth;

62
src/middleware/Pages.js Normal file
View file

@ -0,0 +1,62 @@
import config from "../config";
import { getBaseUrl } from "../helpers";
/**
* Classe permettant de gérer les page du back office
*/
class Pages {
/**
* @param {Object} req
* @param {String} viewname
*/
constructor(req, viewname) {
this.req = req;
this.pageContent = {
page: {
title: null,
user: null,
},
viewname: `pages/${viewname}`,
};
this.user = null;
this.pagename = viewname;
if (req.session && req.session.passport && req.session.passport.user) {
this.user = req.session.passport.user;
}
if (!req.query.page) {
req.query.page = 1;
}
if (!req.query.limit) {
req.query.limit = config.pagination;
}
}
/**
* Rendu de la page
* @return {Object}
*/
render() {
this.pageContent.session = this.req.session;
this.pageContent.flashInfo = this.req.flash("info");
this.pageContent.error = this.req.flash("error") || null;
this.pageContent.query = this.req.query;
this.pageContent.params = this.req.params;
this.pageContent.user = this.user;
this.pageContent.config = config;
this.pageContent.getBaseUrl = getBaseUrl();
if (this.req.session.flash && this.req.session.flash.error) {
// eslint-disable-next-line prefer-destructuring
this.pageContent.page.failureFlash =
this.req.session.flash.error[0];
this.req.session.flash = null;
}
return this.pageContent;
}
}
export default Pages;