383 lines
13 KiB
JavaScript
383 lines
13 KiB
JavaScript
const express = require('express');
|
|
const router = express.Router();
|
|
const bcrypt = require('bcryptjs');
|
|
const passport = require('passport');
|
|
const checkUserAdmin3 = require('../js/helperFuncs');
|
|
// Bring in User Model
|
|
let User = require('../models/user');
|
|
var utils = require('../js/utils');
|
|
var nodemailer = require('nodemailer');
|
|
var generator = require('generate-password');
|
|
const emailFelado='no-reply.klportal@iotechnic.eu';
|
|
String.prototype.replaceAt=function(index, replacement) {
|
|
return this.substr(0, index) + replacement+ this.substr(index + replacement.length);
|
|
}
|
|
// Register Form
|
|
router.get('/register', function(req, res){
|
|
res.render('register');
|
|
});
|
|
|
|
// Email Értesítő
|
|
// BREVO MAIL
|
|
var transporter = nodemailer.createTransport({
|
|
host: 'smtp-relay.brevo.com',
|
|
port: 587,
|
|
//secret: true,
|
|
secure: false,
|
|
auth: {
|
|
user: '78718e001@smtp-brevo.com',
|
|
pass: 'gav8nmwFYLGA4ZMR'
|
|
}
|
|
});
|
|
/*
|
|
var transporter = nodemailer.createTransport({
|
|
host: 'mail.klelectro.hu',
|
|
port: 465,
|
|
secret: true,
|
|
auth: {
|
|
user: 'munkanyilvantarto@klelectro.hu',
|
|
pass: 'IoSn1Pb1'
|
|
}
|
|
});*/
|
|
// Regisztrációs email kiküldése
|
|
function sendEmailNewPasswordNotify(user,visiblePassword)
|
|
{
|
|
|
|
var mailOptions = {
|
|
from: emailFelado,//'munkanyilvantarto@klelectro.hu',//'szamlaertesito@gmail.com',
|
|
to: user.email,
|
|
subject: 'Munkanyílvántartó új jelszó.',
|
|
text: 'That was easy!'
|
|
};
|
|
|
|
mailOptions.text='Tisztelt '+user.name+'!\nÖn új jelszót kapott.\n\nBelépési adatok:\nWeblap: www.iotechnic.eu\nFelhasználó név: '+user.username+'\nJelszó: '+visiblePassword+'\n';
|
|
transporter.sendMail(mailOptions, function(error, info){
|
|
if (error) {
|
|
console.log(error);
|
|
} else {
|
|
console.log('Email sent: ' + info.response);
|
|
}
|
|
});
|
|
}
|
|
function sendEmailRegisterNotify(username,pwd,email)
|
|
{
|
|
|
|
var mailOptions = {
|
|
from: 'munkanyilvantarto@klelectro.hu',//'szamlaertesito@gmail.com',
|
|
to: email,
|
|
subject: 'Munkanyílvántartó regisztráció.',
|
|
text: 'That was easy!'
|
|
};
|
|
|
|
mailOptions.text="Sikeres regisztráció!\nBelépési adatok:\nWeblap: www.iotechnic.eu\nFelhasználó név: "+username+"\nJelszó: "+pwd+"\n";
|
|
transporter.sendMail(mailOptions, function(error, info){
|
|
if (error) {
|
|
console.log(error);
|
|
} else {
|
|
console.log('Email sent: ' + info.response);
|
|
}
|
|
});
|
|
}
|
|
// Register Proccess
|
|
router.post('/register', function(req, res){
|
|
const name = req.body.name;
|
|
const email = req.body.email;
|
|
const username = req.body.username;
|
|
const password = req.body.password;
|
|
const password2 = req.body.password2;
|
|
|
|
|
|
req.checkBody('name', 'Name is required').notEmpty();
|
|
req.checkBody('email', 'Email is required').notEmpty();
|
|
req.checkBody('email', 'Email is not valid').isEmail();
|
|
req.checkBody('username', 'Username is required').notEmpty();
|
|
req.checkBody('password', 'Password is required').notEmpty();
|
|
req.checkBody('password2', 'Passwords do not match').equals(req.body.password);
|
|
|
|
let errors = req.validationErrors();
|
|
|
|
if(errors){
|
|
res.render('register', {
|
|
errors:errors
|
|
});
|
|
} else {
|
|
let newUser = new User({
|
|
name:name,
|
|
email:email,
|
|
username:username,
|
|
auth: 'Test',
|
|
password:password,
|
|
user:req.user,
|
|
chatId:'none'
|
|
});
|
|
var visiblePassword=password;
|
|
bcrypt.genSalt(10, function(err, salt){
|
|
bcrypt.hash(newUser.password, salt, function(err, hash){
|
|
if(err){
|
|
console.log(err);
|
|
}
|
|
newUser.password = hash;
|
|
if(req.body.chk_AddUser==='on') { newUser.canAdd.user=true;}
|
|
if(req.body.chk_AddWork==='on') { newUser.canAdd.work=true;}
|
|
if(req.body.chk_AddDevice==='on') { newUser.canAdd.device=true;}
|
|
if(req.body.chk_AddFiles==='on') { newUser.canAdd.files=true;}
|
|
|
|
if(req.body.chk_EditUser==='on') { newUser.canModify.user= true;}
|
|
if(req.body.chk_EditWork==='on') { newUser.canModify.work= true;}
|
|
if(req.body.chk_EditDevice==='on') { newUser.canModify.device= true;}
|
|
|
|
if(req.body.chk_DeleteUser==='on') { newUser.canDelete.user= true;}
|
|
if(req.body.chk_DeleteWork==='on') { newUser.canDelete.work= true;}
|
|
if(req.body.chk_DeleteDevice==='on') { newUser.canDelete.device= true;}
|
|
if(req.body.chk_DeleteFiles==='on') { newUser.canDelete.files= true;}
|
|
if(req.body.chk_DownloadFiles==='on') { newUser.canDownload= true;}
|
|
if(req.body.chk_Invoices==='on') { newUser.canAccess.invoices= true;}
|
|
if(req.body.chk_Clients==='on') { newUser.canAccess.clients= true;}
|
|
if(req.body.chkIsadmin==='on') { newUser.isAdmin= true;}
|
|
if(req.body.chkIsEmployee==='on') { newUser.isEmployee= true;}
|
|
if (req.body.chk_InvoicesMail==='on') {newUser.notifyInvoices=true;}
|
|
newUser.save(function(err){
|
|
if(err){
|
|
console.log(err);
|
|
return;
|
|
} else {
|
|
req.flash('success','Sikeres regisztráció, kérem jelentkezzen be');
|
|
sendEmailRegisterNotify(newUser.username,visiblePassword,email);
|
|
res.redirect('/users/login');
|
|
}
|
|
});
|
|
});
|
|
});
|
|
}
|
|
});
|
|
|
|
// Login Form
|
|
router.get('/login', function(req, res){
|
|
res.render('login',{
|
|
user:req.user
|
|
});
|
|
});
|
|
|
|
// Login Process
|
|
router.post('/login', function(req, res, next){
|
|
passport.authenticate('local', {
|
|
successRedirect:'/',
|
|
failureRedirect:'/users/login',
|
|
})(req, res, next);
|
|
});
|
|
|
|
// logout
|
|
router.get('/logout', function(req, res){
|
|
req.logout();
|
|
//utils.logAppend("Sikeres kijelentkezés",'req.user.username');
|
|
req.flash('success', 'Kijelentkezett');
|
|
res.redirect('/users/login');
|
|
});
|
|
|
|
|
|
// Edit Form
|
|
router.get('/user_edit/:id', utils.ensureAuthenticated,function(req, res){
|
|
User.findById(req.params.id, function(err,user){
|
|
if (err)
|
|
{
|
|
req.flash('danger', 'Nincs ilyen felhasználó!');
|
|
res.render('user_edit',{
|
|
user:user,
|
|
cuser:req.user
|
|
});
|
|
}
|
|
else
|
|
{
|
|
res.render('user_edit',{
|
|
user:user,
|
|
cuser:req.user
|
|
});
|
|
}
|
|
|
|
})
|
|
|
|
});
|
|
|
|
// New Api key
|
|
router.get('/newPassword/:id', utils.ensureAuthenticated,function (req, res) {
|
|
//calling.aFunction();
|
|
|
|
|
|
let user={};
|
|
|
|
var password = generator.generate({
|
|
length: 10,
|
|
numbers: true,
|
|
symbols: true,
|
|
});
|
|
|
|
bcrypt.genSalt(10, function(err, salt){
|
|
bcrypt.hash(password, salt, function(err, hash){
|
|
if(err){
|
|
console.log(err);
|
|
res.send({'result': 'error'});
|
|
}
|
|
else
|
|
{
|
|
|
|
user.password=hash;
|
|
let query = {_id:req.params.id}
|
|
User.findOneAndUpdate(query,user,{ returnNewDocument: true },function(err,document){
|
|
if(err){
|
|
console.log(err);
|
|
res.send({'result': 'error'});
|
|
}else{
|
|
sendEmailNewPasswordNotify(document,password)
|
|
//console.log(document.name);
|
|
res.send({'result': 'success'});
|
|
|
|
}
|
|
});
|
|
}
|
|
});
|
|
});
|
|
|
|
|
|
});
|
|
|
|
// Register Proccess
|
|
router.post('/user_edit/:id', function(req, res){
|
|
let user={};
|
|
|
|
req.checkBody('name', 'Név megadása kötelező').notEmpty();
|
|
req.checkBody('email', 'Email megadása kötelező').notEmpty();
|
|
req.checkBody('email', 'Nem valódi email cím').isEmail();
|
|
req.checkBody('username', 'Username megadása kötelező').notEmpty();
|
|
req.checkBody('password', 'Jelszó megadása kötelező').notEmpty();
|
|
req.checkBody('password2', 'A megadott jelszavak nem egyeznek').equals(req.body.password);
|
|
|
|
//req.checkBody('passwordOld', 'A régi jelszó hibás').equals(req.user.password);
|
|
let errors = req.validationErrors();
|
|
if(errors){
|
|
res.render('user_edit', {
|
|
errors:errors,
|
|
user:req.user
|
|
});
|
|
} else {
|
|
|
|
let query = {_id:req.user._id}
|
|
//var oldpass=req.body.passwordOld;
|
|
console.log("Current User:");
|
|
console.log(req.user);
|
|
// console.log(oldpass);
|
|
User.findById(req.params.id,function(err,eUser){ // eUser=aki adatait szerkesztjük
|
|
query = {_id:eUser._id}
|
|
// eUser.comparePassword(oldpass, function(err, isMatch) {
|
|
//req.user.comparePassword(oldpass, function(err, isMatch) {
|
|
// if (isMatch) {
|
|
|
|
eUser.name = req.body.name;
|
|
eUser.email = req.body.email;
|
|
eUser.username = req.body.username;
|
|
|
|
if(req.body.chk_AddUser==='on') { eUser.canAdd.user=true;} else { eUser.canAdd.user=false;}
|
|
if(req.body.chk_AddWork==='on') { eUser.canAdd.work=true;} else { eUser.canAdd.work=false;}
|
|
if(req.body.chk_AddDevice==='on') { eUser.canAdd.device=true;} else { eUser.canAdd.device=false;}
|
|
if(req.body.chk_AddFiles==='on') { eUser.canAdd.files=true;} else { eUser.canAdd.files=false;}
|
|
|
|
if(req.body.chk_EditUser==='on') { eUser.canModify.user= true;} else { eUser.canModify.user= false;}
|
|
if(req.body.chk_EditWork==='on') { eUser.canModify.work= true;} else { eUser.canModify.work= false;}
|
|
if(req.body.chk_EditDevice==='on') { eUser.canModify.device= true;} else { eUser.canModify.device= false;}
|
|
|
|
if(req.body.chk_DeleteUser==='on') { eUser.canDelete.user= true;} else { eUser.canDelete.user= false;}
|
|
if(req.body.chk_DeleteWork==='on') { eUser.canDelete.work= true;} else { eUser.canDelete.work= false;}
|
|
if(req.body.chk_DeleteDevice==='on') { eUser.canDelete.device= true;} else { eUser.canDelete.device= false;}
|
|
if(req.body.chk_DeleteFiles==='on') { eUser.canDelete.files= true;} else { eUser.canDelete.files= false;}
|
|
if(req.body.chk_DownloadFiles==='on') { eUser.canDownload= true;} else { eUser.canDownload= false;}
|
|
if(req.body.chk_Invoices==='on') { eUser.canAccess.invoices= true;} else { eUser.canAccess.invoices= false;}
|
|
if(req.body.chk_Clients==='on') { eUser.canAccess.clients= true;} else { eUser.canAccess.clients= false;}
|
|
if(req.body.chkIsadmin==='on') { eUser.isAdmin= true;} else { eUser.isAdmin= false;}
|
|
if(req.body.chkIsEmployee==='on') { eUser.isEmployee= true;} else { eUser.isEmployee= false;}
|
|
if (req.body.chk_InvoicesMail==='on') {eUser.notifyInvoices=true;} else {eUser.notifyInvoices=false;}
|
|
if (req.body.password!=eUser.password)//!=req.user.password)
|
|
{
|
|
eUser.password = req.body.password;
|
|
bcrypt.genSalt(10, function(err, salt){
|
|
bcrypt.hash(eUser.password, salt, function(err, hash){
|
|
if(err){
|
|
console.log(err);
|
|
}
|
|
eUser.password = hash;
|
|
User.updateOne(query, eUser, function(err){
|
|
if(err){
|
|
req.flash('success','Felhasználói adatok módosítása sikertelen');
|
|
console.log(err);
|
|
return;
|
|
}else{
|
|
req.logout();
|
|
req.flash('success','Felhasználói adatok módosítása sikeres, kérem jelentkezzen be újra');
|
|
res.redirect('/users/login');
|
|
}
|
|
});
|
|
});
|
|
});
|
|
|
|
}
|
|
else
|
|
{
|
|
|
|
User.updateOne(query, eUser, function(err){
|
|
if(err){
|
|
req.flash('success','Felhasználói adatok módosítása sikertelen');
|
|
console.log(err);
|
|
return;
|
|
}else{
|
|
req.logout();
|
|
req.flash('success','Felhasználói adatok módosítása sikeres, kérem jelentkezzen be újra');
|
|
res.redirect('/users/login');
|
|
}
|
|
});
|
|
}
|
|
/* } else {
|
|
req.flash('error','Hejtelen régi jelszót adott meg');
|
|
res.redirect('/users/user_edit/'+eUser._id);
|
|
console.log('Incorrect password.' );
|
|
}*/
|
|
// });
|
|
});
|
|
}
|
|
|
|
|
|
|
|
});
|
|
|
|
// Get User list
|
|
router.get('/',utils.ensureAuthenticated,function(req,res){
|
|
|
|
|
|
checkUserAdmin3(req,function(err,res){
|
|
admin=res;
|
|
console.log(admin);
|
|
});
|
|
User.find({}, function(err,user){
|
|
|
|
var admin=false;
|
|
|
|
if (err)
|
|
{
|
|
res.render('user', {
|
|
title: 'Felhasználók',
|
|
users: users,
|
|
rot: admin
|
|
});
|
|
}else {
|
|
res.render('user', {
|
|
title: 'Felhasználók',
|
|
users: user,
|
|
rot: admin
|
|
});
|
|
}
|
|
|
|
|
|
|
|
|
|
});
|
|
});
|
|
|
|
module.exports = router;
|