diff --git a/models/user.js b/models/user.js index 21212fc..d84a83c 100644 --- a/models/user.js +++ b/models/user.js @@ -43,13 +43,11 @@ module.exports = (sequelize, DataTypes) => { }, firstName: { type: DataTypes.STRING, - allowNull: false, - unique: "userFullName" + allowNull: false }, lastName: { type: DataTypes.STRING, - allowNull: false, - unique: "userFullName" + allowNull: false }, passwordHash: { type: DataTypes.STRING, diff --git a/public/javascripts/register.js b/public/javascripts/register.js new file mode 100644 index 0000000..42a24b5 --- /dev/null +++ b/public/javascripts/register.js @@ -0,0 +1,21 @@ +//let socket = io.connect(); + +document.getElementById("register").addEventListener("submit", e=>{ + e.preventDefault(); + let expressionReguliere = /^(([^<>()[]\.,;:s@]+(.[^<>()[]\.,;:s@]+)*)|(.+))@(([[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}])|(([a-zA-Z-0-9]+.)+[a-zA-Z]{2,}))$/; + let mail = document.getElementById("mailreg-input").value; + if(expressionReguliere.test(mail)) { + socket.emit("register", { + "email": mail, + "firstName": document.getElementById("firstname-input").value, + "lastName": document.getElementById("lastname-input").value, + "password": document.getElementById("passwordreg-input").value + }); + } +}); + +socket.on("register", data=>{ + if(data){ + window.location.href = "/"; + } +}); diff --git a/sockets/index.js b/sockets/index.js index 6d85ff4..c4b3d28 100644 --- a/sockets/index.js +++ b/sockets/index.js @@ -1,5 +1,6 @@ module.exports = socket => { console.log("New connection !"); socket.on("login", require("./login")(socket)); + socket.on("register", require("./register")(socket)); socket.emit("connected"); } diff --git a/sockets/register.js b/sockets/register.js new file mode 100644 index 0000000..334d790 --- /dev/null +++ b/sockets/register.js @@ -0,0 +1,21 @@ +const modules = require("../models"); + +module.exports = socket => { + return async (data) => { + if (await modules.User.findByPk(data.email) || !data.email.endsWith("univ-lyon1.fr")) { + socket.emit("register", null); + return; + } + + let user = await modules.User.create({ + email: data.email, + firstName: data.firstName, + lastName: data.lastName, + passwordHash: data.password + }); + + socket.request.session.user = user; + socket.request.session.save(); + socket.emit("register", user); + } +} diff --git a/views/login.pug b/views/login.pug index ff32fa1..2822c9c 100644 --- a/views/login.pug +++ b/views/login.pug @@ -19,7 +19,7 @@ block content div(class='col s12 m8 offset-m2 signinup z-depth-5' id="signup") h2 Welcome - form + form#register div(class="input-field col s6") i(class="material-icons prefix") portrait input(type="text" id="firstname-input" class="autocomplete") @@ -52,3 +52,4 @@ block content input(type='submit' value='Send email') script(src="/javascripts/login.js") + script(src="/javascripts/register.js")