quiz init commit
This commit is contained in:
@@ -0,0 +1,113 @@
|
||||
'use strict';
|
||||
|
||||
const ValidationService = require('../../services/ValidationService')
|
||||
const AuthService = require('../../services/AuthService');
|
||||
const JWTService = require('../../services/JwtService');
|
||||
const SessionService = require('../../services/SessionService');
|
||||
const db = require("../../models");
|
||||
const app = require('express').Router();
|
||||
|
||||
const role_id = 2
|
||||
|
||||
app.get('/member/register',
|
||||
SessionService.preventAuthRoutes(role_id, 'member')
|
||||
, async function (req, res, next) {
|
||||
|
||||
|
||||
const AuthViewModel = require("../../view_models/member_auth_view_model")
|
||||
|
||||
const viewModel =new AuthViewModel(db.user, "Register")
|
||||
|
||||
return res.render("member/Register", viewModel)
|
||||
|
||||
});
|
||||
|
||||
app.post('/member/register',
|
||||
|
||||
ValidationService.validateInput({
|
||||
email:"required|email",
|
||||
first_name:"required",
|
||||
last_name:"required",
|
||||
password:"required|minLength:6",
|
||||
confirm_password:"required|minLength:6"
|
||||
},{
|
||||
"email.required":"Email is required",
|
||||
"first_name.required":"First name is required",
|
||||
"last_name.required":"Last name is required",
|
||||
"email.email":"Invalid email",
|
||||
"password.required":"Password is required.",
|
||||
"confirm_password.required":"Password is required.",
|
||||
"password.minLength":"Password should be at least 6 characters long.",
|
||||
"confirm_password.minLength":"Password should be at least 6 characters long."
|
||||
})
|
||||
|
||||
,async function (req, res, next) {
|
||||
const role_id = 2
|
||||
const {email,first_name, last_name, password, confirm_password} = req.body;
|
||||
|
||||
const AuthViewModel = require("../../view_models/member_auth_view_model")
|
||||
|
||||
const viewModel =new AuthViewModel(db.user,"Register")
|
||||
|
||||
|
||||
|
||||
ValidationService.handleValidationErrorForViews(
|
||||
req,
|
||||
res,
|
||||
viewModel,
|
||||
'member/Register',
|
||||
'register_fields',
|
||||
{ email, first_name, last_name },
|
||||
);
|
||||
|
||||
let newUser = null
|
||||
|
||||
try {
|
||||
if(password!==confirm_password){
|
||||
viewModel.error = "Passwords do not match"
|
||||
viewModel.register_fields.email = email
|
||||
viewModel.register_fields.first_name = first_name
|
||||
viewModel.register_fields.last_name = last_name
|
||||
return res.render("member/Register",viewModel )
|
||||
}
|
||||
|
||||
var { credential, user } = await AuthService.register(
|
||||
email,
|
||||
password,
|
||||
role_id,
|
||||
{
|
||||
first_name,
|
||||
last_name,
|
||||
},
|
||||
);
|
||||
|
||||
if(user){
|
||||
const session = req.session;
|
||||
session.role = role_id;
|
||||
session.user = user;
|
||||
session.credential = credential;
|
||||
|
||||
return session.save((error) => {
|
||||
if(error){
|
||||
throw new Error(error)
|
||||
}
|
||||
return res.redirect("/member/dashboard")
|
||||
})
|
||||
}
|
||||
|
||||
throw new Error();
|
||||
|
||||
|
||||
} catch (error) {
|
||||
if(user){
|
||||
await db.user.destroy(user)
|
||||
}
|
||||
viewModel.error = error.message || "Something went wrong";
|
||||
viewModel.register_fields.email = email
|
||||
viewModel.register_fields.first_name = first_name
|
||||
viewModel.register_fields.last_name = last_name
|
||||
return res.render("member/Register",viewModel )}
|
||||
});
|
||||
|
||||
module.exports = app;
|
||||
|
||||
Reference in New Issue
Block a user