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') ...@@ -12,12 +12,17 @@ const async = require('async')
const crypto = require('crypto') const crypto = require('crypto')
const mailer = require('./mailer') const mailer = require('./mailer')
const axios = require('axios') const axios = require('axios')
const logoDir = 'public/upload/'
const tpGitlabURL = 'https://transfer.hft-stuttgart.de/gitlab/'
const myUser = require('../classes/user') const portalUser = require('../classes/user')
var loggedInUser const projectInformation = require('../classes/website')
const projectRepo = require('../classes/repo')
module.exports = function (app, config, passport, i18n) { module.exports = function (app, config, passport, i18n) {
var loggedInUser
// =========== PASSPORT ======= // =========== PASSPORT =======
passport.serializeUser(function (user, done) { passport.serializeUser(function (user, done) {
done(null, user); done(null, user);
...@@ -105,12 +110,6 @@ module.exports = function (app, config, passport, i18n) { ...@@ -105,12 +110,6 @@ module.exports = function (app, config, passport, i18n) {
// ======== APP ROUTES - ACCOUNT ==================== // ======== APP ROUTES - ACCOUNT ====================
var updatePasswordMailSubject = "Ihr Passwort für das Transferportal wurde gespeichert." 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>'; var updatePasswordMailContent = '<div>Lieber Nutzer,<br/><br/>Ihr Passwort wurde erfolgreich geändert.<br/><br/>' + mailSignature + '</div>';
app.get('/', function (req, res) { app.get('/', function (req, res) {
...@@ -119,29 +118,22 @@ module.exports = function (app, config, passport, i18n) { ...@@ -119,29 +118,22 @@ module.exports = function (app, config, passport, i18n) {
if (!err) { if (!err) {
// Initialize user // Initialize user
if (!loggedInUser) { if (!loggedInUser) {
loggedInUser = new myUser() loggedInUser = new portalUser(
loggedInUser.id = data.id 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
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
methods.getGitlabId(data.id, function(gitlabUserId, err){ methods.getGitlabId(data.id, function(gitlabUserId, err){
if(!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', { res.render(lang+'/account/home', {
user: data user: userData
}); });
} }
}) })
...@@ -181,6 +173,8 @@ module.exports = function (app, config, passport, i18n) { ...@@ -181,6 +173,8 @@ module.exports = function (app, config, passport, i18n) {
app.get('/profile', function (req, res) { app.get('/profile', function (req, res) {
if (req.isAuthenticated()) { if (req.isAuthenticated()) {
// RS: to be updated = get data from loggedinuser
console.log(loggedInUser)
methods.getUserByEmail(req.user.email, function(data, err){ methods.getUserByEmail(req.user.email, function(data, err){
if (!err) { if (!err) {
if (data.verificationStatus == 1) { if (data.verificationStatus == 1) {
...@@ -202,39 +196,28 @@ module.exports = function (app, config, passport, i18n) { ...@@ -202,39 +196,28 @@ module.exports = function (app, config, passport, i18n) {
} }
}); });
app.get('/services', function (req, res) { app.get('/services', function(req, res){
if (req.isAuthenticated() && loggedInUser) { if(!req.isAuthenticated() && !loggedInUser) {
if (loggedInUser.verificationStatus == 1) { 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 gitlabReposArr = []
let gitlabPagesArr = [] let gitlabPagesArr = []
let userData = {
firstname: loggedInUser.firstName, if(loggedInUser.getGitlabUserId()) {
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'
});
*/
async.waterfall([ async.waterfall([
// check projects in runners // check projects in runners
function(callback) { function(callback) {
let gitlabRunnersProjectIdsArr let gitlabRunnersProjectIdsArr
gitlab.getProjectIdsFromRunners (loggedInUser.gitlabUserId, function(data){ gitlab.getProjectIdsFromRunners(loggedInUser.getGitlabUserId(), function(data){
if(data.error) if(data.error)
return res.status(500).send(data.data) return res.status(500).send(data.data)
gitlabRunnersProjectIdsArr = data.data gitlabRunnersProjectIdsArr = data.data
...@@ -243,7 +226,7 @@ module.exports = function (app, config, passport, i18n) { ...@@ -243,7 +226,7 @@ module.exports = function (app, config, passport, i18n) {
} }
], function(err, gitlabRunnersProjectIdsArr) { ], function(err, gitlabRunnersProjectIdsArr) {
// get user projects // get user projects
gitlab.getUserProjects (loggedInUser.gitlabUserId, function(data){ gitlab.getUserProjects (loggedInUser.getGitlabUserId(), function(data){
if (data.error) if (data.error)
return res.status(500).send(data.data) return res.status(500).send(data.data)
let gitlabData = data.data let gitlabData = data.data
...@@ -251,22 +234,15 @@ module.exports = function (app, config, passport, i18n) { ...@@ -251,22 +234,15 @@ module.exports = function (app, config, passport, i18n) {
if (gitlabData[i].tag_list.includes('website')) { if (gitlabData[i].tag_list.includes('website')) {
let idxRunners = gitlabRunnersProjectIdsArr.indexOf(gitlabData[i].id) let idxRunners = gitlabRunnersProjectIdsArr.indexOf(gitlabData[i].id)
let isWebsitePublished = false let isWebsitePublished = false
//let isWebsitePublished = true
if (idxRunners > 0) { if (idxRunners > 0) {
isWebsitePublished = true isWebsitePublished = true
} }
let page = { let page = new projectInformation(loggedInUser.getGitlabUserId(), gitlabData[i].id, gitlabData[i].name, gitlabData[i].description,
name: gitlabData[i].name, gitlabData[i].avatar_url, null, null, isWebsitePublished)
description: gitlabData[i].description,
avatar_url: gitlabData[i].avatar_url,
web_url: gitlabData[i].web_url,
isPublished: isWebsitePublished}
gitlabPagesArr.push(page) gitlabPagesArr.push(page)
} else { } else {
let repo = { let repo = new projectRepo(loggedInUser.getGitlabUserId(), gitlabData[i].id, gitlabData[i].name, gitlabData[i].description, gitlabData[i].avatar_url)
name: gitlabData[i].name,
description: gitlabData[i].description,
avatar_url: gitlabData[i].avatar_url,
web_url: gitlabData[i].web_url}
gitlabReposArr.push(repo) gitlabReposArr.push(repo)
} }
} }
...@@ -279,6 +255,7 @@ module.exports = function (app, config, passport, i18n) { ...@@ -279,6 +255,7 @@ module.exports = function (app, config, passport, i18n) {
}) })
}) })
} else { } else {
// ========== to do next ===================
gitlab.getUserIdByEmail(req.user.email, function(data){ gitlab.getUserIdByEmail(req.user.email, function(data){
if (!data.error) { if (!data.error) {
let gitlabActivationData = { let gitlabActivationData = {
...@@ -297,18 +274,13 @@ module.exports = function (app, config, passport, i18n) { ...@@ -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) { app.get('/security', function (req, res) {
if (req.isAuthenticated()) { if (req.isAuthenticated()) {
// RS: to be updated = get data from loggedinuser
methods.getUserByEmail(req.user.email, function(data, err){ methods.getUserByEmail(req.user.email, function(data, err){
if (!err) { if (!err) {
if (data.verificationStatus == 1 && data.m4lab_idp == 1) { if (data.verificationStatus == 1 && data.m4lab_idp == 1) {
...@@ -343,15 +315,14 @@ module.exports = function (app, config, passport, i18n) { ...@@ -343,15 +315,14 @@ module.exports = function (app, config, passport, i18n) {
if (req.isAuthenticated()) { if (req.isAuthenticated()) {
if (userData.email) { if (userData.email) {
dbconn.user.query('UPDATE user SET ? WHERE email = "' +userData.email+'"', userData, function (err, rows, fields) { dbconn.user.query('UPDATE user SET ? WHERE email = "' +userData.email+'"', userData, function (err, rows, fields) {
//if (err) throw err;
if (err) { if (err) {
req.flash('error', "Failed"); res.flash('error', "Failed")
} }
else { else {
//req.flash('success', 'Profile updated!'); res.flash('success', 'Ihr Benutzerprofil wurde aktualisiert!')
req.flash('success', 'Ihr Benutzerprofil wurde aktualisiert!');
} }
res.redirect('/account/profile'); res.redirect('/account/profile');
// RS: to be updated = update loggedinuser
}) })
} }
} else { } else {
...@@ -365,6 +336,7 @@ module.exports = function (app, config, passport, i18n) { ...@@ -365,6 +336,7 @@ module.exports = function (app, config, passport, i18n) {
var newPwd = req.body.inputNewPwd var newPwd = req.body.inputNewPwd
var retypePwd = req.body.inputConfirm var retypePwd = req.body.inputConfirm
// RS: to be updated = get data from loggedinuser
methods.getUserIdByEmail(req.user.email, function(userId, err) { methods.getUserIdByEmail(req.user.email, function(userId, err) {
if (!err) { if (!err) {
// Load hashed passwd from DB // Load hashed passwd from DB
...@@ -386,15 +358,15 @@ module.exports = function (app, config, passport, i18n) { ...@@ -386,15 +358,15 @@ module.exports = function (app, config, passport, i18n) {
}) })
} }
else if (!isMatch) { else if (!isMatch) {
//req.flash('error', "Sorry, your password was incorrect. Please double-check your password.") //res.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', "Das Passwort ist leider falsch. Bitte überprüfen Sie Ihre Eingabe.")
//res.redirect('/security') //res.redirect('/security')
res.redirect('/account/security') res.redirect('/account/security')
} }
else { else {
if ( newPwd != retypePwd ) { if ( newPwd != retypePwd ) {
//req.flash('error', "Passwords do no match. Please make sure you re-type your new password correctly.") //res.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', 'Passwörter stimmen nicht überein. Bitte stellen Sie sicher, dass Sie das Passwort beide Male genau gleich eingeben.')
res.redirect('/account/security') res.redirect('/account/security')
} }
else { else {
...@@ -407,13 +379,13 @@ module.exports = function (app, config, passport, i18n) { ...@@ -407,13 +379,13 @@ module.exports = function (app, config, passport, i18n) {
} }
methods.updateCredential(credentialData, function(err){ methods.updateCredential(credentialData, function(err){
if (err) { if (err) {
//req.flash('error', "Database error: Password cannot be modified.") //res.flash('error', "Database error: Password cannot be modified.")
req.flash('error', "Datenbankfehler: Passwort kann nicht geändert werden.") res.flash('error', "Datenbankfehler: Passwort kann nicht geändert werden.")
throw err throw err
} }
else { else {
//req.flash('success', "Pasword updated!") //res.flash('success', "Pasword updated!")
req.flash('success', "Passwort aktualisiert!") res.flash('success', "Passwort aktualisiert!")
mailer.options.to = req.user.email mailer.options.to = req.user.email
//mailOptions.subject = "Your M4_LAB Password has been updated." //mailOptions.subject = "Your M4_LAB Password has been updated."
mailer.options.subject = updatePasswordMailSubject mailer.options.subject = updatePasswordMailSubject
...@@ -509,12 +481,12 @@ module.exports = function (app, config, passport, i18n) { ...@@ -509,12 +481,12 @@ module.exports = function (app, config, passport, i18n) {
} }
], function(err) { ], function(err) {
if (err) { if (err) {
//req.flash('error', 'An error occured. Please try again.'); //res.flash('error', 'An error occured. Please try again.');
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 { else {
//req.flash('success', 'If your email is registered, an e-mail has been sent to ' + emailAddress + ' with further instructions.'); //res.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', 'Wenn Ihre E-Mail-Adresse registriert ist, wurde eine E-Mail mit dem weiteren Vorgehen an ' + emailAddress + ' versendet.');
} }
//res.redirect('/forgotPwd'); // deployment //res.redirect('/forgotPwd'); // deployment
res.redirect('/account/forgotPwd'); // localhost res.redirect('/account/forgotPwd'); // localhost
...@@ -524,8 +496,8 @@ module.exports = function (app, config, passport, i18n) { ...@@ -524,8 +496,8 @@ module.exports = function (app, config, passport, i18n) {
app.get('/reset/:token', function(req, res) { app.get('/reset/:token', function(req, res) {
methods.getUserByToken(req.params.token, function(err, user){ methods.getUserByToken(req.params.token, function(err, user){
if (!user) { if (!user) {
//req.flash('error', 'Password reset token is invalid or has expired.'); //res.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', 'Der Schlüssel zum zurücksetzen des Passworts ist ungültig oder abgelaufen.');
//res.redirect('/forgotPwd'); // deployment //res.redirect('/forgotPwd'); // deployment
res.redirect('/account/forgotPwd'); // deployment res.redirect('/account/forgotPwd'); // deployment
} }
...@@ -549,13 +521,13 @@ module.exports = function (app, config, passport, i18n) { ...@@ -549,13 +521,13 @@ module.exports = function (app, config, passport, i18n) {
// update password // update password
methods.updateCredential(credentialData, function(err){ methods.updateCredential(credentialData, function(err){
if (err) { if (err) {
//req.flash('error', "Database error: Password cannot be modified.") //res.flash('error', "Database error: Password cannot be modified.")
req.flash('error', "Datenbankfehler: Passwort kann nicht geändert werden.") res.flash('error', "Datenbankfehler: Passwort kann nicht geändert werden.")
throw err throw err
} }
else { else {
//req.flash('success', "Your pasword has been updated.") //res.flash('success', "Your pasword has been updated.")
req.flash('success', "Passwort aktualisiert!") res.flash('success', "Passwort aktualisiert!")
// send notifiaction email // send notifiaction email
mailer.options.to = user.email mailer.options.to = user.email
mailer.options.subject = updatePasswordMailSubject mailer.options.subject = updatePasswordMailSubject
...@@ -573,7 +545,7 @@ module.exports = function (app, config, passport, i18n) { ...@@ -573,7 +545,7 @@ module.exports = function (app, config, passport, i18n) {
}); });
} }
else { else {
req.flash('error', "User not found.") res.flash('error', "User not found.")
res.redirect('/login') res.redirect('/login')
} }
}); });
...@@ -581,114 +553,223 @@ module.exports = function (app, config, passport, i18n) { ...@@ -581,114 +553,223 @@ module.exports = function (app, config, passport, i18n) {
}); });
// ============= NEW GITLAB PAGES =========================== // ============= 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 = { let userData = {
firstName: loggedInUser.firstName, fullName: loggedInUser.getFullName(),
lastName: loggedInUser.lastName, m4lab_idp: loggedInUser.getIdpStatus()
m4lab_idp: loggedInUser.m4lab_idp
}
let projectData = {
name: null,
description: null,
avatar: null
} }
res.render(lang+'/account/newPages', { res.render(lang+'/account/newInformation', {
user: userData, user: userData
project: projectData
}) })
} }
else {
res.redirect('/login');
}
}) })
app.post('/newInformation', function(req, res) {
app.post('/newPages', function(req, res) { if(!req.isAuthenticated() && !loggedInUser) {
if (req.isAuthenticated() && loggedInUser) { res.redirect('/login')
if (req.files && req.body.name && req.body.description) { } 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 projectName = req.body.name.toLowerCase().replace(/\s/g, '-')
let projectDesc = req.body.description let projectDesc = req.body.description
let projectAvatar = req.files.logo let newInformation = new projectInformation(loggedInUser.getGitlabUserId(), null, projectName, projectDesc, null, null, null, false)
let avatarDir = 'public/upload/'
let userData = {
firstName: loggedInUser.firstName,
lastName: loggedInUser.lastName,
m4lab_idp: loggedInUser.m4lab_idp}
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([ async.waterfall([
// upload avatar function(callback){ // upload logo
function(done) { newLogoFile.mv(logoDir + newLogoFile.name, function(err) {
projectAvatar.mv(avatarDir + projectAvatar.name, function(err) { newLogoFile = logoDir+newLogoFile.name
if (err) callback(err, newLogoFile)
return res.status(500).send(err)
console.log('avatar uploaded')
done(err)
}) })
}, },
// call gitlab function(newLogoFile, callback){ // create a new GitLab Page
function(done) { gitlab.createNewPages(newInformation, newLogoFile, function(data){
let newPagesData = { let result = data.data
gitlabUserId: loggedInUser.gitlabUserId, if (data.error) {
name: projectName, if(result.message.name == "has already been taken") {
description: projectDesc, res.flash("error", "Project name '"+newInformation.getName()+"' has already been taken, please choose another name.")
avatar: avatarDir+projectAvatar.name} } else {
gitlab.createNewPages(newPagesData, function(msg, err){ res.flash("error", "Something went wrong. Please try again.")
if (err) { callback(err) } }
else { //res.redirect('/account/newInformation')
console.log(msg) res.redirect('/newInformation')
if(msg.message) { } else {
if(msg.message.name == "has already been taken") { newInformation.setId(result.id)
let data = { newInformation.setLogo(result.avatar_url)
status: "error", newInformation.setSettingUrl(tpGitlabURL+result.namespace.path+'/'+result.name+'/-/edit/master/public/settings.js')
msg: "project name has already been taken, please choose another name"} newInformation.setKontaktUrl(tpGitlabURL+result.namespace.path+'/'+result.name+'/-/edit/master/public/kontakt.html')
let projectData = {
name: projectName, 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.")
description: projectDesc, //res.redirect('/account/updateInformation?id='+newInformation.getId())
avatar: projectAvatar} res.redirect('/updateInformation?id='+newInformation.getId())
}
req.flash("error", data.msg) callback(null)
res.render(lang+'/account/newPages', {
user: userData,
project: projectData
}) })
} }
], 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 = { app.get('/updateInformation', function(req, res){
name: projectName, if(!req.isAuthenticated() && !loggedInUser) {
description: projectDesc, res.redirect('/login')
avatar: projectAvatar, } else {
webUrl: msg.web_url} let userData = {
fullName: loggedInUser.getFullName(),
req.flash("success", data.msg) m4lab_idp: loggedInUser.getIdpStatus()}
res.render(lang+'/account/newPages', {
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, 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(newLogoFile, callback){ // update gitlab page
function(){ gitlab.updateProject(updatedInformation, newLogoFile, function(data){
fs.unlink(avatarDir+projectAvatar.name, (err) => { let result = data.data
if (err) throw err; if (data.error) {
console.log('avatar is successfully deleted'); 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 { 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) { ...@@ -717,8 +798,8 @@ module.exports = function (app, config, passport, i18n) {
var emailDomain = userEmail.slice(pos, emailLength); var emailDomain = userEmail.slice(pos, emailLength);
if ( emailDomain.toLowerCase() == "@hft-stuttgart.de") { if ( emailDomain.toLowerCase() == "@hft-stuttgart.de") {
req.flash('error', "Fehlgeschlagen: HFT-Account") res.flash('error', "Fehlgeschlagen: HFT-Account")
res.redirect('/account/registration'); res.redirect('/account/registration')
} }
else { else {
let token let token
...@@ -746,7 +827,7 @@ module.exports = function (app, config, passport, i18n) { ...@@ -746,7 +827,7 @@ module.exports = function (app, config, passport, i18n) {
function(newAccount, err) { function(newAccount, err) {
methods.registerNewUser(newAccount, function(err){ methods.registerNewUser(newAccount, function(err){
if (err) { if (err) {
req.flash('error', "Fehlgeschlagen") res.flash('error', "Fehlgeschlagen")
} }
else { else {
// send email // send email
...@@ -772,7 +853,7 @@ module.exports = function (app, config, passport, i18n) { ...@@ -772,7 +853,7 @@ module.exports = function (app, config, passport, i18n) {
} }
}) })
// user feedback // 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'+ '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.') '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) { ...@@ -784,6 +865,7 @@ module.exports = function (app, config, passport, i18n) {
}) })
// ============= USER VERIFICATION ================================ // ============= USER VERIFICATION ================================
// RS: update loggedInUser status after successfull verification?
app.get("/verifyAccount", function(req, res){ app.get("/verifyAccount", function(req, res){
console.log(req.query) console.log(req.query)
methods.getUserIdByVerificationToken(req.query.token, function(userId, err){ methods.getUserIdByVerificationToken(req.query.token, function(userId, err){
...@@ -901,8 +983,8 @@ module.exports = function (app, config, passport, i18n) { ...@@ -901,8 +983,8 @@ module.exports = function (app, config, passport, i18n) {
app.get('/contact', function (req, res) { app.get('/contact', function (req, res) {
res.render(lang+'/account/contact', { res.render(lang+'/account/contact', {
user: req.user user: req.user
}); })
}); })
app.post('/contact', function(req, res, next) { app.post('/contact', function(req, res, next) {
//methods.currentDate(); //methods.currentDate();
...@@ -925,13 +1007,14 @@ module.exports = function (app, config, passport, i18n) { ...@@ -925,13 +1007,14 @@ module.exports = function (app, config, passport, i18n) {
} }
], function(err) { ], function(err) {
if (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 { 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('/forgotPwd'); // deployment
res.redirect('/account/contact'); // localhost 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