95 lines
2.2 KiB
JavaScript
95 lines
2.2 KiB
JavaScript
'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 errors = require('../../core/errors');
|
|
const app = require('express').Router();
|
|
const role_id = 2
|
|
|
|
app.get('/member/login',
|
|
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, "Login")
|
|
|
|
return res.render("member/Login", viewModel)
|
|
|
|
});
|
|
|
|
app.post('/member/login',
|
|
|
|
ValidationService.validateInput({
|
|
email:"required|email",
|
|
password:"required|minLength:6"
|
|
},{
|
|
"email.required":"Email is required",
|
|
"email.email":"Invalid email",
|
|
"password.required":"Password is required.",
|
|
"password.minLength":"Password should be at least 6 characters long."})
|
|
|
|
,async function (req, res, next) {
|
|
const role_id = 2
|
|
const {email, password} = req.body;
|
|
|
|
const AuthViewModel = require("../../view_models/member_auth_view_model")
|
|
|
|
const viewModel =new AuthViewModel(db.user,"Login")
|
|
|
|
ValidationService.handleValidationErrorForViews(
|
|
req,
|
|
res,
|
|
viewModel,
|
|
'member/Login',
|
|
'login_fields',
|
|
{ email },
|
|
);
|
|
|
|
try {
|
|
const { credential, user } = await AuthService.login(email, password, role_id);
|
|
|
|
|
|
|
|
|
|
const session = req.session;
|
|
|
|
|
|
|
|
|
|
if (req.body.remember_me === 'on') {
|
|
const day = 60 * 60 * 1000 * 24;
|
|
req.session.cookie.expires = new Date(Date.now() + day * 31);
|
|
req.session.cookie.maxAge = day * 31;
|
|
}
|
|
|
|
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")
|
|
})
|
|
|
|
|
|
} catch (error) {
|
|
viewModel.error = error.message || "Something went wrong";
|
|
viewModel.login_fields.email = email;
|
|
return res.render("member/Login",viewModel )
|
|
|
|
}
|
|
|
|
});
|
|
|
|
module.exports = app;
|
|
|