Commit 8293a53e authored by Rosanny Sihombing's avatar Rosanny Sihombing
Browse files

update routes for creating/updating a website

parent f60fbdd9
......@@ -12,12 +12,17 @@ const async = require('async')
const crypto = require('crypto')
const mailer = require('./mailer')
const axios = require('axios')
const logoDir = 'public/upload/'
const tpGitlabURL = 'https://transfer.hft-stuttgart.de/gitlab/'
const myUser = require('../classes/user')
var loggedInUser
const portalUser = require('../classes/user')
const projectInformation = require('../classes/website')
const projectRepo = require('../classes/repo')
module.exports = function (app, config, passport, i18n) {
var loggedInUser
// =========== PASSPORT =======
passport.serializeUser(function (user, done) {
done(null, user);
......@@ -105,12 +110,6 @@ module.exports = function (app, config, passport, i18n) {
// ======== APP ROUTES - ACCOUNT ====================
var updatePasswordMailSubject = "Ihr Passwort für das Transferportal wurde gespeichert."
// var mailSignature = "Mit den besten Grüßen,\ndas Transferportal-Team der HFT Stuttgart\n\n"+
// "Transferportal der Hochschule für Technik Stuttgart\n"+
// "Schellingstr. 24\n"+
// "70174 Stuttgart\n"+
// "m4lab@hft-stuttgart.de\n"+
// "https://transfer.hft-stuttgart.de"
var updatePasswordMailContent = '<div>Lieber Nutzer,<br/><br/>Ihr Passwort wurde erfolgreich geändert.<br/><br/>' + mailSignature + '</div>';
app.get('/', function (req, res) {
......@@ -119,29 +118,22 @@ module.exports = function (app, config, passport, i18n) {
if (!err) {
// Initialize user
if (!loggedInUser) {
loggedInUser = new myUser()
loggedInUser.id = data.id
loggedInUser.email = req.user.email
loggedInUser.salutation = data.salutation
loggedInUser.title = data.title
loggedInUser.firstName = data.firstname
loggedInUser.lastName = data.lastname
loggedInUser.industry = data.industry
loggedInUser.organisation = data.organisation
loggedInUser.speciality = data.speciality
loggedInUser.m4lab_idp = data.m4lab_idp
loggedInUser.verificationStatus = data.verificationStatus
loggedInUser = new portalUser(
data.id, req.user.email, data.salutation, data.title, data.firstname, data.lastname, data.industry, data.organisation, data.speciality, data.m4lab_idp, null, data.verificationStatus
)
methods.getGitlabId(data.id, function(gitlabUserId, err){
if(!err) {
loggedInUser.gitlabUserId = gitlabUserId
loggedInUser.setGitlabUserId(gitlabUserId)
}
//console.log(loggedInUser)
})
}
let userData = {
fullName: loggedInUser.getFullName(),
m4lab_idp: loggedInUser.getIdpStatus(),
verificationStatus: loggedInUser.getVerificationStatus()}
res.render(lang+'/account/home', {
user: data
user: userData
});
}
})
......@@ -181,6 +173,8 @@ module.exports = function (app, config, passport, i18n) {
app.get('/profile', function (req, res) {
if (req.isAuthenticated()) {
// RS: to be updated = get data from loggedinuser
console.log(loggedInUser)
methods.getUserByEmail(req.user.email, function(data, err){
if (!err) {
if (data.verificationStatus == 1) {
......@@ -202,39 +196,28 @@ module.exports = function (app, config, passport, i18n) {
}
});
app.get('/services', function (req, res) {
if (req.isAuthenticated() && loggedInUser) {
if (loggedInUser.verificationStatus == 1) {
app.get('/services', function(req, res){
if(!req.isAuthenticated() && !loggedInUser) {
res.redirect('/login')
} else {
let userData = {
fullName: loggedInUser.getFullName(),
m4lab_idp: loggedInUser.getIdpStatus()}
if(loggedInUser.getVerificationStatus() != 1) {
res.render(lang+'/account/home', {
user: userData
})
} else {
let gitlabReposArr = []
let gitlabPagesArr = []
let userData = {
firstname: loggedInUser.firstName,
lastname: loggedInUser.lastName,
m4lab_idp: loggedInUser.m4lab_idp}
if (loggedInUser.gitlabUserId) {
// GitLab is already activated for this user. Allow project creation.
/*
waterfall([
function(callback){
callback(null, 'one', 'two');
},
function(arg1, arg2, callback){
callback(null, 'three');
},
function(arg1, callback){
// arg1 now equals 'three'
callback(null, 'done');
}
], function (err, result) {
// result now equals 'done'
});
*/
if(loggedInUser.getGitlabUserId()) {
async.waterfall([
// check projects in runners
function(callback) {
let gitlabRunnersProjectIdsArr
gitlab.getProjectIdsFromRunners (loggedInUser.gitlabUserId, function(data){
gitlab.getProjectIdsFromRunners(loggedInUser.getGitlabUserId(), function(data){
if(data.error)
return res.status(500).send(data.data)
gitlabRunnersProjectIdsArr = data.data
......@@ -243,7 +226,7 @@ module.exports = function (app, config, passport, i18n) {
}
], function(err, gitlabRunnersProjectIdsArr) {
// get user projects
gitlab.getUserProjects (loggedInUser.gitlabUserId, function(data){
gitlab.getUserProjects (loggedInUser.getGitlabUserId(), function(data){
if (data.error)
return res.status(500).send(data.data)
let gitlabData = data.data
......@@ -251,22 +234,15 @@ module.exports = function (app, config, passport, i18n) {
if (gitlabData[i].tag_list.includes('website')) {
let idxRunners = gitlabRunnersProjectIdsArr.indexOf(gitlabData[i].id)
let isWebsitePublished = false
//let isWebsitePublished = true
if (idxRunners > 0) {
isWebsitePublished = true
}
let page = {
name: gitlabData[i].name,
description: gitlabData[i].description,
avatar_url: gitlabData[i].avatar_url,
web_url: gitlabData[i].web_url,
isPublished: isWebsitePublished}
let page = new projectInformation(loggedInUser.getGitlabUserId(), gitlabData[i].id, gitlabData[i].name, gitlabData[i].description,
gitlabData[i].avatar_url, null, null, isWebsitePublished)
gitlabPagesArr.push(page)
} else {
let repo = {
name: gitlabData[i].name,
description: gitlabData[i].description,
avatar_url: gitlabData[i].avatar_url,
web_url: gitlabData[i].web_url}
let repo = new projectRepo(loggedInUser.getGitlabUserId(), gitlabData[i].id, gitlabData[i].name, gitlabData[i].description, gitlabData[i].avatar_url)
gitlabReposArr.push(repo)
}
}
......@@ -279,6 +255,7 @@ module.exports = function (app, config, passport, i18n) {
})
})
} else {
// ========== to do next ===================
gitlab.getUserIdByEmail(req.user.email, function(data){
if (!data.error) {
let gitlabActivationData = {
......@@ -297,18 +274,13 @@ module.exports = function (app, config, passport, i18n) {
}
})
}
} else {
res.render(lang+'/account/home', {
user: data
})
}
} else {
res.redirect('/login')
}
})
app.get('/security', function (req, res) {
if (req.isAuthenticated()) {
// RS: to be updated = get data from loggedinuser
methods.getUserByEmail(req.user.email, function(data, err){
if (!err) {
if (data.verificationStatus == 1 && data.m4lab_idp == 1) {
......@@ -343,15 +315,14 @@ module.exports = function (app, config, passport, i18n) {
if (req.isAuthenticated()) {
if (userData.email) {
dbconn.user.query('UPDATE user SET ? WHERE email = "' +userData.email+'"', userData, function (err, rows, fields) {
//if (err) throw err;
if (err) {
req.flash('error', "Failed");
res.flash('error', "Failed")
}
else {
//req.flash('success', 'Profile updated!');
req.flash('success', 'Ihr Benutzerprofil wurde aktualisiert!');
res.flash('success', 'Ihr Benutzerprofil wurde aktualisiert!')
}
res.redirect('/account/profile');
// RS: to be updated = update loggedinuser
})
}
} else {
......@@ -365,6 +336,7 @@ module.exports = function (app, config, passport, i18n) {
var newPwd = req.body.inputNewPwd
var retypePwd = req.body.inputConfirm
// RS: to be updated = get data from loggedinuser
methods.getUserIdByEmail(req.user.email, function(userId, err) {
if (!err) {
// Load hashed passwd from DB
......@@ -386,15 +358,15 @@ module.exports = function (app, config, passport, i18n) {
})
}
else if (!isMatch) {
//req.flash('error', "Sorry, your password was incorrect. Please double-check your password.")
req.flash('error', "Das Passwort ist leider falsch. Bitte überprüfen Sie Ihre Eingabe.")
//res.flash('error', "Sorry, your password was incorrect. Please double-check your password.")
res.flash('error', "Das Passwort ist leider falsch. Bitte überprüfen Sie Ihre Eingabe.")
//res.redirect('/security')
res.redirect('/account/security')
}
else {
if ( newPwd != retypePwd ) {
//req.flash('error', "Passwords do no match. Please make sure you re-type your new password correctly.")
req.flash('error', 'Passwörter stimmen nicht überein. Bitte stellen Sie sicher, dass Sie das Passwort beide Male genau gleich eingeben.')
//res.flash('error', "Passwords do no match. Please make sure you re-type your new password correctly.")
res.flash('error', 'Passwörter stimmen nicht überein. Bitte stellen Sie sicher, dass Sie das Passwort beide Male genau gleich eingeben.')
res.redirect('/account/security')
}
else {
......@@ -407,13 +379,13 @@ module.exports = function (app, config, passport, i18n) {
}
methods.updateCredential(credentialData, function(err){
if (err) {
//req.flash('error', "Database error: Password cannot be modified.")
req.flash('error', "Datenbankfehler: Passwort kann nicht geändert werden.")
//res.flash('error', "Database error: Password cannot be modified.")
res.flash('error', "Datenbankfehler: Passwort kann nicht geändert werden.")
throw err
}
else {
//req.flash('success', "Pasword updated!")
req.flash('success', "Passwort aktualisiert!")
//res.flash('success', "Pasword updated!")
res.flash('success', "Passwort aktualisiert!")
mailer.options.to = req.user.email
//mailOptions.subject = "Your M4_LAB Password has been updated."
mailer.options.subject = updatePasswordMailSubject
......@@ -509,12 +481,12 @@ module.exports = function (app, config, passport, i18n) {
}
], function(err) {
if (err) {
//req.flash('error', 'An error occured. Please try again.');
req.flash('error', 'Ein Fehler ist aufgetreten. Bitte versuchen Sie es erneut.');
//res.flash('error', 'An error occured. Please try again.');
res.flash('error', 'Ein Fehler ist aufgetreten. Bitte versuchen Sie es erneut.');
}
else {
//req.flash('success', 'If your email is registered, an e-mail has been sent to ' + emailAddress + ' with further instructions.');
req.flash('success', 'Wenn Ihre E-Mail-Adresse registriert ist, wurde eine E-Mail mit dem weiteren Vorgehen an ' + emailAddress + ' versendet.');
//res.flash('success', 'If your email is registered, an e-mail has been sent to ' + emailAddress + ' with further instructions.');
res.flash('success', 'Wenn Ihre E-Mail-Adresse registriert ist, wurde eine E-Mail mit dem weiteren Vorgehen an ' + emailAddress + ' versendet.');
}
//res.redirect('/forgotPwd'); // deployment
res.redirect('/account/forgotPwd'); // localhost
......@@ -524,8 +496,8 @@ module.exports = function (app, config, passport, i18n) {
app.get('/reset/:token', function(req, res) {
methods.getUserByToken(req.params.token, function(err, user){
if (!user) {
//req.flash('error', 'Password reset token is invalid or has expired.');
req.flash('error', 'Der Schlüssel zum zurücksetzen des Passworts ist ungültig oder abgelaufen.');
//res.flash('error', 'Password reset token is invalid or has expired.');
res.flash('error', 'Der Schlüssel zum zurücksetzen des Passworts ist ungültig oder abgelaufen.');
//res.redirect('/forgotPwd'); // deployment
res.redirect('/account/forgotPwd'); // deployment
}
......@@ -549,13 +521,13 @@ module.exports = function (app, config, passport, i18n) {
// update password
methods.updateCredential(credentialData, function(err){
if (err) {
//req.flash('error', "Database error: Password cannot be modified.")
req.flash('error', "Datenbankfehler: Passwort kann nicht geändert werden.")
//res.flash('error', "Database error: Password cannot be modified.")
res.flash('error', "Datenbankfehler: Passwort kann nicht geändert werden.")
throw err
}
else {
//req.flash('success', "Your pasword has been updated.")
req.flash('success', "Passwort aktualisiert!")
//res.flash('success', "Your pasword has been updated.")
res.flash('success', "Passwort aktualisiert!")
// send notifiaction email
mailer.options.to = user.email
mailer.options.subject = updatePasswordMailSubject
......@@ -573,7 +545,7 @@ module.exports = function (app, config, passport, i18n) {
});
}
else {
req.flash('error', "User not found.")
res.flash('error', "User not found.")
res.redirect('/login')
}
});
......@@ -581,114 +553,223 @@ module.exports = function (app, config, passport, i18n) {
});
// ============= NEW GITLAB PAGES ===========================
app.get('/newPages', function(req, res){
if (req.isAuthenticated() && loggedInUser) {
app.get('/newInformation', function(req, res){
if (!req.isAuthenticated() && !loggedInUser) {
res.redirect('/login')
} else {
let userData = {
firstName: loggedInUser.firstName,
lastName: loggedInUser.lastName,
m4lab_idp: loggedInUser.m4lab_idp
}
let projectData = {
name: null,
description: null,
avatar: null
fullName: loggedInUser.getFullName(),
m4lab_idp: loggedInUser.getIdpStatus()
}
res.render(lang+'/account/newPages', {
user: userData,
project: projectData
res.render(lang+'/account/newInformation', {
user: userData
})
}
else {
res.redirect('/login');
}
})
app.post('/newPages', function(req, res) {
if (req.isAuthenticated() && loggedInUser) {
if (req.files && req.body.name && req.body.description) {
app.post('/newInformation', function(req, res) {
if(!req.isAuthenticated() && !loggedInUser) {
res.redirect('/login')
} else {
if (!req.body.name && !req.body.description) {
res.flash('error', 'Please provide the required data')
//res.redirect('/account/newInformation')
res.redirect('/newInformation')
} else {
let projectName = req.body.name.toLowerCase().replace(/\s/g, '-')
let projectDesc = req.body.description
let projectAvatar = req.files.logo
let avatarDir = 'public/upload/'
let userData = {
firstName: loggedInUser.firstName,
lastName: loggedInUser.lastName,
m4lab_idp: loggedInUser.m4lab_idp}
let newInformation = new projectInformation(loggedInUser.getGitlabUserId(), null, projectName, projectDesc, null, null, null, false)
if (!req.files) {
res.flash('error', 'Please choose a project logo')
//res.redirect('/account/newInformation')
res.redirect('/newInformation')
} else {
let newLogoFile = req.files.logo
async.waterfall([
// upload avatar
function(done) {
projectAvatar.mv(avatarDir + projectAvatar.name, function(err) {
if (err)
return res.status(500).send(err)
console.log('avatar uploaded')
done(err)
function(callback){ // upload logo
newLogoFile.mv(logoDir + newLogoFile.name, function(err) {
newLogoFile = logoDir+newLogoFile.name
callback(err, newLogoFile)
})
},
// call gitlab
function(done) {
let newPagesData = {
gitlabUserId: loggedInUser.gitlabUserId,
name: projectName,
description: projectDesc,
avatar: avatarDir+projectAvatar.name}
gitlab.createNewPages(newPagesData, function(msg, err){
if (err) { callback(err) }
else {
console.log(msg)
if(msg.message) {
if(msg.message.name == "has already been taken") {
let data = {
status: "error",
msg: "project name has already been taken, please choose another name"}
let projectData = {
name: projectName,
description: projectDesc,
avatar: projectAvatar}
req.flash("error", data.msg)
res.render(lang+'/account/newPages', {
user: userData,
project: projectData
function(newLogoFile, callback){ // create a new GitLab Page
gitlab.createNewPages(newInformation, newLogoFile, function(data){
let result = data.data
if (data.error) {
if(result.message.name == "has already been taken") {
res.flash("error", "Project name '"+newInformation.getName()+"' has already been taken, please choose another name.")
} else {
res.flash("error", "Something went wrong. Please try again.")
}
//res.redirect('/account/newInformation')
res.redirect('/newInformation')
} else {
newInformation.setId(result.id)
newInformation.setLogo(result.avatar_url)
newInformation.setSettingUrl(tpGitlabURL+result.namespace.path+'/'+result.name+'/-/edit/master/public/settings.js')
newInformation.setKontaktUrl(tpGitlabURL+result.namespace.path+'/'+result.name+'/-/edit/master/public/kontakt.html')
res.flash("success", "Your website has been created, but not published yet. Please continue to Step 2 and Step 3 to have your new website published.")
//res.redirect('/account/updateInformation?id='+newInformation.getId())
res.redirect('/updateInformation?id='+newInformation.getId())
}
callback(null)
})
}
], function (err) {
if(err) console.log(err)
// remove logo
fs.unlink(newLogoFile, (err) => {
if(err) console.log(err)
})
})
}
else {
let data = {
status: "success",
msg: "success"}
let projectData = {
name: projectName,
description: projectDesc,
avatar: projectAvatar,
webUrl: msg.web_url}
req.flash("success", data.msg)
res.render(lang+'/account/newPages', {
}
}
})
app.get('/updateInformation', function(req, res){
if(!req.isAuthenticated() && !loggedInUser) {
res.redirect('/login')
} else {
let userData = {
fullName: loggedInUser.getFullName(),
m4lab_idp: loggedInUser.getIdpStatus()}
if(!req.query.id) {
res.redirect('/account/services')
} else {
gitlab.getUserProjects(loggedInUser.getGitlabUserId(), function(data){
if (data.error) {
res.status(500).render(lang+'/500', {
error: data.data
})
} else {
// quick way to decide whether a website is already published or not
let informationStatus
if(req.query.s != "y" && req.query.s != "n") {
res.redirect('/account/services')
} else {
if(req.query.s == "y") {
informationStatus = true
} else if(req.query.s == "n") {
informationStatus = false
}
let gitlabData = data.data
let curInformation = new projectInformation(loggedInUser.getGitlabUserId(), req.query.id, null, null, null, null, null, informationStatus)
for(let i = 0; i < gitlabData.length; i++){
if (gitlabData[i].id == req.query.id) {
curInformation.setName(gitlabData[i].name)
curInformation.setDesc(gitlabData[i].description)
curInformation.setLogo(gitlabData[i].avatar_url)
curInformation.setSettingUrl(tpGitlabURL+gitlabData[i].namespace.path+'/'+gitlabData[i].name+'/-/edit/master/public/settings.js')
curInformation.setKontaktUrl(tpGitlabURL+gitlabData[i].namespace.path+'/'+gitlabData[i].name+'/-/edit/master/public/kontakt.html')
break
}
}
res.render(lang+'/account/updateInformation', {
user: userData,
project: projectData
information: curInformation
})
}
}
done(err)
})
}
}
})
app.post('/updateInformation', function(req, res){
if(!req.isAuthenticated() && !loggedInUser) {
res.redirect('/login')
} else {
if (!req.body.name && !req.body.description) {
res.flash('error', 'Please provide the required data')
//res.redirect('/account/updateInformation')
res.redirect('/updateInformation')
} else {
let projectName = req.body.name.toLowerCase().replace(/\s/g, '-')
let projectDesc = req.body.description
let updatedInformation = new projectInformation(loggedInUser.getGitlabUserId(), req.query.id, projectName, projectDesc, null, null, null, req.body.isPublished)
let newLogoFile
async.waterfall([
function(callback){ // upload logo
if(!req.files) {
callback(null, newLogoFile)
} else {
newLogoFile = req.files.logo
newLogoFile.mv(logoDir + newLogoFile.name, function(err) {
newLogoFile = logoDir + newLogoFile.name
callback(err, newLogoFile)
})
}
},
// delete avatar from /public/avatar
function(){
fs.unlink(avatarDir+projectAvatar.name, (err) => {
if (err) throw err;
console.log('avatar is successfully deleted');
function(newLogoFile, callback){ // update gitlab page
gitlab.updateProject(updatedInformation, newLogoFile, function(data){
let result = data.data
if (data.error) {
if(result.message.name == "has already been taken") {
res.flash("error", "Project name has already been taken, please choose another name.")
} else {
res.flash("error", "Something went wrong. Please try again.")
}
} else {
updatedInformation.setLogo(result.avatar_url)
updatedInformation.setSettingUrl(tpGitlabURL+result.namespace.path+'/'+result.name+'/-/edit/master/public/settings.js')
updatedInformation.setKontaktUrl(tpGitlabURL+result.namespace.path+'/'+result.name+'/-/edit/master/public/kontakt.html')
res.flash("success", "Your website has been updated")
}
//res.redirect('/account/updateInformation?id='+updatedInformation.getId())
res.redirect('/updateInformation?id='+updatedInformation.getId())
callback(null)
})
}
])
], function (err) {
if(err) console.log(err)
if(newLogoFile){ // remove logo
fs.unlink(newLogoFile, (err) => {
if(err) console.log(err)
})
}
})
}
else {
console.log('Please provide the data')
}
})
// RS: delete projektInformation?
app.post('/sendPublishRequest', function(req, res) {
if (!req.isAuthenticated() && loggedInUser) {
res.redirect('/login')
} else {
let emailAddress = loggedInUser.getEmail()
let supportAddress = "support-transfer@hft-stuttgart.de"
//let supportAddress = "rosanny.sihombing@hft-stuttgart.de"
let projectName = req.body.projectName
let emailContent = "Guten Tag, \n\nhiermit beantrage Ich die Freischaltung einer Webseite auf dem Transferportal für folgendes Projekt: \n"
+projectName+"\n\nVielen Dank,\n"+loggedInUser.getFullName()
let emailSubject = "M4_LAB New Website Publish Request"
async.waterfall([
function(done) {
mailer.options.to = supportAddress
mailer.options.cc = emailAddress
mailer.options.subject = emailSubject
mailer.options.text = emailContent
mailer.transport.sendMail(mailer.options, function(err) {
done(err, 'done')
})
}
], function(err) {
if (err) {
console.log(err)
res.send('Ein Fehler ist aufgetreten. Bitte versuchen Sie es erneut.')
}
else {
res.redirect('/login');
res.send('Vielen Dank für Ihre Anfrage. Eine Kopie Ihrer Anfrage wurde an ' + emailAddress + ' versandt.')
}
})
}
})
......@@ -717,8 +798,8 @@ module.exports = function (app, config, passport, i18n) {
var emailDomain = userEmail.slice(pos, emailLength);
if ( emailDomain.toLowerCase() == "@hft-stuttgart.de") {
req.flash('error', "Fehlgeschlagen: HFT-Account")
res.redirect('/account/registration');
res.flash('error', "Fehlgeschlagen: HFT-Account")
res.redirect('/account/registration')
}
else {
let token
......@@ -746,7 +827,7 @@ module.exports = function (app, config, passport, i18n) {
function(newAccount, err) {
methods.registerNewUser(newAccount, function(err){
if (err) {
req.flash('error', "Fehlgeschlagen")
res.flash('error', "Fehlgeschlagen")
}
else {
// send email
......@@ -772,7 +853,7 @@ module.exports = function (app, config, passport, i18n) {
}
})
// user feedback
req.flash('success', 'Vielen Dank für Ihre Registrierung!'+'\r\n\r\n'+
res.flash('success', 'Vielen Dank für Ihre Registrierung!'+'\r\n\r\n'+
'Wir haben Ihnen eine E-Mail an Ihre verwendete Adresse gesendet. Diese enthält einen Link zur Bestätigung Ihres Accounts.'+'\r\n'+
'Wenn Sie die Mail nicht in ihrem Postfach vorfinden, prüfen Sie bitte auch Ihren Spam-Ordner.')
}
......@@ -784,6 +865,7 @@ module.exports = function (app, config, passport, i18n) {
})
// ============= USER VERIFICATION ================================
// RS: update loggedInUser status after successfull verification?
app.get("/verifyAccount", function(req, res){
console.log(req.query)
methods.getUserIdByVerificationToken(req.query.token, function(userId, err){
......@@ -901,8 +983,8 @@ module.exports = function (app, config, passport, i18n) {
app.get('/contact', function (req, res) {
res.render(lang+'/account/contact', {
user: req.user
});
});
})
})
app.post('/contact', function(req, res, next) {
//methods.currentDate();
......@@ -925,13 +1007,14 @@ module.exports = function (app, config, passport, i18n) {
}
], function(err) {
if (err) {
req.flash('error', 'Ein Fehler ist aufgetreten. Bitte versuchen Sie es erneut.');
res.flash('error', 'Ein Fehler ist aufgetreten. Bitte versuchen Sie es erneut.');
}
else {
req.flash('success', 'Vielen Dank für Ihre Anfrage. Wir melden uns baldmöglichst bei Ihnen. Eine Kopie Ihrer Anfrage wurde an ' + emailAddress + ' versandt.');
res.flash('success', 'Vielen Dank für Ihre Anfrage. Wir melden uns baldmöglichst bei Ihnen. Eine Kopie Ihrer Anfrage wurde an ' + emailAddress + ' versandt.');
}
//res.redirect('/forgotPwd'); // deployment
res.redirect('/account/contact'); // localhost
});
});
};
\ No newline at end of file
})
})
}
\ No newline at end of file
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment