Commit 7b175bf4 authored by Wolfgang Knopki's avatar Wolfgang Knopki
Browse files

merged devel to testing

parent 7981e2a1
// add `salutation` column and alter `title` to be not mandatory
ALTER TABLE `userdb`.`user`
ADD COLUMN `salutation` VARCHAR(45) NULL DEFAULT NULL AFTER `email`,
CHANGE COLUMN `title` `title` VARCHAR(45) NULL DEFAULT NULL ;
\ No newline at end of file
-- MySQL Workbench Forward Engineering
SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';
-- -----------------------------------------------------
-- Schema userdb
-- -----------------------------------------------------
-- -----------------------------------------------------
-- Schema userdb
-- -----------------------------------------------------
CREATE SCHEMA IF NOT EXISTS `userdb` DEFAULT CHARACTER SET utf8 ;
-- -----------------------------------------------------
-- Schema userdb
-- -----------------------------------------------------
USE `userdb` ;
-- -----------------------------------------------------
-- Table `userdb`.`user`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `userdb`.`user` (
`id` INT NOT NULL AUTO_INCREMENT,
`active` VARCHAR(45) NOT NULL DEFAULT '1',
`email` VARCHAR(45) NOT NULL,
`title` VARCHAR(45) NOT NULL,
`firstname` VARCHAR(45) NOT NULL,
`lastname` VARCHAR(45) NOT NULL,
`industry` VARCHAR(45) NULL,
`organisation` VARCHAR(45) NULL,
`speciality` VARCHAR(100) NULL,
`createdDate` DATE NOT NULL,
PRIMARY KEY (`id`))
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `userdb`.`credential`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `userdb`.`credential` (
`password` VARCHAR(255) NOT NULL,
`resetPasswordToken` VARCHAR(255) NULL,
`resetPasswordExpires` BIGINT(11) NULL,
`user_id` INT NOT NULL,
PRIMARY KEY (`user_id`),
CONSTRAINT `fk_credential_user`
FOREIGN KEY (`user_id`)
REFERENCES `userdb`.`user` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `userdb`.`role`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `userdb`.`role` (
`id` INT NOT NULL,
`name` VARCHAR(45) NOT NULL,
PRIMARY KEY (`id`))
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `userdb`.`user_project_role`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `userdb`.`user_project_role` (
`project_id` INT NOT NULL,
`user_id` INT NOT NULL,
`role_id` INT NOT NULL,
PRIMARY KEY (`user_id`, `role_id`),
INDEX `fk_user_project_role_role1_idx` (`role_id` ASC) VISIBLE,
CONSTRAINT `fk_user_project_role_user1`
FOREIGN KEY (`user_id`)
REFERENCES `userdb`.`user` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_user_project_role_role1`
FOREIGN KEY (`role_id`)
REFERENCES `userdb`.`role` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
SET SQL_MODE=@OLD_SQL_MODE;
SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;
-- MySQL dump 10.13 Distrib 5.7.28, for Linux (x86_64)
--
-- Host: localhost Database: userdb
-- ------------------------------------------------------
-- Server version 5.7.28-0ubuntu0.16.04.2
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
--
-- Table structure for table `credential`
--
DROP TABLE IF EXISTS `credential`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `credential` (
`password` varchar(255) NOT NULL,
`resetPasswordToken` varchar(255) DEFAULT NULL,
`resetPasswordExpires` bigint(11) DEFAULT NULL,
`user_id` int(11) NOT NULL,
PRIMARY KEY (`user_id`),
CONSTRAINT `fk_credential_user` FOREIGN KEY (`user_id`) REFERENCES `user` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Dumping data for table `credential`
--
LOCK TABLES `credential` WRITE;
/*!40000 ALTER TABLE `credential` DISABLE KEYS */;
INSERT INTO `credential` VALUES ('$2a$10$aaazJI39YqSX4E4IioZLyeij7PNVJOftflRoyR8cnEsJcnfiCEkJG',NULL,NULL,1),('$2a$10$mwSQgaevI6TMlADnNV4wXOHSbU0vMPFk0gXvF7k8uO7rq2nlq4i1m',NULL,NULL,2),('$2a$10$HdtI166dTpiDJ0DJ3iUdN.egdlVISeqKTdiVjK0pO3YCka4leCMqa',NULL,NULL,3),('$2a$10$.B64LLuZjih.N7mIiECfrOJreHS2wl/Tuq8Y3dQBR0Ibo7Qiyu46G',NULL,NULL,4),('$2a$10$9nr4ZPwwIFCmI9ui3cMSYOOm/4A87zEuXjUKITWrednzVgN9TkSdC',NULL,NULL,5),('$2a$10$jbh/nfxvQd.38I/7xjoPG..ouy5IEBHx/IXXKeDJRB7gyeLIXYgzS',NULL,NULL,6),('$2a$10$q.Az8ugqSV/pIJJUFL6zsuKNeOyRqkJ5VwETX5qgTrw87GFkJe.oa',NULL,NULL,7),('$2a$10$.2F7VAwc1coUEqApy0WKxOS3aa469IA/HS/5.55k9KSETXGNzHzc2',NULL,NULL,8),('$2a$10$N/pEeFf09M4JleRr7nWoqOgFE9BJ9CrCqmMwD6WVA0PIq9sn7TKzO',NULL,NULL,9),('$2a$10$aaazJI39YqSX4E4IioZLyeij7PNVJOftflRoyR8cnEsJcnfiCEkJG','4492472ebff697897f79b90221eed62c92daf4ce',1576064194107,10),('$2a$10$1IOasn3XS80V49A4R5c3terXZ.U9cw6tnulwvpH0hojFRiLDOaiGS',NULL,NULL,11),('$2a$10$PRScebJjV45CCkn0E2x0.OCasH131Mbu1.K.o.6TO3.SnAZKpGXS2',NULL,NULL,12),('$2a$10$79/hpCUI3pe7w4uKqntdC.6uvxXPj3/pqxgrE5Q8QRp7mFeeOeHeG',NULL,NULL,13),('$2a$10$AjfyBato1aDfZmRVQky24.6xHspwxmDg0OuauTlU2QE6.W/0.Nfj6',NULL,NULL,14),('$2a$10$dyJeMvCcwfFLs0T0z2aXSeQPVkXzltQhA5zzFzUUEAddjG.5bvwUW',NULL,NULL,15),('$2a$10$.B64LLuZjih.N7mIiECfrOJreHS2wl/Tuq8Y3dQBR0Ibo7Qiyu46G',NULL,NULL,16),('$2a$10$jGcRXSLA0l4cOb7Y1/c6Wehml/8O3b9J17zJbfQLfv6PCOQF3/rYq',NULL,NULL,18),('$2a$10$JIMQ7fHiQWpbEijzvViVMeSFcprSFNjQFdfPjtgZCEGtOHv.NTL/i',NULL,NULL,19);
/*!40000 ALTER TABLE `credential` ENABLE KEYS */;
UNLOCK TABLES;
--
-- Table structure for table `role`
--
DROP TABLE IF EXISTS `role`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `role` (
`id` int(11) NOT NULL,
`name` varchar(45) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Dumping data for table `role`
--
LOCK TABLES `role` WRITE;
/*!40000 ALTER TABLE `role` DISABLE KEYS */;
INSERT INTO `role` VALUES (1,'ADMIN'),(2,'USER');
/*!40000 ALTER TABLE `role` ENABLE KEYS */;
UNLOCK TABLES;
--
-- Table structure for table `user`
--
DROP TABLE IF EXISTS `user`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`active` varchar(45) NOT NULL DEFAULT '1',
`email` varchar(45) NOT NULL,
`title` varchar(45) NOT NULL,
`firstname` varchar(45) NOT NULL,
`lastname` varchar(45) NOT NULL,
`industry` varchar(45) DEFAULT NULL,
`organisation` varchar(45) DEFAULT NULL,
`speciality` varchar(100) DEFAULT NULL,
`createdDate` date NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=20 DEFAULT CHARSET=latin1;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Dumping data for table `user`
--
LOCK TABLES `user` WRITE;
/*!40000 ALTER TABLE `user` DISABLE KEYS */;
INSERT INTO `user` VALUES (1,'1','testi@testmann.de','Herr','Testi','Testmann','testing','HFT Stuttgart','test-driven testing','2019-12-11'),(2,'1','test@email.de','Frau','Test','Lastname','','','','2019-12-11'),(3,'1','christine.kraus@hft-stuttgart.de','Frau','Christine','Kraus','Bildung','HFT','Innovationslabor M4_LAB','2019-12-11'),(4,'1','volker.coors@hft-stuttgart.de','Prof. Dr.','Volker','Coors','Bildung','HfT Stuttgart','3D-Geodateninfrastrukturen, Visualisierung raumbezogener Daten','2019-12-11'),(5,'1','uta.bronner@hft-stuttgart.de','Prof. Dr.','Uta','Bronner','Bildung','HfT Stuttgart','Human Resources Management','2019-12-11'),(6,'1','michael.bossert@hft-stuttgart.de','Herr','Michael','Bossert','Bildung','HfT Stuttgart','m4_lab','2019-12-11'),(7,'1','patrick.wuerstle@hft-stuttgart.de','Herr','Patrick','Würstle','Bildung','HfT Stuttgart','Geoinformatik','2019-12-11'),(8,'1','thunyathep.santhanavanich@hft-stuttgart.de','Herr','Joe Thunyathep','Santhanavanich','Bildung','HfT Stuttgart','Geoinformatik','2019-12-11'),(9,'1','janto.skowronek@hft-stuttgart.de','Herr','Janto','Skowronek','','','','2019-12-11'),(10,'1','wolfgang.knopki@hft-stuttgart.de','Herr','Wolfgang','Knopki','Bildung','HfT Stuttgart','Administration','2019-12-11'),(11,'1','muddsairsharif@gmail.com','Herr','Muddsair','Sharif','','','','2019-12-11'),(12,'1','hans.mueller@hft-stuttgart.de','Herr','hans','Müller','Bildung','HfT Stuttgart','keines','2019-12-11'),(13,'1','rosanny.sihombing@hft-stuttgart.de','Frau','Rosanny','Sihombing','','','','2019-12-11'),(14,'1','82shhi1mst@hft-stuttgart.de','Frau','Himanshi','Sharma','Software Technology','HFT','','2019-12-11'),(15,'1','hft_gitlab@ericduminil.com','Herr','Eric','Duminil','zafh.net','HfT Stuttgart','urbane simulation','2019-12-11'),(16,'1','volker.coors@arcor.de','Prof. Dr.','Volker','Coors','','Herr','','2019-12-11'),(18,'1','matthias.betz@hft-stuttgart.de','Herr','Matthias','Betz','','HFT','','2019-12-11'),(19,'1','mail@khbrassel.de','Herr','Kai-Holger','Brassel','','','','2019-12-11');
/*!40000 ALTER TABLE `user` ENABLE KEYS */;
UNLOCK TABLES;
--
-- Table structure for table `user_groups`
--
DROP TABLE IF EXISTS `user_groups`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `user_groups` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`groups_string` longtext,
`user_id` int(11) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `user_id` (`user_id`),
CONSTRAINT `user_groups_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `user` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=latin1;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Dumping data for table `user_groups`
--
LOCK TABLES `user_groups` WRITE;
/*!40000 ALTER TABLE `user_groups` DISABLE KEYS */;
INSERT INTO `user_groups` VALUES (1,'jira-software-users,confluence-users,jira-administrators,confluence-administrators',10),(2,'jira-software-users,confluence-users',9),(3,'jira-software-users,confluence-users',1);
/*!40000 ALTER TABLE `user_groups` ENABLE KEYS */;
UNLOCK TABLES;
--
-- Table structure for table `user_project_role`
--
DROP TABLE IF EXISTS `user_project_role`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `user_project_role` (
`project_id` int(11) NOT NULL,
`user_id` int(11) NOT NULL,
`role_id` int(11) NOT NULL,
PRIMARY KEY (`user_id`,`role_id`),
KEY `fk_user_project_role_role1_idx` (`role_id`),
CONSTRAINT `fk_user_project_role_role1` FOREIGN KEY (`role_id`) REFERENCES `role` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION,
CONSTRAINT `fk_user_project_role_user1` FOREIGN KEY (`user_id`) REFERENCES `user` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Dumping data for table `user_project_role`
--
LOCK TABLES `user_project_role` WRITE;
/*!40000 ALTER TABLE `user_project_role` DISABLE KEYS */;
INSERT INTO `user_project_role` VALUES (1,1,1),(1,2,2),(1,3,2),(1,4,2),(1,5,2),(1,6,2),(1,7,2),(1,8,2),(1,9,2),(1,10,2),(1,11,2),(1,12,2),(1,13,2),(1,14,2),(1,15,2),(1,16,2),(1,18,2),(1,19,2);
/*!40000 ALTER TABLE `user_project_role` ENABLE KEYS */;
UNLOCK TABLES;
--
-- Dumping routines for database 'userdb'
--
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
-- Dump completed on 2019-12-12 10:24:07
-- MySQL dump 10.13 Distrib 8.0.15, for Win64 (x86_64)
--
-- Host: localhost Database: userdb
-- ------------------------------------------------------
-- Server version 8.0.15
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
SET NAMES utf8 ;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
--
-- Table structure for table `role`
--
DROP TABLE IF EXISTS `role`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
SET character_set_client = utf8mb4 ;
CREATE TABLE `role` (
`id` int(11) NOT NULL,
`name` varchar(45) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
/*!40101 SET character_set_client = @saved_cs_client */;
--
-- Dumping data for table `role`
--
LOCK TABLES `role` WRITE;
/*!40000 ALTER TABLE `role` DISABLE KEYS */;
INSERT INTO `role` VALUES (1,'ADMIN'),(2,'USER'),(3,'OVERVIEW_CREATOR');
/*!40000 ALTER TABLE `role` ENABLE KEYS */;
UNLOCK TABLES;
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
-- Dump completed on 2020-03-19 9:21:39
......@@ -7,13 +7,13 @@ module.exports = function (app) {
app.get('/api/v1/profile', function (req, res) {
if (req.isAuthenticated()) {
// read data based on ID
dbconn.user.query('SELECT title, firstname, lastname, email, industry, organisation, speciality FROM user WHERE email="'+req.user.email+'"', function (err, rows, fields) {
// read data based on email
dbconn.user.query('SELECT * FROM user WHERE email="'+req.user.email+'"', function (err, rows, fields) {
if (err) throw err
res.send(rows[0])
})
} else {
res.redirect('/account/');
res.send('authentication required');
}
});
......
......@@ -132,6 +132,12 @@ var methods = {
callback(rows, err);
});
},
addUserProjectRole: function(data, callback) {
dbconn.user.query('INSERT INTO user_project_role SET ?', data, function (err, results, fields){
if (err) throw err;
callback(err);
})
},
// ======================= project db =======================
getAllProjects: function(callback) {
dbconn.project.query('CALL getAllprojects', function (err, rows, fields){
......@@ -146,9 +152,10 @@ var methods = {
})
},
addProjectOverview: function(data, callback) {
dbconn.project.query('INSERT INTO project_overview SET ?', data, function (err, rows, fields){
dbconn.project.query('INSERT INTO project_overview SET ?', data, function (err, results, fields){
if (err) throw err;
callback(err);
//console.log(results.insertId)
callback(results.insertId, err);
})
}
};
......
......@@ -9,7 +9,7 @@ const salt = 64; // salt length
// forgot pwd
const async = require('async')
const crypto = require('crypto')
const mailer = require('./mailer')
const nodemailer = require('nodemailer')
module.exports = function (app, config, passport, i18n) {
......@@ -74,17 +74,28 @@ module.exports = function (app, config, passport, i18n) {
res.status(200).send(spMetadata);
}
);
// ================ test i18n ==================
i18n.setLocale('de');
app.get('/de', function(req, res) {
var greeting = i18n.__('Hello World')
res.send(greeting)
// ======== NODEMAILER ====================
var smtpTransport = nodemailer.createTransport({
host: config.mailer.host,
secureConnection: config.mailer.secureConnection,
port: config.mailer.port,
auth: {
user: config.mailer.authUser,
pass: config.mailer.authPass
},
tls: {
ciphers: config.mailer.tlsCiphers
}
});
var lang = 'DE'
var mailOptions = {
to: "",
from: config.mailer.from,
subject: "",
text: ""
};
// ======== 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"+
......@@ -93,7 +104,17 @@ module.exports = function (app, config, passport, i18n) {
"m4lab@hft-stuttgart.de\n"+
"https://transfer.hft-stuttgart.de"
var updatePasswordMailContent = "Lieber Nutzer,\n\n"+"Ihr Passwort wurde erfolgreich geändert.\n\n"+mailSignature
// ================ test i18n ==================
i18n.setLocale('de');
app.get('/de', function(req, res) {
var greeting = i18n.__('Hello World')
res.send(greeting)
});
var lang = 'DE'
// ======== APP ROUTES - ACCOUNT ====================
app.get('/', function (req, res) {
if (req.isAuthenticated()) {
methods.getUserByEmail(req.user.email, function(data, err){
......@@ -124,7 +145,7 @@ module.exports = function (app, config, passport, i18n) {
if (req.user == null) {
return res.redirect('/account/');
}
req.user.nameID = req.user.id;
req.user.nameIDFormat = req.user.idFormat;
return samlStrategy.logout(req, function(err, uri) {
......@@ -311,11 +332,11 @@ module.exports = function (app, config, passport, i18n) {
else {
//req.flash('success', "Pasword updated!")
req.flash('success', "Passwort aktualisiert!")
mailer.options.to = req.user.email
mailOptions.to = req.user.email
//mailOptions.subject = "Your M4_LAB Password has been updated."
mailer.options.subject = updatePasswordMailSubject
mailer.options.text = updatePasswordMailContent
mailer.transport.sendMail(mailer.options, function(err) {
mailOptions.subject = updatePasswordMailSubject
mailOptions.text = updatePasswordMailContent
smtpTransport.sendMail(mailOptions, function(err) {
if (err) {
console.log(err)
}
......@@ -386,10 +407,10 @@ module.exports = function (app, config, passport, i18n) {
});
// send email
mailer.options.to = emailAddress;
mailer.options.subject = emailSubject;
mailer.options.text = emailContent;
mailer.transport.sendMail(mailer.options, function(err) {
mailOptions.to = emailAddress;
mailOptions.subject = emailSubject;
mailOptions.text = emailContent;
smtpTransport.sendMail(mailOptions, function(err) {
done(err, 'done');
});
}
......@@ -449,10 +470,10 @@ module.exports = function (app, config, passport, i18n) {
//req.flash('success', "Your pasword has been updated.")
req.flash('success', "Passwort aktualisiert!")
// send notifiaction email
mailer.options.to = user.email
mailer.options.subject = updatePasswordMailSubject
mailer.options.text = updatePasswordMailContent
mailer.transport.sendMail(mailer.options, function(err) {
mailOptions.to = user.email
mailOptions.subject = updatePasswordMailSubject
mailOptions.text = updatePasswordMailContent
smtpTransport.sendMail(mailOptions, function(err) {
if (err) {
console.log(err)
}
......@@ -530,5 +551,146 @@ module.exports = function (app, config, passport, i18n) {
}
})
})
app.get('/mailinglists', function (req, res) {
async.waterfall([
function(done) {
methods.getAllMailinglists(function(mailinglistOverview, err) {
if (!err) {
done(err, mailinglistOverview)
}
})
},
// create JSON object of mailinglists for front-end
function(mailinglistOverview, done) {
var allMailingLists = [] // JSON object
for (let i = 0; i < mailinglistOverview.length; i++) {
// add data to JSON object
allMailingLists.push({
id: mailinglistOverview[i].id,
name: mailinglistOverview[i].name,
src: mailinglistOverview[i].src,
projectstatus: mailinglistOverview[i].projectstatus,
project_title: mailinglistOverview[i].project_title
});
}
res.render(lang+'/mailinglists', {
isUserAuthenticated: req.isAuthenticated(),
user: req.user,
mailinglists: allMailingLists
});
}
])
});
// ======== APP ROUTES - PROJECT ====================
app.get('/project', function (req, res) {
async.waterfall([
// get all projects from projectdb
function(done) {
methods.getAllProjects(function(projectsOverview, err) {
if (!err) {
done(err, projectsOverview)
}
})
},
// create JSON object for front-end
function(projectsOverview, done) {
var activeProjects = []
var nonActiveProjects = []
for (var i = 0; i < projectsOverview.length; i++) {
var project = {
id: projectsOverview[i].id,
logo: projectsOverview[i].logo,
akronym: projectsOverview[i].pname,
title: projectsOverview[i].title,
summary: projectsOverview[i].onelinesummary,
category: projectsOverview[i].category,
cp: projectsOverview[i].contact_email,
gitlab: projectsOverview[i].gitlab
}
if (projectsOverview[i].projectstatus == 0) {
nonActiveProjects.push(project)
}
else if (projectsOverview[i].projectstatus == 1) {
activeProjects.push(project)
}
}
// render the page
if (req.isAuthenticated()) {
res.render(lang+'/project/projects', {
isUserAuthenticated: true,
nonActive: nonActiveProjects,
active: activeProjects
});
}
else {
res.render(lang+'/project/projects', {
isUserAuthenticated: false,
nonActive: nonActiveProjects,
active: activeProjects
});
}
}
])
})
app.get('/addprojectoverview', function (req, res) {
if (req.isAuthenticated()) {
res.render(lang+'/project/addProjectOverview')
}
else {
res.redirect('/account/login')
}
})
app.post('/addprojectoverview', function (req, res) {
if (req.isAuthenticated()) {
var wiki = 0
if (req.body.wiki)
wiki = 1
var projectOverviewData = {
pname: req.body.pname,
title: req.body.title,
onelinesummary: req.body.summary,
category: req.body.category,
logo: req.body.logo,
gitlab: req.body.gitlabURL,
wiki: wiki,
overview: req.body.overview,
question: req.body.question,
approach: req.body.approach,
result: req.body.result,
keywords: req.body.keywords,
announcement: req.body.announcement,
term: req.body.term,
further_details: req.body.furtherDetails,
website: req.body.website,
src: req.body.src,
caption: req.body.caption,
contact_firstname: req.body.contactFirstname,
contact_lastname: req.body.contactLastname,
contact_email: req.body.contactEmail,
leader_firstname: req.body.leaderFirstname,
leader_lastname: req.body.leaderLastname,
leader_email: req.body.leaderEmail
}
methods.addProjectOverview(projectOverviewData, function(err){
if (err) {
//req.flash('error', "Failed")
req.flash('error', "Fehlgeschlagen")
res.redirect('/account/addProjectOverview');
}
else {
req.flash('success', 'Your project has been created.')
res.redirect('/account/project');
}
})
}
})
};
\ No newline at end of file
......@@ -146,6 +146,83 @@ module.exports = function (app) {
}
})
app.post('/addprojectoverview', function (req, res) {
if (req.isAuthenticated()) {
var wiki = 0
if (req.body.wiki)
wiki = 1
var projectTerm = req.body.termForm + " - " + req.body.termTo
var projectOverviewData = {
pname: req.body.pname,
title: req.body.title,
onelinesummary: req.body.summary,
category: req.body.category,
logo: req.body.logo,
gitlab: req.body.gitlabURL,
wiki: wiki,
overview: req.body.overview,
question: req.body.question,
approach: req.body.approach,
result: req.body.result,
keywords: req.body.keywords,
announcement: req.body.announcement,
term: projectTerm,
further_details: req.body.furtherDetails,
website: req.body.website,
src: req.body.src,
caption: req.body.caption,
contact_lastname: req.body.contactName,
contact_email: req.body.contactEmail,
leader_lastname: req.body.leaderName,
leader_email: req.body.leaderEmail
}
/* RS: Temporary solution while Project DB is still in early phase.
When User DB and Project DB are integrated and quite stabil, this operation should be done in 1 transaction.
*/
var userId // todo: make this global variable?
async.waterfall([
// get userId by email from userdb
function(done) {
methods.getUserIdByEmail(req.user.email, function(id, err) {
if (!err) {
userId = id
done(err)
}
})
},
// add project overview
function(done) {
methods.addProjectOverview(projectOverviewData, function(projectOverviewId, err){
if (!err) {
done(err, projectOverviewId)
}
})
},
// assign the created overview to logged-in user
function(projectOverviewId, done) {
var userProjectRoleData = {
project_id: projectOverviewId,
user_id: userId,
role_id: 3 // OVERVIEW_CREATOR
}
methods.addUserProjectRole(userProjectRoleData, function(userProjects, err) {
if (err) {
//req.flash('error', "Failed")
req.flash('error', "Fehlgeschlagen")
res.redirect('/addProjectOverview');
}
else {
req.flash('success', 'Your project has been created.')
res.redirect('/project');
}
})
}
])
}
})
app.get('/updateprojectoverview', function (req, res) {
// only their own project
})
......
......@@ -34,9 +34,9 @@ html(lang="de")
h5
span #{user.firstname} #{user.lastname}
div(class="nav flex-column nav-pills", id="v-pills-tab", role="tablist", aria-orientation="vertical")
a(class="nav-link" href="/account/profile" aria-selected="true") Benutzerprofil
a(class="nav-link" href="/account/security" aria-selected="false") Sicherheitseinstellungen
a(class="nav-link" href="/account/services" aria-selected="false") Projekte und Dienste
a(class="nav-link" href="/profile" aria-selected="true") Benutzerprofil
a(class="nav-link" href="/security" aria-selected="false") Sicherheitseinstellungen
a(class="nav-link" href="/services" aria-selected="false") Projekte und Dienste
div(class="col-sm-9")
p content goes here
......
......@@ -35,8 +35,8 @@ html(lang="de")
span #{user.firstname} #{user.lastname}
div(class="nav flex-column nav-pills", id="v-pills-tab", role="tablist", aria-orientation="vertical")
a(class="nav-link" href="#" aria-selected="true") Benutzerprofil
a(class="nav-link" href="/account/security" aria-selected="false") Sicherheitseinstellungen
a(class="nav-link" href="/account/services" aria-selected="false") Projekte und Dienste
a(class="nav-link" href="/security" aria-selected="false") Sicherheitseinstellungen
a(class="nav-link" href="/services" aria-selected="false") Projekte und Dienste
div(class="col-sm-9")
if successes
for success in successes
......
......@@ -49,10 +49,10 @@ html(lang="de")
h5(class="mb-3 font-weight-bold") Anmeldedaten
div(class='form-row')
div(class='form-group col-md-6')
input#inputEmail(name="inputEmail", type="email", class="form-control", placeholder="E-Mail-Adresse*" required)
input#inputEmail(name="inputEmail", type="email", class="form-control", placeholder="E-Mail-Adresse*", maxlength="45" required)
span#emailWarning(class='warning')
div(class="form-group col-md-6")
input#inputPassword(name="inputPassword", type="password", class="form-control", data-toggle="password", placeholder="Passwort*" required)
input#inputPassword(name="inputPassword", type="password", class="form-control", data-toggle="password", placeholder="Passwort*", maxlength="45" required)
span#passwordWarning(class='warning')
h5(class="mb-3 font-weight-bold") Benutzerprofil
div(class="form-row")
......@@ -70,15 +70,15 @@ html(lang="de")
option(value="Dipl.-Ing.") Dipl.-Ing.
option(value="etc.") etc.
div(class='form-group col-md-4')
input#inputFirstname(name="inputFirstname", type="text", class="form-control", placeholder="Vorname*" required)
input#inputFirstname(name="inputFirstname", type="text", class="form-control", placeholder="Vorname*", maxlength="45" required)
div(class='form-group col-md-4')
input#inputLastname(name="inputLastname", type="text", class="form-control", placeholder="Nachname*" required)
input#inputLastname(name="inputLastname", type="text", class="form-control", placeholder="Nachname*", maxlength="45" required)
div(class="form-group")
input#inputOrganisation(name="inputOrganisation", type="text", class="form-control", placeholder="Unternehmen")
input#inputOrganisation(name="inputOrganisation", type="text", class="form-control", placeholder="Unternehmen", maxlength="45")
div(class="form-group")
input#inputIndustry(name="inputIndustry", type="text", class="form-control", placeholder="Branche")
input#inputIndustry(name="inputIndustry", type="text", class="form-control", placeholder="Branche", maxlength="45")
div(class="form-group")
input#inputSpeciality(name="inputSpeciality", type="text", class="form-control", placeholder="Fachgebiete")
input#inputSpeciality(name="inputSpeciality", type="text", class="form-control", placeholder="Fachgebiete", maxlength="100")
p <em><small>* Pflichtfeld</small></em>
input#submitBtn(type="submit", class="btn btn-outline-dark btn-block", value="Senden" disabled)
br
......
......@@ -37,9 +37,9 @@ html(lang="de")
h5
span #{user.firstName} #{user.lastName}
div(class="nav flex-column nav-pills", id="v-pills-tab", role="tablist", aria-orientation="vertical")
a(class="nav-link" href="/account/profile" aria-selected="true") Benutzerprofil
a(class="nav-link" href="/profile" aria-selected="true") Benutzerprofil
a(class="nav-link" href="#" aria-selected="false") Sicherheitseinstellungen
a(class="nav-link" href="/account/services" aria-selected="false") Projekte und Dienste
a(class="nav-link" href="/services" aria-selected="false") Projekte und Dienste
div(class="col-sm-9")
if successes
for success in successes
......
......@@ -34,8 +34,8 @@ html(lang="de")
h5
span #{user.firstName} #{user.lastName}
div(class="nav flex-column nav-pills", id="v-pills-tab", role="tablist", aria-orientation="vertical")
a(class="nav-link" href="/account/profile" aria-selected="true") Benutzerprofil
a(class="nav-link" href="/account/security" aria-selected="false") Sicherheitseinstellungen
a(class="nav-link" href="/profile" aria-selected="true") Benutzerprofil
a(class="nav-link" href="/security" aria-selected="false") Sicherheitseinstellungen
a(class="nav-link" href="#" aria-selected="false") Projekte und Dienste
div(class="col-sm-9")
if successes
......
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