From 3bfcbafc84312e5dabf3818ed8502fecd4938e55 Mon Sep 17 00:00:00 2001
From: Rosanny <rosanny.sihombing@hft-stuttgart.de>
Date: Tue, 26 May 2020 10:09:10 +0200
Subject: [PATCH 01/13] Separate development and testing configuration

---
 app.js           |  2 +-
 config/config.js | 41 +++++++++++++++++++++++++++++++++++++----
 routes/dbconn.js |  2 +-
 routes/mailer.js |  2 +-
 4 files changed, 40 insertions(+), 7 deletions(-)

diff --git a/app.js b/app.js
index 68d3e944..3e4b3a6f 100644
--- a/app.js
+++ b/app.js
@@ -16,7 +16,7 @@ i18n.configure({
   directory: './locales'
 });
 
-var env = process.env.NODE_ENV || 'development';
+var env = process.env.NODE_ENV || 'testing';
 const config = require('./config/config')[env];
 
 var app = express();
diff --git a/config/config.js b/config/config.js
index b4c47761..201291a1 100644
--- a/config/config.js
+++ b/config/config.js
@@ -2,14 +2,48 @@ module.exports = {
   development: {
     app: {
       name: 'User Account Management',
-      port: process.env.PORT || 9989
+      port: process.env.PORT || 9989,
+      host: 'http://localhost:9989'
+    },
+    passport: {
+      strategy: 'saml',
+      saml: {
+        path: process.env.SAML_PATH || '/saml/SSO',
+        entryPoint: process.env.SAML_ENTRY_POINT || 'https://m4lab.hft-stuttgart.de/idp/saml2/idp/SSOService.php',
+        issuer: 'sp-account.m4lab.hft-stuttgart.de', //local metadata
+        logoutUrl: 'https://m4lab.hft-stuttgart.de/idp/saml2/idp/SingleLogoutService.php'
+      }
+    },
+    database: {
+      host: 'localhost',      	  // DB host
+      user: 'DBManager',          // DB username
+      password: 'Stuttgart2019',  // DB password
+      port: 3306,                 // MySQL port
+      dbUser: 'userdb',           // User DB
+      host_project: 'localhost', // DB host project db
+      dbProject: 'projectDB'     // Project DB
+    },
+    mailer: {
+      host: 'mail.hft-stuttgart.de',  // hostname
+      secureConnection: false,        // TLS requires secureConnection to be false
+      port: 587,                      // port for secure SMTP
+      authUser: 'ad\\support-transfer',
+      authPass: '6laumri2',
+      tlsCiphers: 'SSLv3',
+      from: 'support-transfer@hft-stuttgart.de',
+    }
+  },
+  testing: {
+    app: {
+      name: 'User Account Management',
+      port: process.env.PORT || 9989,
+      host: 'https://m4lab.hft-stuttgart.de/account'
     },
     passport: {
       strategy: 'saml',
       saml: {
         path: process.env.SAML_PATH || '/saml/SSO',
         entryPoint: process.env.SAML_ENTRY_POINT || 'https://m4lab.hft-stuttgart.de/idp/saml2/idp/SSOService.php',
-        //issuer: 'sp-account.m4lab.hft-stuttgart.de', //local metadata
         issuer: 'sp-account-testing.m4lab.hft-stuttgart.de', //testing metadata
         //issuer: 'sp-account-prod.m4lab.hft-stuttgart.de', //production metadata
         logoutUrl: 'https://m4lab.hft-stuttgart.de/idp/saml2/idp/SingleLogoutService.php'
@@ -22,7 +56,6 @@ module.exports = {
       port: 3306,                 // MySQL port
       dbUser: 'userdb',           // User DB
       host_project: 'm4lab.hft-stuttgart.de', // DB host project db
-      //host_project: 'localhost', // local
       dbProject: 'projectDB'     // Project DB
     },
     mailer: {
@@ -35,4 +68,4 @@ module.exports = {
       from: 'support-transfer@hft-stuttgart.de',
     }
   }
-}
+}
\ No newline at end of file
diff --git a/routes/dbconn.js b/routes/dbconn.js
index 834eb1aa..a39f7368 100644
--- a/routes/dbconn.js
+++ b/routes/dbconn.js
@@ -1,6 +1,6 @@
 const mysql = require('mysql')
 
-var env = process.env.NODE_ENV || 'development';
+var env = process.env.NODE_ENV || 'testing';
 const config = require('../config/config')[env]
 
 // ==== USER ACOOUNT DB CONNECTION ====
diff --git a/routes/mailer.js b/routes/mailer.js
index 510b5bb1..2c51bd7d 100644
--- a/routes/mailer.js
+++ b/routes/mailer.js
@@ -1,6 +1,6 @@
 const nodemailer = require('nodemailer')
 
-var env = process.env.NODE_ENV || 'development';
+var env = process.env.NODE_ENV || 'testing';
 const config = require('../config/config')[env]
 
 var smtpTransport = nodemailer.createTransport({
-- 
GitLab


From e7931881df484091d562e0dcd8e978d8ce530263 Mon Sep 17 00:00:00 2001
From: Rosanny <rosanny.sihombing@hft-stuttgart.de>
Date: Tue, 26 May 2020 13:45:25 +0200
Subject: [PATCH 02/13] MLAB-129: add user verification mechanism

---
 routes/methods.js                 | 102 +++++++++--
 routes/routes-account.js          | 291 ++++++++++++++++++++++--------
 views/DE/account/home.pug         |  90 ++++++---
 views/DE/account/profile.pug      |  18 +-
 views/DE/account/registration.pug |  22 +--
 views/DE/account/security.pug     |  18 +-
 views/DE/account/services.pug     |  16 +-
 views/DE/account/verification.pug |  35 ++++
 8 files changed, 415 insertions(+), 177 deletions(-)
 create mode 100644 views/DE/account/verification.pug

diff --git a/routes/methods.js b/routes/methods.js
index 9864273b..2ba550d3 100644
--- a/routes/methods.js
+++ b/routes/methods.js
@@ -42,14 +42,26 @@ var methods = {
                                 throw err
                             });
                         }
-                        // COMMIT
-                        dbconn.user.commit(function(err) {
+                        // MLAB-129: INSERT verification token
+                        let verificationData = {
+                            user_id: newUserId,
+                            token: data.verificationToken
+                        }
+                        dbconn.user.query('INSERT INTO verification SET ?', verificationData, function (err, results, fields) {
                             if (err) {
                                 return dbconn.user.rollback(function() {
                                     throw err
                                 });
                             }
-                        });
+                            // COMMIT
+                            dbconn.user.commit(function(err) {
+                                if (err) {
+                                    return dbconn.user.rollback(function() {
+                                        throw err
+                                    })
+                                }
+                            })
+                        })
                     })
                 });
             });
@@ -57,7 +69,7 @@ var methods = {
         })
     },
     getUserByEmail: function(email, callback) {
-        dbconn.user.query('SELECT salutation, title, firstname, lastname, industry, organisation, speciality FROM user WHERE email = "' +email+'"', function (err, rows, fields) {
+        dbconn.user.query('SELECT verificationStatus, salutation, title, firstname, lastname, industry, organisation, speciality FROM user WHERE email = "' +email+'"', function (err, rows, fields) {
             if (err) {
                 throw err;
             }
@@ -70,7 +82,7 @@ var methods = {
         });
     },
 	checkUserEmail: function(email, callback) {
-        var user;
+        let user
         dbconn.user.query('SELECT id, email FROM user WHERE email = "' +email+'"', function (err, rows, fields) {
             if (err) {
                 throw err;
@@ -84,7 +96,7 @@ var methods = {
         });
     },
     getUserByToken: function(token, callback) {
-        var user;
+        let user
         dbconn.user.query('SELECT t1.user_id, t2.email FROM userdb.credential AS t1 INNER JOIN userdb.user AS t2 ON t1.user_id = t2.id AND t1.resetPasswordToken = "'
             +token+'" and resetPasswordExpires > '+Date.now(), function (err, rows, fields) {
                 if (err) {
@@ -100,42 +112,92 @@ var methods = {
             }
         );
     },
-	updateUser: function(userData, callback) {
-		dbconn.user.query('UPDATE user SET ? WHERE email = "' +userData.email+'"', userData, function (err, rows, fields) {
-            if (err) throw err;
-            callback(err);
+	updateUserById: function(userData, callback) {
+		dbconn.user.query('UPDATE user SET ? WHERE id = ' +userData.id, userData, function (err, rows, fields) {
+            if (err) throw err
+            callback(err)
         })
     },
     updateCredential: function(data, callback) {
         dbconn.user.query('UPDATE credential SET ? WHERE user_id = ' +data.user_id, data, function (err, rows, fields) {
-            if (err) throw err;
-            callback(err);
+            if (err) throw err
+            callback(err)
         })
     },
     getUserIdByEmail: function(email, callback) {
-        var userId
+        let userId
         dbconn.user.query('SELECT id FROM user WHERE email = "' +email+'"', function (err, rows, fields) {
             if (err) {
-                throw err;
+                throw err
             }
             else {
                 if ( rows.length > 0) {
-                    userId = rows[0].id;
+                    userId = rows[0].id
                 }
             }
-            callback(userId, err);
+            callback(userId, err)
         });
     },
     getUserProjectRole: function(userId, callback) {
         dbconn.user.query('SELECT project_id, role_id FROM user_project_role WHERE user_id = "' +userId+'"', function (err, rows, fields) {
-            if (err) throw err;
-            callback(rows, err);
+            if (err) throw err
+            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);
+            if (err) throw err
+            callback(err)
+        })
+    },
+    getVerificationTokenByUserId: function(userId, callback) {
+        let token
+        dbconn.user.query('SELECT token FROM verification WHERE user_id = "' +userId+'"', function (err, rows, fields) {
+            if (err) {
+                throw err
+            }
+            else {
+                if (rows.length > 0) {
+                    token = rows[0].token
+                }
+            }
+            callback(token, err)
+        })
+    },
+    getUserIdByVerificationToken: function(token, callback) {
+        let userId
+        dbconn.user.query('SELECT user_id FROM verification WHERE token = "' +token+'"', function (err, rows, fields) {
+            if (err) {
+                throw err
+            }
+            else if(rows[0]) {
+                userId = rows[0].user_id
+            }
+            callback(userId, err)
+        })
+    },
+    verifyUserAccount: function(userData, callback) {
+        dbconn.user.beginTransaction(function(err) { // START TRANSACTION
+            if (err) { throw err }
+            // update user status
+            dbconn.user.query('UPDATE user SET ? WHERE id =' +userData.id, userData, function (err, rows, fields) {
+                if (err) {
+                    return dbconn.user.rollback(function() { throw err })
+                }
+                // delete verification token
+                dbconn.user.query('DELETE FROM verification WHERE user_id = '+userData.id, function (err, rows, fields) {
+                    if (err) {
+                        return dbconn.user.rollback(function() { throw err })
+                    }
+                    // COMMIT
+                    dbconn.user.commit(function(err) {
+                        if (err) {
+                            return dbconn.user.rollback(function() { throw err })
+                        }
+                    })
+                })
+            })
+            callback(err)
         })
     },
     // ======================= project db =======================
diff --git a/routes/routes-account.js b/routes/routes-account.js
index 43394cac..fa97820f 100644
--- a/routes/routes-account.js
+++ b/routes/routes-account.js
@@ -142,10 +142,18 @@ module.exports = function (app, config, passport, i18n) {
     if (req.isAuthenticated()) {
       methods.getUserByEmail(req.user.email, function(data, err){
         if (!err) {
-          res.render(lang+'/account/profile', {
-            user: data,
-            email: req.user.email
-          });
+          if (data.verificationStatus == 1) {
+            console.log(data)
+            res.render(lang+'/account/profile', {
+              user: data,
+              email: req.user.email
+            })
+          }
+          else {
+            res.render(lang+'/account/home', {
+              user: data
+            });
+          }
         }
       })
     } else {
@@ -155,63 +163,74 @@ module.exports = function (app, config, passport, i18n) {
 
   app.get('/services', function (req, res) {
     if (req.isAuthenticated()) {
-      async.waterfall([
-        // get userId by email from userdb
-        function(done) {
-          methods.getUserIdByEmail(req.user.email, function(userId, err) {
-            if (!err) {
-              done(err, userId)
-            }
-          })
-        },
-        // get user-project-role from userdb
-        function(userId, done) {
-          methods.getUserProjectRole(userId, function(userProjects, err) {
-            if (!err) {
-              done(err, userProjects)
-            }
-          })
-        },
-        // get all projects from projectdb
-        function(userProjects, done) {
-          methods.getAllProjects(function(projectsOverview, err) {
-            if (!err) {
-              done(err, userProjects, projectsOverview)
-            }
-          })
-        },
-        // create JSON object of projects and user status for front-end
-        function(userProjects, projectsOverview, done) {
-          var allProjects = []  // JSON object
-
-          var userProjectId = []  // array of user's project_id
-          for (var i = 0; i < userProjects.length; i++) {
-            userProjectId.push(userProjects[i].project_id)
+      methods.getUserByEmail(req.user.email, function(data, err){
+        if (!err) {
+          if (data.verificationStatus == 1) {
+            async.waterfall([
+              // get userId by email from userdb
+              function(done) {
+                methods.getUserIdByEmail(req.user.email, function(userId, err) {
+                  if (!err) {
+                    done(err, userId)
+                  }
+                })
+              },
+              // get user-project-role from userdb
+              function(userId, done) {
+                methods.getUserProjectRole(userId, function(userProjects, err) {
+                  if (!err) {
+                    done(err, userProjects)
+                  }
+                })
+              },
+              // get all projects from projectdb
+              function(userProjects, done) {
+                methods.getAllProjects(function(projectsOverview, err) {
+                  if (!err) {
+                    done(err, userProjects, projectsOverview)
+                  }
+                })
+              },
+              // create JSON object of projects and user status for front-end
+              function(userProjects, projectsOverview, done) {
+                var allProjects = []  // JSON object
+      
+                var userProjectId = []  // array of user's project_id
+                for (var i = 0; i < userProjects.length; i++) {
+                  userProjectId.push(userProjects[i].project_id)
+                }
+      
+                for (var i = 0; i < projectsOverview.length; i++) {
+                  // check if projectId is exist in userProjectId[]
+                  var status = false
+                  if (userProjectId.indexOf(projectsOverview[i].id) > -1) {
+                    status = true
+                  }
+                  // add data to JSON object
+                  allProjects.push({
+                    id: projectsOverview[i].id,
+                    title: projectsOverview[i].title,
+                    summary: projectsOverview[i].onelinesummary,
+                    cp: projectsOverview[i].contact_email,
+                    userStatus: status
+                  });
+                }
+      
+                // render the page
+                res.render(lang+'/account/services', {
+                  user: data,
+                  project: allProjects
+                });
+              }
+            ])
           }
-
-          for (var i = 0; i < projectsOverview.length; i++) {
-            // check if projectId is exist in userProjectId[]
-            var status = false
-            if (userProjectId.indexOf(projectsOverview[i].id) > -1) {
-              status = true
-            }
-            // add data to JSON object
-            allProjects.push({
-              id: projectsOverview[i].id,
-              title: projectsOverview[i].title,
-              summary: projectsOverview[i].onelinesummary,
-              cp: projectsOverview[i].contact_email,
-              userStatus: status
+          else {
+            res.render(lang+'/account/home', {
+              user: data
             });
           }
-
-          // render the page
-          res.render(lang+'/account/services', {
-            user: req.user,
-            project: allProjects
-          });
         }
-      ])
+      })
     } else {
       res.redirect('/login');
     }
@@ -219,9 +238,21 @@ module.exports = function (app, config, passport, i18n) {
 
   app.get('/security', function (req, res) {
     if (req.isAuthenticated()) {
-      res.render(lang+'/account/security', {
-        user: req.user // useful for view engine, useless for HTML
-      });
+      methods.getUserByEmail(req.user.email, function(data, err){
+        if (!err) {
+          if (data.verificationStatus == 1) {
+            console.log(data)
+            res.render(lang+'/account/security', {
+              user: data
+            })
+          }
+          else {
+            res.render(lang+'/account/home', {
+              user: data
+            });
+          }
+        }        
+      })
     } else {
       res.redirect('/login');
     }
@@ -474,16 +505,11 @@ module.exports = function (app, config, passport, i18n) {
 
   });
 
-  // todo: user registration with captcha
+  // ============= NEW USERS REGISTRATION ===========================
   app.get('/registration', function(req, res) {
     res.render(lang+'/account/registration')
   })
-
   app.post('/registration', function(req, res) {
-    // TODO:
-    // create gitlab account?
-    // send email to activate profile?
-
     // user data
     var curDate = new Date()
     var userData = {
@@ -497,27 +523,132 @@ module.exports = function (app, config, passport, i18n) {
       speciality: req.body.inputSpeciality,
       createdDate: curDate.toISOString().slice(0,10)
     }
-    // encrypt password
-    bcrypt.genSalt(saltRounds, function(err, salt) {
-      bcrypt.hash(req.body.inputPassword, salt, function(err, hash) {
-        // create account
-        var newAccount = {
-          profile: userData,
-          password: hash
-        }
+
+    let token
+    async.waterfall([
+      function(done) {
+        crypto.randomBytes(20, function(err, buf) {
+          token = buf.toString('hex');
+          done(err, token);
+        });
+      },
+      // encrypt password
+      function(token, done) {
+        bcrypt.genSalt(saltRounds, function(err, salt) {
+          bcrypt.hash(req.body.inputPassword, salt, function(err, hash) {
+            var newAccount = {
+              profile: userData,
+              password: hash,
+              verificationToken: token
+            }
+            done(err, newAccount)
+          });
+        });
+      },
+      // save data
+      function(newAccount, err) {
         methods.registerNewUser(newAccount, function(err){
           if (err) {
-            //req.flash('error', "Failed")
             req.flash('error', "Fehlgeschlagen")
           }
           else {
-            //req.flash('success', 'Your account has been created. Please log in.')
-            req.flash('success', 'Ihr Benutzerkonto wurde angelegt. Bitte melden Sie sich an.')
+            // send email
+            var emailSubject = "Bitte bestätigen Sie Ihr M4_LAB Benutzerkonto"
+            var emailContent = "Lieber Nutzer,\n\n"+
+                "vielen Dank für Ihre Anmeldung am Transferportal der HFT Stuttgart. "+ 
+                "\nUm Ihre Anmeldung zu bestätigen, klicken Sie bitte diesen Link: "+config.app.host+"/verifyAccount?token="+token+
+                "\n\nOhne Bestätigung Ihres Kontos müssen wir Ihr Konto leider nach 7 Tagen löschen.\n\n"+mailSignature
+            
+            mailer.options.to = req.body.inputEmail;
+            mailer.options.subject = emailSubject;
+            mailer.options.text = emailContent;
+            mailer.transport.sendMail(mailer.options, function(err) {
+              if (err) {
+                console.log('cannot send email')
+                throw err
+              }
+            })
+            // user feedback
+            req.flash('success', '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.\r\n \r\n'+
+              'Ohne Bestätigung Ihres Kontos müssen wir Ihr Konto leider nach 7 Tagen löschen.')
           }
-          res.redirect('/account/registration');
+          res.redirect('/account/registration')
         })
-      });
-    });
+      }
+    ])
+  })
+
+  // ============= USER VERIFICATION ================================
+  app.get("/verifyAccount", function(req, res){
+    methods.getUserIdByVerificationToken(req.query.token, function(userId, err){
+      console.log(err)
+      console.log(userId)
+      if (userId) {
+        let userData = {
+          id: userId,
+          verificationStatus: 1
+        }
+        methods.verifyUserAccount(userData, function(err){
+          if (err) {
+            console.log("Error: "+err)
+            res.render(lang+'/account/verification', {
+              status: false
+            });
+          }
+          else {
+            res.render(lang+'/account/verification', {
+              status: true
+            });
+          }
+        })
+      }
+      else {
+        res.render(lang+'/account/verification', {
+          status: null
+        });
+      }
+    })
+  })
+  app.get("/resendVerificationEmail", function(req, res){
+    if (req.isAuthenticated()) {
+      var emailAddress = req.user.email
+      
+      methods.getUserIdByEmail(req.user.email, function(userId, err) {
+        if (!err) {
+          // get token
+          methods.getVerificationTokenByUserId(userId, function(token, err){
+            if (!err) {
+              if (token) {
+                // send email
+                var emailSubject = "Bitte bestätigen Sie Ihr M4_LAB Benutzerkonto"
+                var emailContent = "Lieber Nutzer,\n\n"+
+                    "vielen Dank für Ihre Anmeldung am Transferportal der HFT Stuttgart. "+ 
+                    "\nUm Ihre Anmeldung zu bestätigen, klicken Sie bitte diesen Link: "+config.app.host+"/verifyAccount?token="+token+
+                    "\n\nOhne Bestätigung Ihres Kontos müssen wir Ihr Konto leider nach 7 Tagen löschen.\n\n"+mailSignature
+                
+                mailer.options.to = emailAddress;
+                mailer.options.subject = emailSubject;
+                mailer.options.text = emailContent;
+                mailer.transport.sendMail(mailer.options, function(err) {
+                  if (err) {
+                    console.log('cannot send email')
+                    throw err
+                  }
+                })
+                res.send(true)
+              }
+              else {
+                res.send(false)
+              }
+            }
+            else {
+              console.log(err)
+            }
+          })
+        }
+      })
+    }
   })
 
   app.get('/email/:email', function(req, res) {
diff --git a/views/DE/account/home.pug b/views/DE/account/home.pug
index fa11d3f7..cf284f1a 100644
--- a/views/DE/account/home.pug
+++ b/views/DE/account/home.pug
@@ -7,35 +7,44 @@ html(lang="de")
     link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap/bootstrap.css")
     link(rel="stylesheet", href="https://use.fontawesome.com/releases/v5.8.2/css/all.css", integrity="sha384-oS3vJWv+0UjzBfQzYUhtDYW+Pj2yciDJxpsK1OYPAYjqT085Qq/1cq5FLXAZQ7Ay", crossorigin="anonymous")
   body
-    div(class="container-fluid")
-        div(class="row min-vh-100 flex-column flex-md-row")
-            aside(class="col-12 col-md-2 p-0 flex-shrink-1")
-                nav(class="navbar navbar-expand flex-md-column flex-row align-items-start py-2")
-                    div(class="collapse navbar-collapse")
-                        ul(class="flex-md-column flex-row navbar-nav w-100 justify-content-between")
-                            li(class="nav-item")
-                                a(class="nav-link pl-0 text-nowrap" href="#")
-                                    span(class="font-weight-bold" style="color:black;") #{user.firstname} #{user.lastname}
-                            li(class="nav-item")
-                                a(class="nav-link pl-0" href="/account/profile")
-                                    i(class="fa fa-user fa-fw")
-                                    span(class="d-none d-md-inline") Benutzerprofil
-                            li(class="nav-item")
-                                a(class="nav-link pl-0" href="/account/security")
-                                    i(class="fa fa-lock fa-fw")
-                                    span(class="d-none d-md-inline") Sicherheitseinstellungen
-                            li(class="nav-item")
-                                a(class="nav-link pl-0" href="/account/services")
-                                    i(class="fa fa-tasks fa-fw")
-                                    span(class="d-none d-md-inline") Projekte und Dienste
-                            li(class="nav-item")
-                                a(class="nav-link pl-0" href="/logout")
-                                    i(class="fa fa-sign-out-alt fa-fw")
-                                    span(class="d-none d-md-inline") Logout
-            main(class="col bg-faded py-3 flex-grow-1")
-                p Willkommen im Benutzerkonto-Bereich des HFT Transferportals
-                p In diesem Bereich können Sie Ihr Benutzerkonto pflegen.<br/> Dazu finden Sie auf der linken Seite verschiedene Menüs.
-                p Bei Rückfragen kontaktieren Sie uns bitte unter: <a href="mailto:support-transfer@hft-stuttgart.de">support-transfer@hft-stuttgart.de</a>
+    div(class="container")
+        if user.verificationStatus == 0
+            div.alert.alert-warning.alert-dismissible
+                | Willkommen im Benutzerkonto-Bereich des HFT Transferportals
+                | <br/><br/>
+                | Wir haben Ihnen eine E-Mail an Ihre verwendete Adresse gesendet. Diese enthält einen Link zur Bestätigung Ihres Accounts.
+                | Wenn Sie die Mail nicht in ihrem Postfach vorfinden, prüfen Sie bitte auch Ihren Spam-Ordner.
+                | <br >Falls Sie keine E-Mail von uns erhalten haben, können Sie <a href="javascript:void(0);" onclick="verify();">diese hier</a> erneut anfordern.
+                div(class="spinner-border text-secondary", role="status", style="display: none")
+        else
+            div(class="row min-vh-100 flex-column flex-md-row")
+                aside(class="col-12 col-md-3 p-0 flex-shrink-1")
+                    nav(class="navbar navbar-expand flex-md-column flex-row align-items-start py-2")
+                        div(class="collapse navbar-collapse")
+                            ul(class="flex-md-column flex-row navbar-nav w-100 justify-content-between")
+                                li(class="nav-item")
+                                    a(class="nav-link pl-0 text-nowrap" href="#")
+                                        span(class="font-weight-bold" style="color:black;") #{user.firstname} #{user.lastname}
+                                li(class="nav-item")
+                                    a(class="nav-link pl-0" href="/profile")
+                                        i(class="fa fa-user fa-fw")
+                                        span(class="d-none d-md-inline") Benutzerprofil
+                                li(class="nav-item")
+                                    a(class="nav-link pl-0" href="/security")
+                                        i(class="fa fa-lock fa-fw")
+                                        span(class="d-none d-md-inline") Sicherheitseinstellungen
+                                li(class="nav-item")
+                                    a(class="nav-link pl-0" href="/services")
+                                        i(class="fa fa-tasks fa-fw")
+                                        span(class="d-none d-md-inline") Projekte und Dienste
+                                li(class="nav-item")
+                                    a(class="nav-link pl-0" href="/logout" style="color:red;")
+                                        i(class="fa fa-sign-out-alt fa-fw")
+                                        span(class="d-none d-md-inline") Logout
+                main(class="col bg-faded py-3 flex-grow-1")
+                    p Willkommen im Benutzerkonto-Bereich des HFT Transferportals
+                    p In diesem Bereich können Sie Ihr Benutzerkonto pflegen.<br/> Dazu finden Sie auf der linken Seite verschiedene Menüs.
+                    p Bei Rückfragen kontaktieren Sie uns bitte unter: <a href="mailto:support-transfer@hft-stuttgart.de">support-transfer@hft-stuttgart.de</a>
                 
     // jQuery
     script(src="https://code.jquery.com/jquery-3.3.1.min.js")
@@ -43,4 +52,25 @@ html(lang="de")
     // Bootstrap
     script(src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous")
     // M4_LAB
-    script(src="/js/headfoot.js")
\ No newline at end of file
+    script(src="https://m4lab.hft-stuttgart.de/js/headfoot.js")
+    script.
+        // call verifyAccount
+        function verify() {
+            $(".spinner-border").show()
+            $.get( "/resendVerificationEmail", function( data ) {
+                console.log(data)
+                if (data) {
+                    alert( "Email sent!" )
+                }
+                else {
+                    alert("Please contact support-transfer@hft-stuttgart.de to verify your account.")
+                }
+            })
+            .fail(function() {
+                alert( "Something went wrong. Please try again." ) // todo: to DE
+            })
+            .always(function() {
+                $(".spinner-border").hide()
+            })
+            
+        }
\ No newline at end of file
diff --git a/views/DE/account/profile.pug b/views/DE/account/profile.pug
index 12f78989..c69b3479 100644
--- a/views/DE/account/profile.pug
+++ b/views/DE/account/profile.pug
@@ -7,29 +7,29 @@ html(lang="de")
     link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap/bootstrap.css")
     link(rel="stylesheet", href="https://use.fontawesome.com/releases/v5.8.2/css/all.css", integrity="sha384-oS3vJWv+0UjzBfQzYUhtDYW+Pj2yciDJxpsK1OYPAYjqT085Qq/1cq5FLXAZQ7Ay", crossorigin="anonymous")
   body
-    div(class="container-fluid")
+    div(class="container")
         div(class="row min-vh-100 flex-column flex-md-row")
-            aside(class="col-12 col-md-2 p-0 flex-shrink-1")
+            aside(class="col-12 col-md-3 p-0 flex-shrink-1")
                 nav(class="navbar navbar-expand flex-md-column flex-row align-items-start py-2")
                     div(class="collapse navbar-collapse")
                         ul(class="flex-md-column flex-row navbar-nav w-100 justify-content-between")
                             li(class="nav-item")
-                                a(class="nav-link pl-0 text-nowrap" href="#")
+                                a(class="nav-link pl-0 text-nowrap" href="/")
                                     span(class="font-weight-bold" style="color:black;") #{user.firstname} #{user.lastname}
                             li(class="nav-item")
-                                a(class="nav-link pl-0" href="/account/profile")
+                                a(class="nav-link pl-0" href="/profile")
                                     i(class="fa fa-user fa-fw" style="color:black;")
                                     span(class="d-none d-md-inline" style="color:black;") Benutzerprofil
                             li(class="nav-item")
-                                a(class="nav-link pl-0" href="/account/security")
+                                a(class="nav-link pl-0" href="/security")
                                     i(class="fa fa-lock fa-fw")
                                     span(class="d-none d-md-inline") Sicherheitseinstellungen
                             li(class="nav-item")
-                                a(class="nav-link pl-0" href="/account/services")
+                                a(class="nav-link pl-0" href="/services")
                                     i(class="fa fa-tasks fa-fw")
                                     span(class="d-none d-md-inline") Projekte und Dienste
                             li(class="nav-item")
-                                a(class="nav-link pl-0" href="/logout")
+                                a(class="nav-link pl-0" href="/logout" style="color:red;")
                                     i(class="fa fa-sign-out-alt fa-fw")
                                     span(class="d-none d-md-inline") Logout
             main(class="col bg-faded py-3 flex-grow-1")
@@ -45,7 +45,7 @@ html(lang="de")
                     div(class="form-row")
                         div(class='form-group col-md-2')
                             label(for="title") Anrede
-                            select#inputSalutation(name="inputSalutation", class="form-control", , value=user.salutation)
+                            select#inputSalutation(name="inputSalutation", class="form-control", value=user.salutation)
                                 option(value="") - Anrede -
                                 option(value="Herr") Herr
                                 option(value="Frau") Frau
@@ -99,4 +99,4 @@ html(lang="de")
     // Bootstrap
     script(src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous")
     // M4_LAB
-    script(src="/js/headfoot.js")
\ No newline at end of file
+    script(src="https://m4lab.hft-stuttgart.de/js/headfoot.js")
\ No newline at end of file
diff --git a/views/DE/account/registration.pug b/views/DE/account/registration.pug
index 3de3ed5a..64c796ea 100644
--- a/views/DE/account/registration.pug
+++ b/views/DE/account/registration.pug
@@ -7,26 +7,6 @@ html(lang="de")
     link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap/bootstrap.css")
     link(rel="stylesheet", href="https://use.fontawesome.com/releases/v5.8.2/css/all.css", integrity="sha384-oS3vJWv+0UjzBfQzYUhtDYW+Pj2yciDJxpsK1OYPAYjqT085Qq/1cq5FLXAZQ7Ay", crossorigin="anonymous")
     style.
-        .collapse {
-            display: none;
-        }
-        .collapse.in {
-            display: block;
-        }
-        .collapsing {
-            position: relative;
-            height: 0;
-            overflow: hidden;
-            -webkit-transition-timing-function: ease;
-            -o-transition-timing-function: ease;
-            transition-timing-function: ease;
-            -webkit-transition-duration: .35s;
-            -o-transition-duration: .35s;
-            transition-duration: .35s;
-            -webkit-transition-property: height,visibility;
-            -o-transition-property: height,visibility;
-            transition-property: height,visibility;
-        }
         .warning {
             color: red;
             font-size: 11px;
@@ -94,4 +74,4 @@ html(lang="de")
     // M4_LAB
     script(src="/js/generalFunction.js")
     script(src="/js/registration.js")
-    script(src="/js/headfoot.js")
\ No newline at end of file
+    script(src="https://m4lab.hft-stuttgart.de/js/headfoot.js")
\ No newline at end of file
diff --git a/views/DE/account/security.pug b/views/DE/account/security.pug
index 15c43887..16b9458a 100644
--- a/views/DE/account/security.pug
+++ b/views/DE/account/security.pug
@@ -11,29 +11,29 @@ html(lang="de")
             font-size: 11px;
         }
   body
-    div(class="container-fluid")
+    div(class="container")
         div(class="row min-vh-100 flex-column flex-md-row")
-            aside(class="col-12 col-md-2 p-0 flex-shrink-1")
+            aside(class="col-12 col-md-3 p-0 flex-shrink-1")
                 nav(class="navbar navbar-expand flex-md-column flex-row align-items-start py-2")
                     div(class="collapse navbar-collapse")
                         ul(class="flex-md-column flex-row navbar-nav w-100 justify-content-between")
                             li(class="nav-item")
-                                a(class="nav-link pl-0 text-nowrap" href="#")
+                                a(class="nav-link pl-0 text-nowrap" href="/")
                                     span(class="font-weight-bold" style="color:black;") #{user.firstname} #{user.lastname}
                             li(class="nav-item")
-                                a(class="nav-link pl-0" href="/account/profile")
+                                a(class="nav-link pl-0" href="/profile")
                                     i(class="fa fa-user fa-fw")
                                     span(class="d-none d-md-inline") Benutzerprofil
                             li(class="nav-item")
-                                a(class="nav-link pl-0" href="/account/security")
+                                a(class="nav-link pl-0" href="/security")
                                     i(class="fa fa-lock fa-fw" style="color:black;")
                                     span(class="d-none d-md-inline" style="color:black;") Sicherheitseinstellungen
                             li(class="nav-item")
-                                a(class="nav-link pl-0" href="/account/services")
+                                a(class="nav-link pl-0" href="/services")
                                     i(class="fa fa-tasks fa-fw")
                                     span(class="d-none d-md-inline") Projekte und Dienste
                             li(class="nav-item")
-                                a(class="nav-link pl-0" href="/logout")
+                                a(class="nav-link pl-0" href="/logout" style="color:red;")
                                     i(class="fa fa-sign-out-alt fa-fw")
                                     span(class="d-none d-md-inline") Logout
             main(class="col bg-faded py-3 flex-grow-1")
@@ -64,7 +64,7 @@ html(lang="de")
                             span#message
                             div(class="invalid-feedback") Bitte füllen Sie dieses Feld aus.
                     input#updateBtn(type="submit", class="btn btn-primary", value="Passwort ändern" disabled)
-                    
+                        
     // jQuery
     script(src="https://code.jquery.com/jquery-3.3.1.min.js")
     script(src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js", integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1", crossorigin="anonymous")
@@ -73,7 +73,7 @@ html(lang="de")
     // M4_LAB
     script(src="/js/security.js")
     script(src="/js/generalFunction.js")
-    script(src="/js/headfoot.js")
+    script(src="https://m4lab.hft-stuttgart.de/js/headfoot.js")
     script.
         // check input fields
         'use strict';
diff --git a/views/DE/account/services.pug b/views/DE/account/services.pug
index 8b99f630..e1b65887 100644
--- a/views/DE/account/services.pug
+++ b/views/DE/account/services.pug
@@ -7,29 +7,29 @@ html(lang="de")
     link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap/bootstrap.css")
     link(rel="stylesheet", href="https://use.fontawesome.com/releases/v5.8.2/css/all.css", integrity="sha384-oS3vJWv+0UjzBfQzYUhtDYW+Pj2yciDJxpsK1OYPAYjqT085Qq/1cq5FLXAZQ7Ay", crossorigin="anonymous")
   body
-    div(class="container-fluid")
+    div(class="container")
         div(class="row min-vh-100 flex-column flex-md-row")
-            aside(class="col-12 col-md-2 p-0 flex-shrink-1")
+            aside(class="col-12 col-md-3 p-0 flex-shrink-1")
                 nav(class="navbar navbar-expand flex-md-column flex-row align-items-start py-2")
                     div(class="collapse navbar-collapse")
                         ul(class="flex-md-column flex-row navbar-nav w-100 justify-content-between")
                             li(class="nav-item")
-                                a(class="nav-link pl-0 text-nowrap" href="#")
+                                a(class="nav-link pl-0 text-nowrap" href="/")
                                     span(class="font-weight-bold" style="color:black;") #{user.firstname} #{user.lastname}
                             li(class="nav-item")
-                                a(class="nav-link pl-0" href="/account/profile")
+                                a(class="nav-link pl-0" href="/profile")
                                     i(class="fa fa-user fa-fw")
                                     span(class="d-none d-md-inline") Benutzerprofil
                             li(class="nav-item")
-                                a(class="nav-link pl-0" href="/account/security")
+                                a(class="nav-link pl-0" href="/security")
                                     i(class="fa fa-lock fa-fw")
                                     span(class="d-none d-md-inline") Sicherheitseinstellungen
                             li(class="nav-item")
-                                a(class="nav-link pl-0" href="/account/services")
+                                a(class="nav-link pl-0" href="/services")
                                     i(class="fa fa-tasks fa-fw" style="color:black;")
                                     span(class="d-none d-md-inline" style="color:black;") Projekte und Dienste
                             li(class="nav-item")
-                                a(class="nav-link pl-0" href="/logout")
+                                a(class="nav-link pl-0" href="/logout" style="color:red;")
                                     i(class="fa fa-sign-out-alt fa-fw")
                                     span(class="d-none d-md-inline") Logout
             main(class="col bg-faded py-3 flex-grow-1")
@@ -41,4 +41,4 @@ html(lang="de")
     // Bootstrap
     script(src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous")
     // M4_LAB
-    script(src="/js/headfoot.js")
\ No newline at end of file
+    script(src="https://m4lab.hft-stuttgart.de/js/headfoot.js")
\ No newline at end of file
diff --git a/views/DE/account/verification.pug b/views/DE/account/verification.pug
new file mode 100644
index 00000000..575e8e74
--- /dev/null
+++ b/views/DE/account/verification.pug
@@ -0,0 +1,35 @@
+doctype html
+html(lang="de")
+  head
+    title= "User Verification"
+    meta(charset="UTF-8")
+    meta(name="viewport", content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no")
+    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap/bootstrap.css")
+    style.
+      .container { 
+        height: 400px;
+        position: relative;
+      }
+      .center {
+        margin: 0;
+        position: absolute;
+        top: 50%;
+        left: 50%;
+        -ms-transform: translate(-50%, -50%);
+        transform: translate(-50%, -50%);
+      }
+  body
+    div(class="container")
+      div(class="center", align="center")
+        a(href="https://m4lab.hft-stuttgart.de")
+          img(src="https://transfer.hft-stuttgart.de/images/demo/m4lab_logo.jpg", class="img-responsive center-block", width="185", height="192")
+        br
+        br
+        if status == true
+          p(class="h5") Ihr Benutzerkonto wurde bestätigt. Bitte <a href="https://m4lab.hft-stuttgart.de/account/">melden Sie sich an</a>.
+        else if status == false
+          p(class="h5") Ihr Benutzerkonto konnte nicht bestätigt werden, bitte versuchen Sie es erneut.
+        else
+          p(class="h5") Ihr Benutzerkonto wude nicht gefunden.
+    // Bootstrap
+    script(src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous")
\ No newline at end of file
-- 
GitLab


From 424fc8a462acd2f5e92e9ecce476ed114d6a53ed Mon Sep 17 00:00:00 2001
From: Rosanny <rosanny.sihombing@hft-stuttgart.de>
Date: Tue, 26 May 2020 14:18:52 +0200
Subject: [PATCH 03/13] MLAB-129: add welcome email after successful
 verification

---
 routes/methods.js        | 13 +++++++++++++
 routes/routes-account.js | 27 +++++++++++++++++++++++++--
 2 files changed, 38 insertions(+), 2 deletions(-)

diff --git a/routes/methods.js b/routes/methods.js
index 2ba550d3..2bafb470 100644
--- a/routes/methods.js
+++ b/routes/methods.js
@@ -80,6 +80,19 @@ var methods = {
             }
             callback(user, err);
         });
+    },
+    getUserById: function(userId, callback) {
+        dbconn.user.query('SELECT verificationStatus, email, salutation, title, firstname, lastname, industry, organisation, speciality FROM user WHERE id = ' +userId, function (err, rows, fields) {
+            if (err) {
+                throw err;
+            }
+            else {
+                if ( rows.length > 0) {
+                    user = rows[0];
+                }
+            }
+            callback(user, err);
+        });
     },
 	checkUserEmail: function(email, callback) {
         let user
diff --git a/routes/routes-account.js b/routes/routes-account.js
index fa97820f..9b6c9ae8 100644
--- a/routes/routes-account.js
+++ b/routes/routes-account.js
@@ -581,9 +581,8 @@ module.exports = function (app, config, passport, i18n) {
 
   // ============= USER VERIFICATION ================================
   app.get("/verifyAccount", function(req, res){
+    console.log(req.query)
     methods.getUserIdByVerificationToken(req.query.token, function(userId, err){
-      console.log(err)
-      console.log(userId)
       if (userId) {
         let userData = {
           id: userId,
@@ -597,6 +596,30 @@ module.exports = function (app, config, passport, i18n) {
             });
           }
           else {
+            // send welcome email after successful account verification
+            methods.getUserById(userId, function(data, err){
+              if (err) {
+                console.log("Error: "+err)
+              }
+              else {
+                // send email
+                var emailSubject = "Herzlich willkommen"
+                var emailContent = "Lieber Nutzer,\n\n"+
+                    "herzlich willkommen beim Transferportal der HFT Stuttgart!\n"+ 
+                    "Sie können nun alle Dienste des Portals nutzen.\n\n"+mailSignature
+                
+                mailer.options.to = data.email;
+                mailer.options.subject = emailSubject;
+                mailer.options.text = emailContent;
+                mailer.transport.sendMail(mailer.options, function(err) {
+                  if (err) {
+                    console.log('cannot send email')
+                    throw err
+                  }
+                })
+              }
+            })
+
             res.render(lang+'/account/verification', {
               status: true
             });
-- 
GitLab


From 2560776afdc973aba12eafe94b0c4a5fb2d67c0e Mon Sep 17 00:00:00 2001
From: Rosanny <rosanny.sihombing@hft-stuttgart.de>
Date: Tue, 26 May 2020 14:31:22 +0200
Subject: [PATCH 04/13] MLAB-129: correcting user feedback and email content
 upon registration

---
 routes/routes-account.js | 13 +++++++------
 1 file changed, 7 insertions(+), 6 deletions(-)

diff --git a/routes/routes-account.js b/routes/routes-account.js
index 9b6c9ae8..676796ba 100644
--- a/routes/routes-account.js
+++ b/routes/routes-account.js
@@ -555,9 +555,10 @@ module.exports = function (app, config, passport, i18n) {
             // send email
             var emailSubject = "Bitte bestätigen Sie Ihr M4_LAB Benutzerkonto"
             var emailContent = "Lieber Nutzer,\n\n"+
-                "vielen Dank für Ihre Anmeldung am Transferportal der HFT Stuttgart. "+ 
-                "\nUm Ihre Anmeldung zu bestätigen, klicken Sie bitte diesen Link: "+config.app.host+"/verifyAccount?token="+token+
-                "\n\nOhne Bestätigung Ihres Kontos müssen wir Ihr Konto leider nach 7 Tagen löschen.\n\n"+mailSignature
+                "vielen Dank für Ihre Anmeldung am Transferportal der HFT Stuttgart.\n"+ 
+                "Um Ihre Anmeldung zu bestätigen, klicken Sie bitte diesen Link: "+config.app.host+"/verifyAccount?token="+token+"\n"+
+                "Ohne Bestätigung Ihres Kontos müssen wir Ihr Konto leider nach 7 Tagen löschen.\n\n"+
+                "Sollten Sie sich selbst nicht mit Ihren Daten am Transferportal registriert haben, ignorieren Sie diese E-Mail bitte.\n\n"+mailSignature
             
             mailer.options.to = req.body.inputEmail;
             mailer.options.subject = emailSubject;
@@ -569,9 +570,9 @@ module.exports = function (app, config, passport, i18n) {
               }
             })
             // user feedback
-            req.flash('success', '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.\r\n \r\n'+
-              'Ohne Bestätigung Ihres Kontos müssen wir Ihr Konto leider nach 7 Tagen löschen.')
+            req.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.')
           }
           res.redirect('/account/registration')
         })
-- 
GitLab


From 1a5ef222b098e4b38e1b46d55bbeba1508da6f53 Mon Sep 17 00:00:00 2001
From: Wolfgang Knopki <wolfgang.knopki@hft-stuttgart.de>
Date: Tue, 26 May 2020 15:01:30 +0200
Subject: [PATCH 05/13] fixed sidebar links

---
 views/DE/account/profile.pug  | 8 ++++----
 views/DE/account/security.pug | 8 ++++----
 views/DE/account/services.pug | 6 +++---
 3 files changed, 11 insertions(+), 11 deletions(-)

diff --git a/views/DE/account/profile.pug b/views/DE/account/profile.pug
index c69b3479..ae666c9d 100644
--- a/views/DE/account/profile.pug
+++ b/views/DE/account/profile.pug
@@ -14,18 +14,18 @@ html(lang="de")
                     div(class="collapse navbar-collapse")
                         ul(class="flex-md-column flex-row navbar-nav w-100 justify-content-between")
                             li(class="nav-item")
-                                a(class="nav-link pl-0 text-nowrap" href="/")
+                                a(class="nav-link pl-0 text-nowrap" href="/account/")
                                     span(class="font-weight-bold" style="color:black;") #{user.firstname} #{user.lastname}
                             li(class="nav-item")
-                                a(class="nav-link pl-0" href="/profile")
+                                a(class="nav-link pl-0" href="/account/profile")
                                     i(class="fa fa-user fa-fw" style="color:black;")
                                     span(class="d-none d-md-inline" style="color:black;") Benutzerprofil
                             li(class="nav-item")
-                                a(class="nav-link pl-0" href="/security")
+                                a(class="nav-link pl-0" href="/account/security")
                                     i(class="fa fa-lock fa-fw")
                                     span(class="d-none d-md-inline") Sicherheitseinstellungen
                             li(class="nav-item")
-                                a(class="nav-link pl-0" href="/services")
+                                a(class="nav-link pl-0" href="/account/services")
                                     i(class="fa fa-tasks fa-fw")
                                     span(class="d-none d-md-inline") Projekte und Dienste
                             li(class="nav-item")
diff --git a/views/DE/account/security.pug b/views/DE/account/security.pug
index 16b9458a..e768359c 100644
--- a/views/DE/account/security.pug
+++ b/views/DE/account/security.pug
@@ -18,18 +18,18 @@ html(lang="de")
                     div(class="collapse navbar-collapse")
                         ul(class="flex-md-column flex-row navbar-nav w-100 justify-content-between")
                             li(class="nav-item")
-                                a(class="nav-link pl-0 text-nowrap" href="/")
+                                a(class="nav-link pl-0 text-nowrap" href="/account/")
                                     span(class="font-weight-bold" style="color:black;") #{user.firstname} #{user.lastname}
                             li(class="nav-item")
-                                a(class="nav-link pl-0" href="/profile")
+                                a(class="nav-link pl-0" href="/account/profile")
                                     i(class="fa fa-user fa-fw")
                                     span(class="d-none d-md-inline") Benutzerprofil
                             li(class="nav-item")
-                                a(class="nav-link pl-0" href="/security")
+                                a(class="nav-link pl-0" href="/account/security")
                                     i(class="fa fa-lock fa-fw" style="color:black;")
                                     span(class="d-none d-md-inline" style="color:black;") Sicherheitseinstellungen
                             li(class="nav-item")
-                                a(class="nav-link pl-0" href="/services")
+                                a(class="nav-link pl-0" href="/account/services")
                                     i(class="fa fa-tasks fa-fw")
                                     span(class="d-none d-md-inline") Projekte und Dienste
                             li(class="nav-item")
diff --git a/views/DE/account/services.pug b/views/DE/account/services.pug
index e1b65887..49497ca1 100644
--- a/views/DE/account/services.pug
+++ b/views/DE/account/services.pug
@@ -17,15 +17,15 @@ html(lang="de")
                                 a(class="nav-link pl-0 text-nowrap" href="/")
                                     span(class="font-weight-bold" style="color:black;") #{user.firstname} #{user.lastname}
                             li(class="nav-item")
-                                a(class="nav-link pl-0" href="/profile")
+                                a(class="nav-link pl-0" href="/account/profile")
                                     i(class="fa fa-user fa-fw")
                                     span(class="d-none d-md-inline") Benutzerprofil
                             li(class="nav-item")
-                                a(class="nav-link pl-0" href="/security")
+                                a(class="nav-link pl-0" href="/account/security")
                                     i(class="fa fa-lock fa-fw")
                                     span(class="d-none d-md-inline") Sicherheitseinstellungen
                             li(class="nav-item")
-                                a(class="nav-link pl-0" href="/services")
+                                a(class="nav-link pl-0" href="/account/services")
                                     i(class="fa fa-tasks fa-fw" style="color:black;")
                                     span(class="d-none d-md-inline" style="color:black;") Projekte und Dienste
                             li(class="nav-item")
-- 
GitLab


From 21807ab9bf58f08f4c515fbda6661a3c0401d7eb Mon Sep 17 00:00:00 2001
From: Wolfgang Knopki <wolfgang.knopki@hft-stuttgart.de>
Date: Tue, 26 May 2020 15:05:56 +0200
Subject: [PATCH 06/13] fixed sidebar links home.pug

---
 views/DE/account/home.pug | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/views/DE/account/home.pug b/views/DE/account/home.pug
index cf284f1a..68004228 100644
--- a/views/DE/account/home.pug
+++ b/views/DE/account/home.pug
@@ -26,15 +26,15 @@ html(lang="de")
                                     a(class="nav-link pl-0 text-nowrap" href="#")
                                         span(class="font-weight-bold" style="color:black;") #{user.firstname} #{user.lastname}
                                 li(class="nav-item")
-                                    a(class="nav-link pl-0" href="/profile")
+                                    a(class="nav-link pl-0" href="/account/profile")
                                         i(class="fa fa-user fa-fw")
                                         span(class="d-none d-md-inline") Benutzerprofil
                                 li(class="nav-item")
-                                    a(class="nav-link pl-0" href="/security")
+                                    a(class="nav-link pl-0" href="/account/security")
                                         i(class="fa fa-lock fa-fw")
                                         span(class="d-none d-md-inline") Sicherheitseinstellungen
                                 li(class="nav-item")
-                                    a(class="nav-link pl-0" href="/services")
+                                    a(class="nav-link pl-0" href="/account/services")
                                         i(class="fa fa-tasks fa-fw")
                                         span(class="d-none d-md-inline") Projekte und Dienste
                                 li(class="nav-item")
-- 
GitLab


From 2d63274c3ab811fcf9c81b22ac2f4ef0ad8fad50 Mon Sep 17 00:00:00 2001
From: Rosanny <rosanny.sihombing@hft-stuttgart.de>
Date: Tue, 26 May 2020 15:49:24 +0200
Subject: [PATCH 07/13] MLAB-227: prevent HFT account to access "security" page

---
 routes/methods.js             | 2 +-
 routes/routes-account.js      | 3 +--
 views/DE/account/home.pug     | 9 +++++----
 views/DE/account/profile.pug  | 9 +++++----
 views/DE/account/services.pug | 9 +++++----
 5 files changed, 17 insertions(+), 15 deletions(-)

diff --git a/routes/methods.js b/routes/methods.js
index 2bafb470..7b34268a 100644
--- a/routes/methods.js
+++ b/routes/methods.js
@@ -69,7 +69,7 @@ var methods = {
         })
     },
     getUserByEmail: function(email, callback) {
-        dbconn.user.query('SELECT verificationStatus, salutation, title, firstname, lastname, industry, organisation, speciality FROM user WHERE email = "' +email+'"', function (err, rows, fields) {
+        dbconn.user.query('SELECT verificationStatus, salutation, title, firstname, lastname, industry, organisation, speciality, m4lab_idp FROM user WHERE email = "' +email+'"', function (err, rows, fields) {
             if (err) {
                 throw err;
             }
diff --git a/routes/routes-account.js b/routes/routes-account.js
index 676796ba..10f9ae7e 100644
--- a/routes/routes-account.js
+++ b/routes/routes-account.js
@@ -240,8 +240,7 @@ module.exports = function (app, config, passport, i18n) {
     if (req.isAuthenticated()) {
       methods.getUserByEmail(req.user.email, function(data, err){
         if (!err) {
-          if (data.verificationStatus == 1) {
-            console.log(data)
+          if (data.verificationStatus == 1 && data.m4lab_idp == 1) {
             res.render(lang+'/account/security', {
               user: data
             })
diff --git a/views/DE/account/home.pug b/views/DE/account/home.pug
index 68004228..f20eafc9 100644
--- a/views/DE/account/home.pug
+++ b/views/DE/account/home.pug
@@ -29,10 +29,11 @@ html(lang="de")
                                     a(class="nav-link pl-0" href="/account/profile")
                                         i(class="fa fa-user fa-fw")
                                         span(class="d-none d-md-inline") Benutzerprofil
-                                li(class="nav-item")
-                                    a(class="nav-link pl-0" href="/account/security")
-                                        i(class="fa fa-lock fa-fw")
-                                        span(class="d-none d-md-inline") Sicherheitseinstellungen
+                                if user.m4lab_idp == 1
+                                    li(class="nav-item")
+                                        a(class="nav-link pl-0" href="/account/security")
+                                            i(class="fa fa-lock fa-fw")
+                                            span(class="d-none d-md-inline") Sicherheitseinstellungen
                                 li(class="nav-item")
                                     a(class="nav-link pl-0" href="/account/services")
                                         i(class="fa fa-tasks fa-fw")
diff --git a/views/DE/account/profile.pug b/views/DE/account/profile.pug
index ae666c9d..e66e4eca 100644
--- a/views/DE/account/profile.pug
+++ b/views/DE/account/profile.pug
@@ -20,10 +20,11 @@ html(lang="de")
                                 a(class="nav-link pl-0" href="/account/profile")
                                     i(class="fa fa-user fa-fw" style="color:black;")
                                     span(class="d-none d-md-inline" style="color:black;") Benutzerprofil
-                            li(class="nav-item")
-                                a(class="nav-link pl-0" href="/account/security")
-                                    i(class="fa fa-lock fa-fw")
-                                    span(class="d-none d-md-inline") Sicherheitseinstellungen
+                            if user.m4lab_idp == 1
+                                li(class="nav-item")
+                                    a(class="nav-link pl-0" href="/account/security")
+                                        i(class="fa fa-lock fa-fw")
+                                        span(class="d-none d-md-inline") Sicherheitseinstellungen
                             li(class="nav-item")
                                 a(class="nav-link pl-0" href="/account/services")
                                     i(class="fa fa-tasks fa-fw")
diff --git a/views/DE/account/services.pug b/views/DE/account/services.pug
index 49497ca1..cb911250 100644
--- a/views/DE/account/services.pug
+++ b/views/DE/account/services.pug
@@ -20,10 +20,11 @@ html(lang="de")
                                 a(class="nav-link pl-0" href="/account/profile")
                                     i(class="fa fa-user fa-fw")
                                     span(class="d-none d-md-inline") Benutzerprofil
-                            li(class="nav-item")
-                                a(class="nav-link pl-0" href="/account/security")
-                                    i(class="fa fa-lock fa-fw")
-                                    span(class="d-none d-md-inline") Sicherheitseinstellungen
+                            if user.m4lab_idp == 1
+                                li(class="nav-item")
+                                    a(class="nav-link pl-0" href="/account/security")
+                                        i(class="fa fa-lock fa-fw")
+                                        span(class="d-none d-md-inline") Sicherheitseinstellungen
                             li(class="nav-item")
                                 a(class="nav-link pl-0" href="/account/services")
                                     i(class="fa fa-tasks fa-fw" style="color:black;")
-- 
GitLab


From 354419d8cfe80f5abf8b4c6477a08089345919e5 Mon Sep 17 00:00:00 2001
From: Rosanny <rosanny.sihombing@hft-stuttgart.de>
Date: Fri, 19 Jun 2020 16:30:24 +0200
Subject: [PATCH 08/13] MLAB 249: Prevent HFT accounts to create an account
 from the registration page.

---
 routes/routes-account.js          | 115 ++++++++++++++++--------------
 views/DE/account/registration.pug |   9 ++-
 2 files changed, 69 insertions(+), 55 deletions(-)

diff --git a/routes/routes-account.js b/routes/routes-account.js
index 10f9ae7e..40c54b58 100644
--- a/routes/routes-account.js
+++ b/routes/routes-account.js
@@ -523,60 +523,71 @@ module.exports = function (app, config, passport, i18n) {
       createdDate: curDate.toISOString().slice(0,10)
     }
 
-    let token
-    async.waterfall([
-      function(done) {
-        crypto.randomBytes(20, function(err, buf) {
-          token = buf.toString('hex');
-          done(err, token);
-        });
-      },
-      // encrypt password
-      function(token, done) {
-        bcrypt.genSalt(saltRounds, function(err, salt) {
-          bcrypt.hash(req.body.inputPassword, salt, function(err, hash) {
-            var newAccount = {
-              profile: userData,
-              password: hash,
-              verificationToken: token
-            }
-            done(err, newAccount)
+    var userEmail = userData.email
+    var pos = userEmail.indexOf('@')
+    var emailLength = userEmail.length
+    var emailDomain = userEmail.slice(pos, emailLength);
+
+    if ( emailDomain.toLowerCase() == "@hft-stuttgart.de") {
+        req.flash('error', "Fehlgeschlagen: HFT-Account")
+        res.redirect('/account/registration');
+    }
+    else {
+      let token
+      async.waterfall([
+        function(done) {
+          crypto.randomBytes(20, function(err, buf) {
+            token = buf.toString('hex');
+            done(err, token);
           });
-        });
-      },
-      // save data
-      function(newAccount, err) {
-        methods.registerNewUser(newAccount, function(err){
-          if (err) {
-            req.flash('error', "Fehlgeschlagen")
-          }
-          else {
-            // send email
-            var emailSubject = "Bitte bestätigen Sie Ihr M4_LAB Benutzerkonto"
-            var emailContent = "Lieber Nutzer,\n\n"+
-                "vielen Dank für Ihre Anmeldung am Transferportal der HFT Stuttgart.\n"+ 
-                "Um Ihre Anmeldung zu bestätigen, klicken Sie bitte diesen Link: "+config.app.host+"/verifyAccount?token="+token+"\n"+
-                "Ohne Bestätigung Ihres Kontos müssen wir Ihr Konto leider nach 7 Tagen löschen.\n\n"+
-                "Sollten Sie sich selbst nicht mit Ihren Daten am Transferportal registriert haben, ignorieren Sie diese E-Mail bitte.\n\n"+mailSignature
-            
-            mailer.options.to = req.body.inputEmail;
-            mailer.options.subject = emailSubject;
-            mailer.options.text = emailContent;
-            mailer.transport.sendMail(mailer.options, function(err) {
-              if (err) {
-                console.log('cannot send email')
-                throw err
+        },
+        // encrypt password
+        function(token, done) {
+          bcrypt.genSalt(saltRounds, function(err, salt) {
+            bcrypt.hash(req.body.inputPassword, salt, function(err, hash) {
+              var newAccount = {
+                profile: userData,
+                password: hash,
+                verificationToken: token
               }
-            })
-            // user feedback
-            req.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.')
-          }
-          res.redirect('/account/registration')
-        })
-      }
-    ])
+              done(err, newAccount)
+            });
+          });
+        },
+        // save data
+        function(newAccount, err) {
+          methods.registerNewUser(newAccount, function(err){
+            if (err) {
+              req.flash('error', "Fehlgeschlagen")
+            }
+            else {
+              // send email
+              var emailSubject = "Bitte bestätigen Sie Ihr M4_LAB Benutzerkonto"
+              var emailContent = "Lieber Nutzer,\n\n"+
+                  "vielen Dank für Ihre Anmeldung am Transferportal der HFT Stuttgart.\n"+
+                  "Um Ihre Anmeldung zu bestätigen, klicken Sie bitte diesen Link: "+config.app.host+"/verifyAccount?token="+token+"\n"+
+                  "Ohne Bestätigung Ihres Kontos müssen wir Ihr Konto leider nach 7 Tagen löschen.\n\n"+
+                  "Sollten Sie sich selbst nicht mit Ihren Daten am Transferportal registriert haben, ignorieren Sie diese E-Mail bitte.\n\n"+mailSignature
+              
+              mailer.options.to = req.body.inputEmail;
+              mailer.options.subject = emailSubject;
+              mailer.options.text = emailContent;
+              mailer.transport.sendMail(mailer.options, function(err) {
+                if (err) {
+                  console.log('cannot send email')
+                  throw err
+                }
+              })
+              // user feedback
+              req.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.')
+            }
+            res.redirect('/account/registration')
+          })
+        }
+      ])
+    }
   })
 
   // ============= USER VERIFICATION ================================
diff --git a/views/DE/account/registration.pug b/views/DE/account/registration.pug
index 64c796ea..dc42f50c 100644
--- a/views/DE/account/registration.pug
+++ b/views/DE/account/registration.pug
@@ -14,9 +14,12 @@ html(lang="de")
   body
     div(class="container-fluid")
         div(class="row")
-            div(class="col-md-6 offset-md-2")
+            div(class="pt-4 pb-4 col-md-6 offset-md-2")
                 h3(class="mb-3 font-weight-bold") Neues Benutzerkonto anlegen
             div(class="col-md-6 offset-md-3")
+                div(class="alert alert-info" role="alert")
+                    | Auf dieser Seite können sich Benutzer, die keinen Account an der HFT haben, registrieren.<br/>
+                    | Um sich mit ihrem HFT-Account anzumelden, klicken Sie <a class="font-weight-bold" href="https://transfer.hft-stuttgart.de/account/">hier</a>.
                 if successes
                     for success in successes
                         div.alert.alert-success.alert-dismissible #{ success }
@@ -26,7 +29,7 @@ html(lang="de")
                         div.alert.alert-danger.alert-dismissible.fade.show #{ error }
                             a(class="close", href="#", data-dismiss="alert", aria-label="close") &times;
                 form(method="POST")
-                    h5(class="mb-3 font-weight-bold") Anmeldedaten
+                    h5(class="pt-2 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*", maxlength="45" required)
@@ -34,7 +37,7 @@ html(lang="de")
                         div(class="form-group col-md-6")
                             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
+                    h5(class="pt-2 mb-3 font-weight-bold") Benutzerprofil
                     div(class="form-row")
                         div(class='form-group col-md-2')
                             select#inputSalutation(name="inputSalutation", class="form-control")
-- 
GitLab


From eccdf3f41b2e7d51eedb9118a8d597a58400bb32 Mon Sep 17 00:00:00 2001
From: Wolfgang Knopki <wolfgang.knopki@hft-stuttgart.de>
Date: Mon, 22 Jun 2020 11:15:50 +0000
Subject: [PATCH 09/13] Update projects.pug, adjusted bootstrap.css link

---
 views/DE/project/projects.pug | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/views/DE/project/projects.pug b/views/DE/project/projects.pug
index c2730b80..09d3a93b 100644
--- a/views/DE/project/projects.pug
+++ b/views/DE/project/projects.pug
@@ -4,7 +4,7 @@ html(lang="de")
     title= "Project List"
     meta(charset="UTF-8")
     meta(name="viewport", content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no")
-    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap/bootstrap.css")
+    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap.css")
     link(rel="stylesheet", href="https://use.fontawesome.com/releases/v5.8.2/css/all.css", integrity="sha384-oS3vJWv+0UjzBfQzYUhtDYW+Pj2yciDJxpsK1OYPAYjqT085Qq/1cq5FLXAZQ7Ay", crossorigin="anonymous")
     style.
         .collapse {
-- 
GitLab


From 62d0f795dc0d8e2a191d5fdf2c6cca8c77bab07a Mon Sep 17 00:00:00 2001
From: Wolfgang Knopki <wolfgang.knopki@hft-stuttgart.de>
Date: Mon, 22 Jun 2020 11:17:17 +0000
Subject: [PATCH 10/13] Update projectOverview.pug, adjusted bootstrap.css link

---
 views/DE/project/projectOverview.pug | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/views/DE/project/projectOverview.pug b/views/DE/project/projectOverview.pug
index e015d1e6..b7d9c9ee 100644
--- a/views/DE/project/projectOverview.pug
+++ b/views/DE/project/projectOverview.pug
@@ -4,7 +4,7 @@ html(lang="de")
     title= "Project List"
     meta(charset="UTF-8")
     meta(name="viewport", content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no")
-    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap/bootstrap.css")
+    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap.css")
     link(rel="stylesheet", href="https://use.fontawesome.com/releases/v5.8.2/css/all.css", integrity="sha384-oS3vJWv+0UjzBfQzYUhtDYW+Pj2yciDJxpsK1OYPAYjqT085Qq/1cq5FLXAZQ7Ay", crossorigin="anonymous")
     style.
         .collapse {
-- 
GitLab


From 555d339121d2db408febc4c040d2b21d2dbb62e0 Mon Sep 17 00:00:00 2001
From: Wolfgang Knopki <wolfgang.knopki@hft-stuttgart.de>
Date: Mon, 22 Jun 2020 11:18:04 +0000
Subject: [PATCH 11/13] Update addProjectOverview.pug, adjusted
 /css/bootstrap.css link

---
 views/DE/project/addProjectOverview.pug | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/views/DE/project/addProjectOverview.pug b/views/DE/project/addProjectOverview.pug
index f6517d29..6894c88f 100644
--- a/views/DE/project/addProjectOverview.pug
+++ b/views/DE/project/addProjectOverview.pug
@@ -4,7 +4,7 @@ html(lang="de")
     title= "Add Project Overview"
     meta(charset="UTF-8")
     meta(name="viewport", content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no")
-    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap/bootstrap.css")
+    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap.css")
     link(rel="stylesheet", href="https://use.fontawesome.com/releases/v5.8.2/css/all.css", integrity="sha384-oS3vJWv+0UjzBfQzYUhtDYW+Pj2yciDJxpsK1OYPAYjqT085Qq/1cq5FLXAZQ7Ay", crossorigin="anonymous")
     // jQuery UI - Datepicker
     link(rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css")
-- 
GitLab


From be0d94e84178ae67b048867fa8c3b678ea56f54a Mon Sep 17 00:00:00 2001
From: Wolfgang Knopki <wolfgang.knopki@hft-stuttgart.de>
Date: Mon, 22 Jun 2020 13:23:25 +0200
Subject: [PATCH 12/13] replaced /css/booststrap/bootstrap.css with
 /css/bootstrap.css

---
 views/DE/404.pug                        | 2 +-
 views/DE/500.pug                        | 2 +-
 views/DE/account/contact.pug            | 2 +-
 views/DE/account/forgotPwd.pug          | 2 +-
 views/DE/account/home.pug               | 2 +-
 views/DE/account/profile.pug            | 2 +-
 views/DE/account/registration.pug       | 2 +-
 views/DE/account/reset.pug              | 2 +-
 views/DE/account/security.pug           | 2 +-
 views/DE/account/services.pug           | 2 +-
 views/DE/account/verification.pug       | 2 +-
 views/DE/project/landingpage.pug        | 2 +-
 views/DE/project/mailinglists.pug       | 2 +-
 views/DE/project/project-simplified.pug | 2 +-
 views/DE/project/videoconferences.pug   | 2 +-
 views/EN/account/forgotPwd.pug          | 2 +-
 views/EN/account/home.pug               | 2 +-
 views/EN/account/profile.pug            | 2 +-
 views/EN/account/registration.pug       | 2 +-
 views/EN/account/reset.pug              | 2 +-
 views/EN/account/security.pug           | 2 +-
 views/EN/account/services.pug           | 2 +-
 views/EN/project/addProjectOverview.pug | 2 +-
 views/EN/project/mailinglists.pug       | 2 +-
 views/EN/project/projects.pug           | 2 +-
 25 files changed, 25 insertions(+), 25 deletions(-)

diff --git a/views/DE/404.pug b/views/DE/404.pug
index c4178253..575cfc99 100644
--- a/views/DE/404.pug
+++ b/views/DE/404.pug
@@ -4,7 +4,7 @@ html(lang="de")
     title= "404 - Page not found"
     meta(charset="UTF-8")
     meta(name="viewport", content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no")
-    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap/bootstrap.css")
+    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap.css")
     style.
       .container { 
         height: 400px;
diff --git a/views/DE/500.pug b/views/DE/500.pug
index 70457339..5f19f51a 100644
--- a/views/DE/500.pug
+++ b/views/DE/500.pug
@@ -4,7 +4,7 @@ html(lang="de")
     title= "500 - Internal Server Error"
     meta(charset="UTF-8")
     meta(name="viewport", content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no")
-    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap/bootstrap.css")
+    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap.css")
     style.
       .container { 
         height: 400px;
diff --git a/views/DE/account/contact.pug b/views/DE/account/contact.pug
index 25e4dc9c..508ca7af 100644
--- a/views/DE/account/contact.pug
+++ b/views/DE/account/contact.pug
@@ -4,7 +4,7 @@ html(lang="de")
     title= "Kontakt"
     meta(charset="UTF-8")
     meta(name="viewport", content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no")
-    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap/bootstrap.css")
+    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap.css")
     link(rel="stylesheet", type="text/css", href="/css/bootstrap.min.css")
     link(rel="stylesheet", type="text/css", href="/fonts/ionicons.min.css")
     link(rel="stylesheet", type="text/css", href="/css/Contact-Form-Clean.css")
diff --git a/views/DE/account/forgotPwd.pug b/views/DE/account/forgotPwd.pug
index 46210a02..292572a4 100644
--- a/views/DE/account/forgotPwd.pug
+++ b/views/DE/account/forgotPwd.pug
@@ -4,7 +4,7 @@ html(lang="de")
     title= "Forgot Password"
     meta(charset="UTF-8")
     meta(name="viewport", content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no")
-    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap/bootstrap.css")
+    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap.css")
     link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/custom/login.css")
     link(rel="stylesheet", href="https://use.fontawesome.com/releases/v5.8.2/css/all.css", integrity="sha384-oS3vJWv+0UjzBfQzYUhtDYW+Pj2yciDJxpsK1OYPAYjqT085Qq/1cq5FLXAZQ7Ay", crossorigin="anonymous")
     style.
diff --git a/views/DE/account/home.pug b/views/DE/account/home.pug
index f20eafc9..1b3729c7 100644
--- a/views/DE/account/home.pug
+++ b/views/DE/account/home.pug
@@ -4,7 +4,7 @@ html(lang="de")
     title= "User Account"
     meta(charset="UTF-8")
     meta(name="viewport", content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no")
-    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap/bootstrap.css")
+    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap.css")
     link(rel="stylesheet", href="https://use.fontawesome.com/releases/v5.8.2/css/all.css", integrity="sha384-oS3vJWv+0UjzBfQzYUhtDYW+Pj2yciDJxpsK1OYPAYjqT085Qq/1cq5FLXAZQ7Ay", crossorigin="anonymous")
   body
     div(class="container")
diff --git a/views/DE/account/profile.pug b/views/DE/account/profile.pug
index e66e4eca..fb114770 100644
--- a/views/DE/account/profile.pug
+++ b/views/DE/account/profile.pug
@@ -4,7 +4,7 @@ html(lang="de")
     title= "User Profile"
     meta(charset="UTF-8")
     meta(name="viewport", content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no")
-    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap/bootstrap.css")
+    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap.css")
     link(rel="stylesheet", href="https://use.fontawesome.com/releases/v5.8.2/css/all.css", integrity="sha384-oS3vJWv+0UjzBfQzYUhtDYW+Pj2yciDJxpsK1OYPAYjqT085Qq/1cq5FLXAZQ7Ay", crossorigin="anonymous")
   body
     div(class="container")
diff --git a/views/DE/account/registration.pug b/views/DE/account/registration.pug
index dc42f50c..2e0a1eee 100644
--- a/views/DE/account/registration.pug
+++ b/views/DE/account/registration.pug
@@ -4,7 +4,7 @@ html(lang="de")
     title= "Create New Account"
     meta(charset="UTF-8")
     meta(name="viewport", content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no")
-    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap/bootstrap.css")
+    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap.css")
     link(rel="stylesheet", href="https://use.fontawesome.com/releases/v5.8.2/css/all.css", integrity="sha384-oS3vJWv+0UjzBfQzYUhtDYW+Pj2yciDJxpsK1OYPAYjqT085Qq/1cq5FLXAZQ7Ay", crossorigin="anonymous")
     style.
         .warning {
diff --git a/views/DE/account/reset.pug b/views/DE/account/reset.pug
index 56aa2d92..ef8693e5 100644
--- a/views/DE/account/reset.pug
+++ b/views/DE/account/reset.pug
@@ -4,7 +4,7 @@ html(lang="de")
     title= "Reset Password"
     meta(charset="UTF-8")
     meta(name="viewport", content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no")
-    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap/bootstrap.css")
+    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap.css")
     link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/custom/login.css")
     link(rel="stylesheet", href="https://use.fontawesome.com/releases/v5.8.2/css/all.css", integrity="sha384-oS3vJWv+0UjzBfQzYUhtDYW+Pj2yciDJxpsK1OYPAYjqT085Qq/1cq5FLXAZQ7Ay", crossorigin="anonymous")
     style.
diff --git a/views/DE/account/security.pug b/views/DE/account/security.pug
index e768359c..523ee199 100644
--- a/views/DE/account/security.pug
+++ b/views/DE/account/security.pug
@@ -4,7 +4,7 @@ html(lang="de")
     title= "User Profile"
     meta(charset="UTF-8")
     meta(name="viewport", content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no")
-    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap/bootstrap.css")
+    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap.css")
     link(rel="stylesheet", href="https://use.fontawesome.com/releases/v5.8.2/css/all.css", integrity="sha384-oS3vJWv+0UjzBfQzYUhtDYW+Pj2yciDJxpsK1OYPAYjqT085Qq/1cq5FLXAZQ7Ay", crossorigin="anonymous")
     style.
         .warning {
diff --git a/views/DE/account/services.pug b/views/DE/account/services.pug
index cb911250..1a525556 100644
--- a/views/DE/account/services.pug
+++ b/views/DE/account/services.pug
@@ -4,7 +4,7 @@ html(lang="de")
     title= "User Profile"
     meta(charset="UTF-8")
     meta(name="viewport", content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no")
-    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap/bootstrap.css")
+    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap.css")
     link(rel="stylesheet", href="https://use.fontawesome.com/releases/v5.8.2/css/all.css", integrity="sha384-oS3vJWv+0UjzBfQzYUhtDYW+Pj2yciDJxpsK1OYPAYjqT085Qq/1cq5FLXAZQ7Ay", crossorigin="anonymous")
   body
     div(class="container")
diff --git a/views/DE/account/verification.pug b/views/DE/account/verification.pug
index 575e8e74..34250834 100644
--- a/views/DE/account/verification.pug
+++ b/views/DE/account/verification.pug
@@ -4,7 +4,7 @@ html(lang="de")
     title= "User Verification"
     meta(charset="UTF-8")
     meta(name="viewport", content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no")
-    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap/bootstrap.css")
+    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap.css")
     style.
       .container { 
         height: 400px;
diff --git a/views/DE/project/landingpage.pug b/views/DE/project/landingpage.pug
index a835ec04..5ff093f2 100644
--- a/views/DE/project/landingpage.pug
+++ b/views/DE/project/landingpage.pug
@@ -4,7 +4,7 @@ html(lang="de")
     title= "Project List"
     meta(charset="UTF-8")
     meta(name="viewport", content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no")
-    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap/bootstrap.css")
+    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap.css")
     link(rel="stylesheet", href="https://use.fontawesome.com/releases/v5.8.2/css/all.css", integrity="sha384-oS3vJWv+0UjzBfQzYUhtDYW+Pj2yciDJxpsK1OYPAYjqT085Qq/1cq5FLXAZQ7Ay", crossorigin="anonymous")
     style.
         .collapse {
diff --git a/views/DE/project/mailinglists.pug b/views/DE/project/mailinglists.pug
index c38c8042..16df2b40 100644
--- a/views/DE/project/mailinglists.pug
+++ b/views/DE/project/mailinglists.pug
@@ -3,7 +3,7 @@ html(lang="de")
     title= "Mailinglisten"
     meta(charset="UTF-8")
     meta(name="viewport" content="width=device-width, initial-scale=1.0, shrink-to-fit=no")
-    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap/bootstrap.css")
+    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap.css")
     link(rel="stylesheet", href="https://use.fontawesome.com/releases/v5.8.2/css/all.css", integrity="sha384-oS3vJWv+0UjzBfQzYUhtDYW+Pj2yciDJxpsK1OYPAYjqT085Qq/1cq5FLXAZQ7Ay", crossorigin="anonymous")
     link(rel="stylesheet" href="/fonts/ionicons.min.css")
     link(rel="stylesheet" href="assets/css/Testimonials.css")
diff --git a/views/DE/project/project-simplified.pug b/views/DE/project/project-simplified.pug
index cb868f9a..fdda3403 100644
--- a/views/DE/project/project-simplified.pug
+++ b/views/DE/project/project-simplified.pug
@@ -4,7 +4,7 @@ html(lang="de")
     title= "Project List"
     meta(charset="UTF-8")
     meta(name="viewport", content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no")
-    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap/bootstrap.css")
+    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap.css")
     link(rel="stylesheet", href="https://use.fontawesome.com/releases/v5.8.2/css/all.css", integrity="sha384-oS3vJWv+0UjzBfQzYUhtDYW+Pj2yciDJxpsK1OYPAYjqT085Qq/1cq5FLXAZQ7Ay", crossorigin="anonymous")
     style.
       .help .card-title > a:before {
diff --git a/views/DE/project/videoconferences.pug b/views/DE/project/videoconferences.pug
index e6ee7b69..91ba82c2 100644
--- a/views/DE/project/videoconferences.pug
+++ b/views/DE/project/videoconferences.pug
@@ -4,7 +4,7 @@ html(lang="de")
     title= "Project List"
     meta(charset="UTF-8")
     meta(name="viewport", content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no")
-    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap/bootstrap.css")
+    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap.css")
     link(rel="stylesheet", href="https://use.fontawesome.com/releases/v5.8.2/css/all.css", integrity="sha384-oS3vJWv+0UjzBfQzYUhtDYW+Pj2yciDJxpsK1OYPAYjqT085Qq/1cq5FLXAZQ7Ay", crossorigin="anonymous")
     style.
         .collapse {
diff --git a/views/EN/account/forgotPwd.pug b/views/EN/account/forgotPwd.pug
index 1cde0888..6b14d985 100644
--- a/views/EN/account/forgotPwd.pug
+++ b/views/EN/account/forgotPwd.pug
@@ -4,7 +4,7 @@ html(lang="en")
     title= "Forgot Password"
     meta(charset="UTF-8")
     meta(name="viewport", content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no")
-    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap/bootstrap.css")
+    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap.css")
     link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/custom/login.css")
     link(rel="stylesheet", href="https://use.fontawesome.com/releases/v5.8.2/css/all.css", integrity="sha384-oS3vJWv+0UjzBfQzYUhtDYW+Pj2yciDJxpsK1OYPAYjqT085Qq/1cq5FLXAZQ7Ay", crossorigin="anonymous")
     style.
diff --git a/views/EN/account/home.pug b/views/EN/account/home.pug
index d2f3875a..82390276 100644
--- a/views/EN/account/home.pug
+++ b/views/EN/account/home.pug
@@ -4,7 +4,7 @@ html(lang="en")
     title= "User Account"
     meta(charset="UTF-8")
     meta(name="viewport", content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no")
-    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap/bootstrap.css")
+    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap.css")
     link(rel="stylesheet", href="https://use.fontawesome.com/releases/v5.8.2/css/all.css", integrity="sha384-oS3vJWv+0UjzBfQzYUhtDYW+Pj2yciDJxpsK1OYPAYjqT085Qq/1cq5FLXAZQ7Ay", crossorigin="anonymous")
     style.
         .collapse {
diff --git a/views/EN/account/profile.pug b/views/EN/account/profile.pug
index 47c1f7e8..838bca98 100644
--- a/views/EN/account/profile.pug
+++ b/views/EN/account/profile.pug
@@ -4,7 +4,7 @@ html(lang="en")
     title= "User Profile"
     meta(charset="UTF-8")
     meta(name="viewport", content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no")
-    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap/bootstrap.css")
+    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap.css")
     link(rel="stylesheet", href="https://use.fontawesome.com/releases/v5.8.2/css/all.css", integrity="sha384-oS3vJWv+0UjzBfQzYUhtDYW+Pj2yciDJxpsK1OYPAYjqT085Qq/1cq5FLXAZQ7Ay", crossorigin="anonymous")
     style.
         .collapse {
diff --git a/views/EN/account/registration.pug b/views/EN/account/registration.pug
index 88ef5a93..1e549e67 100644
--- a/views/EN/account/registration.pug
+++ b/views/EN/account/registration.pug
@@ -4,7 +4,7 @@ html(lang="en")
     title= "Create New Account"
     meta(charset="UTF-8")
     meta(name="viewport", content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no")
-    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap/bootstrap.css")
+    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap.css")
     link(rel="stylesheet", href="https://use.fontawesome.com/releases/v5.8.2/css/all.css", integrity="sha384-oS3vJWv+0UjzBfQzYUhtDYW+Pj2yciDJxpsK1OYPAYjqT085Qq/1cq5FLXAZQ7Ay", crossorigin="anonymous")
     style.
         .collapse {
diff --git a/views/EN/account/reset.pug b/views/EN/account/reset.pug
index b8939ea2..0b964959 100644
--- a/views/EN/account/reset.pug
+++ b/views/EN/account/reset.pug
@@ -4,7 +4,7 @@ html(lang="en")
     title= "Reset Password"
     meta(charset="UTF-8")
     meta(name="viewport", content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no")
-    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap/bootstrap.css")
+    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap.css")
     link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/custom/login.css")
     link(rel="stylesheet", href="https://use.fontawesome.com/releases/v5.8.2/css/all.css", integrity="sha384-oS3vJWv+0UjzBfQzYUhtDYW+Pj2yciDJxpsK1OYPAYjqT085Qq/1cq5FLXAZQ7Ay", crossorigin="anonymous")
     style.
diff --git a/views/EN/account/security.pug b/views/EN/account/security.pug
index 2a5c248c..e8d8be5b 100644
--- a/views/EN/account/security.pug
+++ b/views/EN/account/security.pug
@@ -4,7 +4,7 @@ html(lang="en")
     title= "User Profile"
     meta(charset="UTF-8")
     meta(name="viewport", content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no")
-    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap/bootstrap.css")
+    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap.css")
     link(rel="stylesheet", href="https://use.fontawesome.com/releases/v5.8.2/css/all.css", integrity="sha384-oS3vJWv+0UjzBfQzYUhtDYW+Pj2yciDJxpsK1OYPAYjqT085Qq/1cq5FLXAZQ7Ay", crossorigin="anonymous")
     style.
         .collapse {
diff --git a/views/EN/account/services.pug b/views/EN/account/services.pug
index f095144b..7ad5e503 100644
--- a/views/EN/account/services.pug
+++ b/views/EN/account/services.pug
@@ -4,7 +4,7 @@ html(lang="en")
     title= "User Profile"
     meta(charset="UTF-8")
     meta(name="viewport", content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no")
-    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap/bootstrap.css")
+    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap.css")
     link(rel="stylesheet", href="https://use.fontawesome.com/releases/v5.8.2/css/all.css", integrity="sha384-oS3vJWv+0UjzBfQzYUhtDYW+Pj2yciDJxpsK1OYPAYjqT085Qq/1cq5FLXAZQ7Ay", crossorigin="anonymous")
     style.
         .collapse {
diff --git a/views/EN/project/addProjectOverview.pug b/views/EN/project/addProjectOverview.pug
index 7b40b54f..42375dad 100644
--- a/views/EN/project/addProjectOverview.pug
+++ b/views/EN/project/addProjectOverview.pug
@@ -4,7 +4,7 @@ html(lang="de")
     title= "Add Project Overview"
     meta(charset="UTF-8")
     meta(name="viewport", content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no")
-    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap/bootstrap.css")
+    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap.css")
     link(rel="stylesheet", href="https://use.fontawesome.com/releases/v5.8.2/css/all.css", integrity="sha384-oS3vJWv+0UjzBfQzYUhtDYW+Pj2yciDJxpsK1OYPAYjqT085Qq/1cq5FLXAZQ7Ay", crossorigin="anonymous")
     style.
         .collapse {
diff --git a/views/EN/project/mailinglists.pug b/views/EN/project/mailinglists.pug
index f2ddbd8b..43a4a436 100644
--- a/views/EN/project/mailinglists.pug
+++ b/views/EN/project/mailinglists.pug
@@ -3,7 +3,7 @@ html(lang="en")
     title= "Mailinglisten"
     meta(charset="UTF-8")
     meta(name="viewport", content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no")
-    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap/bootstrap.css")
+    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap.css")
     link(rel="stylesheet", href="https://use.fontawesome.com/releases/v5.8.2/css/all.css", integrity="sha384-oS3vJWv+0UjzBfQzYUhtDYW+Pj2yciDJxpsK1OYPAYjqT085Qq/1cq5FLXAZQ7Ay", crossorigin="anonymous")
     style.
         .collapse {
diff --git a/views/EN/project/projects.pug b/views/EN/project/projects.pug
index 56f65c10..720bc8fc 100644
--- a/views/EN/project/projects.pug
+++ b/views/EN/project/projects.pug
@@ -4,7 +4,7 @@ html(lang="de")
     title= "Project List"
     meta(charset="UTF-8")
     meta(name="viewport", content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no")
-    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap/bootstrap.css")
+    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap.css")
     link(rel="stylesheet", href="https://use.fontawesome.com/releases/v5.8.2/css/all.css", integrity="sha384-oS3vJWv+0UjzBfQzYUhtDYW+Pj2yciDJxpsK1OYPAYjqT085Qq/1cq5FLXAZQ7Ay", crossorigin="anonymous")
     style.
         .collapse {
-- 
GitLab


From 5c9626575f55c8ba11ed7268bac6297a39401b0d Mon Sep 17 00:00:00 2001
From: Wolfgang Knopki <wolfgang.knopki@hft-stuttgart.de>
Date: Mon, 22 Jun 2020 13:30:42 +0200
Subject: [PATCH 13/13] replaced /css/ calls with relative links instead of
 calls to transfer

---
 views/DE/404.pug                        | 2 +-
 views/DE/500.pug                        | 2 +-
 views/DE/account/contact.pug            | 4 ++--
 views/DE/account/forgotPwd.pug          | 4 ++--
 views/DE/account/home.pug               | 2 +-
 views/DE/account/profile.pug            | 2 +-
 views/DE/account/registration.pug       | 2 +-
 views/DE/account/reset.pug              | 4 ++--
 views/DE/account/security.pug           | 2 +-
 views/DE/account/services.pug           | 2 +-
 views/DE/account/verification.pug       | 2 +-
 views/DE/project/addProjectOverview.pug | 2 +-
 views/DE/project/landingpage.pug        | 2 +-
 views/DE/project/mailinglists.pug       | 2 +-
 views/DE/project/project-simplified.pug | 2 +-
 views/DE/project/projectOverview.pug    | 2 +-
 views/DE/project/projects.pug           | 2 +-
 views/DE/project/videoconferences.pug   | 2 +-
 views/EN/account/forgotPwd.pug          | 4 ++--
 views/EN/account/home.pug               | 2 +-
 views/EN/account/profile.pug            | 2 +-
 views/EN/account/registration.pug       | 2 +-
 views/EN/account/reset.pug              | 4 ++--
 views/EN/account/security.pug           | 2 +-
 views/EN/account/services.pug           | 2 +-
 views/EN/project/addProjectOverview.pug | 2 +-
 views/EN/project/mailinglists.pug       | 2 +-
 views/EN/project/projects.pug           | 2 +-
 28 files changed, 33 insertions(+), 33 deletions(-)

diff --git a/views/DE/404.pug b/views/DE/404.pug
index 575cfc99..28d105ae 100644
--- a/views/DE/404.pug
+++ b/views/DE/404.pug
@@ -4,7 +4,7 @@ html(lang="de")
     title= "404 - Page not found"
     meta(charset="UTF-8")
     meta(name="viewport", content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no")
-    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap.css")
+    link(rel="stylesheet", type="text/css", href="/css/bootstrap.css")
     style.
       .container { 
         height: 400px;
diff --git a/views/DE/500.pug b/views/DE/500.pug
index 5f19f51a..b18e630c 100644
--- a/views/DE/500.pug
+++ b/views/DE/500.pug
@@ -4,7 +4,7 @@ html(lang="de")
     title= "500 - Internal Server Error"
     meta(charset="UTF-8")
     meta(name="viewport", content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no")
-    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap.css")
+    link(rel="stylesheet", type="text/css", href="/css/bootstrap.css")
     style.
       .container { 
         height: 400px;
diff --git a/views/DE/account/contact.pug b/views/DE/account/contact.pug
index 508ca7af..ddf00d4f 100644
--- a/views/DE/account/contact.pug
+++ b/views/DE/account/contact.pug
@@ -4,12 +4,12 @@ html(lang="de")
     title= "Kontakt"
     meta(charset="UTF-8")
     meta(name="viewport", content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no")
-    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap.css")
+    link(rel="stylesheet", type="text/css", href="/css/bootstrap.css")
     link(rel="stylesheet", type="text/css", href="/css/bootstrap.min.css")
     link(rel="stylesheet", type="text/css", href="/fonts/ionicons.min.css")
     link(rel="stylesheet", type="text/css", href="/css/Contact-Form-Clean.css")
     link(rel="stylesheet", type="text/css", href="/css/Testimonials.css")
-    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/custom/login.css")
+    link(rel="stylesheet", type="text/css", href="/css/custom/login.css")
     link(rel="stylesheet", href="https://use.fontawesome.com/releases/v5.8.2/css/all.css", integrity="sha384-oS3vJWv+0UjzBfQzYUhtDYW+Pj2yciDJxpsK1OYPAYjqT085Qq/1cq5FLXAZQ7Ay", crossorigin="anonymous")
     style.
         .collapse {
diff --git a/views/DE/account/forgotPwd.pug b/views/DE/account/forgotPwd.pug
index 292572a4..a0e333ba 100644
--- a/views/DE/account/forgotPwd.pug
+++ b/views/DE/account/forgotPwd.pug
@@ -4,8 +4,8 @@ html(lang="de")
     title= "Forgot Password"
     meta(charset="UTF-8")
     meta(name="viewport", content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no")
-    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap.css")
-    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/custom/login.css")
+    link(rel="stylesheet", type="text/css", href="/css/bootstrap.css")
+    link(rel="stylesheet", type="text/css", href="/css/custom/login.css")
     link(rel="stylesheet", href="https://use.fontawesome.com/releases/v5.8.2/css/all.css", integrity="sha384-oS3vJWv+0UjzBfQzYUhtDYW+Pj2yciDJxpsK1OYPAYjqT085Qq/1cq5FLXAZQ7Ay", crossorigin="anonymous")
     style.
         .collapse {
diff --git a/views/DE/account/home.pug b/views/DE/account/home.pug
index 1b3729c7..0d427232 100644
--- a/views/DE/account/home.pug
+++ b/views/DE/account/home.pug
@@ -4,7 +4,7 @@ html(lang="de")
     title= "User Account"
     meta(charset="UTF-8")
     meta(name="viewport", content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no")
-    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap.css")
+    link(rel="stylesheet", type="text/css", href="/css/bootstrap.css")
     link(rel="stylesheet", href="https://use.fontawesome.com/releases/v5.8.2/css/all.css", integrity="sha384-oS3vJWv+0UjzBfQzYUhtDYW+Pj2yciDJxpsK1OYPAYjqT085Qq/1cq5FLXAZQ7Ay", crossorigin="anonymous")
   body
     div(class="container")
diff --git a/views/DE/account/profile.pug b/views/DE/account/profile.pug
index fb114770..5ea7640a 100644
--- a/views/DE/account/profile.pug
+++ b/views/DE/account/profile.pug
@@ -4,7 +4,7 @@ html(lang="de")
     title= "User Profile"
     meta(charset="UTF-8")
     meta(name="viewport", content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no")
-    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap.css")
+    link(rel="stylesheet", type="text/css", href="/css/bootstrap.css")
     link(rel="stylesheet", href="https://use.fontawesome.com/releases/v5.8.2/css/all.css", integrity="sha384-oS3vJWv+0UjzBfQzYUhtDYW+Pj2yciDJxpsK1OYPAYjqT085Qq/1cq5FLXAZQ7Ay", crossorigin="anonymous")
   body
     div(class="container")
diff --git a/views/DE/account/registration.pug b/views/DE/account/registration.pug
index 2e0a1eee..5d169e73 100644
--- a/views/DE/account/registration.pug
+++ b/views/DE/account/registration.pug
@@ -4,7 +4,7 @@ html(lang="de")
     title= "Create New Account"
     meta(charset="UTF-8")
     meta(name="viewport", content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no")
-    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap.css")
+    link(rel="stylesheet", type="text/css", href="/css/bootstrap.css")
     link(rel="stylesheet", href="https://use.fontawesome.com/releases/v5.8.2/css/all.css", integrity="sha384-oS3vJWv+0UjzBfQzYUhtDYW+Pj2yciDJxpsK1OYPAYjqT085Qq/1cq5FLXAZQ7Ay", crossorigin="anonymous")
     style.
         .warning {
diff --git a/views/DE/account/reset.pug b/views/DE/account/reset.pug
index ef8693e5..ede0800c 100644
--- a/views/DE/account/reset.pug
+++ b/views/DE/account/reset.pug
@@ -4,8 +4,8 @@ html(lang="de")
     title= "Reset Password"
     meta(charset="UTF-8")
     meta(name="viewport", content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no")
-    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap.css")
-    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/custom/login.css")
+    link(rel="stylesheet", type="text/css", href="/css/bootstrap.css")
+    link(rel="stylesheet", type="text/css", href="/css/custom/login.css")
     link(rel="stylesheet", href="https://use.fontawesome.com/releases/v5.8.2/css/all.css", integrity="sha384-oS3vJWv+0UjzBfQzYUhtDYW+Pj2yciDJxpsK1OYPAYjqT085Qq/1cq5FLXAZQ7Ay", crossorigin="anonymous")
     style.
         .collapse {
diff --git a/views/DE/account/security.pug b/views/DE/account/security.pug
index 523ee199..d060e233 100644
--- a/views/DE/account/security.pug
+++ b/views/DE/account/security.pug
@@ -4,7 +4,7 @@ html(lang="de")
     title= "User Profile"
     meta(charset="UTF-8")
     meta(name="viewport", content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no")
-    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap.css")
+    link(rel="stylesheet", type="text/css", href="/css/bootstrap.css")
     link(rel="stylesheet", href="https://use.fontawesome.com/releases/v5.8.2/css/all.css", integrity="sha384-oS3vJWv+0UjzBfQzYUhtDYW+Pj2yciDJxpsK1OYPAYjqT085Qq/1cq5FLXAZQ7Ay", crossorigin="anonymous")
     style.
         .warning {
diff --git a/views/DE/account/services.pug b/views/DE/account/services.pug
index 1a525556..bb9dba43 100644
--- a/views/DE/account/services.pug
+++ b/views/DE/account/services.pug
@@ -4,7 +4,7 @@ html(lang="de")
     title= "User Profile"
     meta(charset="UTF-8")
     meta(name="viewport", content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no")
-    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap.css")
+    link(rel="stylesheet", type="text/css", href="/css/bootstrap.css")
     link(rel="stylesheet", href="https://use.fontawesome.com/releases/v5.8.2/css/all.css", integrity="sha384-oS3vJWv+0UjzBfQzYUhtDYW+Pj2yciDJxpsK1OYPAYjqT085Qq/1cq5FLXAZQ7Ay", crossorigin="anonymous")
   body
     div(class="container")
diff --git a/views/DE/account/verification.pug b/views/DE/account/verification.pug
index 34250834..a5518385 100644
--- a/views/DE/account/verification.pug
+++ b/views/DE/account/verification.pug
@@ -4,7 +4,7 @@ html(lang="de")
     title= "User Verification"
     meta(charset="UTF-8")
     meta(name="viewport", content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no")
-    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap.css")
+    link(rel="stylesheet", type="text/css", href="/css/bootstrap.css")
     style.
       .container { 
         height: 400px;
diff --git a/views/DE/project/addProjectOverview.pug b/views/DE/project/addProjectOverview.pug
index 6894c88f..5752e8b9 100644
--- a/views/DE/project/addProjectOverview.pug
+++ b/views/DE/project/addProjectOverview.pug
@@ -4,7 +4,7 @@ html(lang="de")
     title= "Add Project Overview"
     meta(charset="UTF-8")
     meta(name="viewport", content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no")
-    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap.css")
+    link(rel="stylesheet", type="text/css", href="/css/bootstrap.css")
     link(rel="stylesheet", href="https://use.fontawesome.com/releases/v5.8.2/css/all.css", integrity="sha384-oS3vJWv+0UjzBfQzYUhtDYW+Pj2yciDJxpsK1OYPAYjqT085Qq/1cq5FLXAZQ7Ay", crossorigin="anonymous")
     // jQuery UI - Datepicker
     link(rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css")
diff --git a/views/DE/project/landingpage.pug b/views/DE/project/landingpage.pug
index 5ff093f2..d00050e9 100644
--- a/views/DE/project/landingpage.pug
+++ b/views/DE/project/landingpage.pug
@@ -4,7 +4,7 @@ html(lang="de")
     title= "Project List"
     meta(charset="UTF-8")
     meta(name="viewport", content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no")
-    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap.css")
+    link(rel="stylesheet", type="text/css", href="/css/bootstrap.css")
     link(rel="stylesheet", href="https://use.fontawesome.com/releases/v5.8.2/css/all.css", integrity="sha384-oS3vJWv+0UjzBfQzYUhtDYW+Pj2yciDJxpsK1OYPAYjqT085Qq/1cq5FLXAZQ7Ay", crossorigin="anonymous")
     style.
         .collapse {
diff --git a/views/DE/project/mailinglists.pug b/views/DE/project/mailinglists.pug
index 16df2b40..5f24660f 100644
--- a/views/DE/project/mailinglists.pug
+++ b/views/DE/project/mailinglists.pug
@@ -3,7 +3,7 @@ html(lang="de")
     title= "Mailinglisten"
     meta(charset="UTF-8")
     meta(name="viewport" content="width=device-width, initial-scale=1.0, shrink-to-fit=no")
-    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap.css")
+    link(rel="stylesheet", type="text/css", href="/css/bootstrap.css")
     link(rel="stylesheet", href="https://use.fontawesome.com/releases/v5.8.2/css/all.css", integrity="sha384-oS3vJWv+0UjzBfQzYUhtDYW+Pj2yciDJxpsK1OYPAYjqT085Qq/1cq5FLXAZQ7Ay", crossorigin="anonymous")
     link(rel="stylesheet" href="/fonts/ionicons.min.css")
     link(rel="stylesheet" href="assets/css/Testimonials.css")
diff --git a/views/DE/project/project-simplified.pug b/views/DE/project/project-simplified.pug
index fdda3403..a7f317b7 100644
--- a/views/DE/project/project-simplified.pug
+++ b/views/DE/project/project-simplified.pug
@@ -4,7 +4,7 @@ html(lang="de")
     title= "Project List"
     meta(charset="UTF-8")
     meta(name="viewport", content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no")
-    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap.css")
+    link(rel="stylesheet", type="text/css", href="/css/bootstrap.css")
     link(rel="stylesheet", href="https://use.fontawesome.com/releases/v5.8.2/css/all.css", integrity="sha384-oS3vJWv+0UjzBfQzYUhtDYW+Pj2yciDJxpsK1OYPAYjqT085Qq/1cq5FLXAZQ7Ay", crossorigin="anonymous")
     style.
       .help .card-title > a:before {
diff --git a/views/DE/project/projectOverview.pug b/views/DE/project/projectOverview.pug
index b7d9c9ee..beacda4a 100644
--- a/views/DE/project/projectOverview.pug
+++ b/views/DE/project/projectOverview.pug
@@ -4,7 +4,7 @@ html(lang="de")
     title= "Project List"
     meta(charset="UTF-8")
     meta(name="viewport", content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no")
-    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap.css")
+    link(rel="stylesheet", type="text/css", href="/css/bootstrap.css")
     link(rel="stylesheet", href="https://use.fontawesome.com/releases/v5.8.2/css/all.css", integrity="sha384-oS3vJWv+0UjzBfQzYUhtDYW+Pj2yciDJxpsK1OYPAYjqT085Qq/1cq5FLXAZQ7Ay", crossorigin="anonymous")
     style.
         .collapse {
diff --git a/views/DE/project/projects.pug b/views/DE/project/projects.pug
index 09d3a93b..f3693d92 100644
--- a/views/DE/project/projects.pug
+++ b/views/DE/project/projects.pug
@@ -4,7 +4,7 @@ html(lang="de")
     title= "Project List"
     meta(charset="UTF-8")
     meta(name="viewport", content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no")
-    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap.css")
+    link(rel="stylesheet", type="text/css", href="/css/bootstrap.css")
     link(rel="stylesheet", href="https://use.fontawesome.com/releases/v5.8.2/css/all.css", integrity="sha384-oS3vJWv+0UjzBfQzYUhtDYW+Pj2yciDJxpsK1OYPAYjqT085Qq/1cq5FLXAZQ7Ay", crossorigin="anonymous")
     style.
         .collapse {
diff --git a/views/DE/project/videoconferences.pug b/views/DE/project/videoconferences.pug
index 91ba82c2..20706244 100644
--- a/views/DE/project/videoconferences.pug
+++ b/views/DE/project/videoconferences.pug
@@ -4,7 +4,7 @@ html(lang="de")
     title= "Project List"
     meta(charset="UTF-8")
     meta(name="viewport", content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no")
-    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap.css")
+    link(rel="stylesheet", type="text/css", href="/css/bootstrap.css")
     link(rel="stylesheet", href="https://use.fontawesome.com/releases/v5.8.2/css/all.css", integrity="sha384-oS3vJWv+0UjzBfQzYUhtDYW+Pj2yciDJxpsK1OYPAYjqT085Qq/1cq5FLXAZQ7Ay", crossorigin="anonymous")
     style.
         .collapse {
diff --git a/views/EN/account/forgotPwd.pug b/views/EN/account/forgotPwd.pug
index 6b14d985..985793b0 100644
--- a/views/EN/account/forgotPwd.pug
+++ b/views/EN/account/forgotPwd.pug
@@ -4,8 +4,8 @@ html(lang="en")
     title= "Forgot Password"
     meta(charset="UTF-8")
     meta(name="viewport", content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no")
-    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap.css")
-    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/custom/login.css")
+    link(rel="stylesheet", type="text/css", href="/css/bootstrap.css")
+    link(rel="stylesheet", type="text/css", href="/css/custom/login.css")
     link(rel="stylesheet", href="https://use.fontawesome.com/releases/v5.8.2/css/all.css", integrity="sha384-oS3vJWv+0UjzBfQzYUhtDYW+Pj2yciDJxpsK1OYPAYjqT085Qq/1cq5FLXAZQ7Ay", crossorigin="anonymous")
     style.
         .collapse {
diff --git a/views/EN/account/home.pug b/views/EN/account/home.pug
index 82390276..df71fe18 100644
--- a/views/EN/account/home.pug
+++ b/views/EN/account/home.pug
@@ -4,7 +4,7 @@ html(lang="en")
     title= "User Account"
     meta(charset="UTF-8")
     meta(name="viewport", content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no")
-    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap.css")
+    link(rel="stylesheet", type="text/css", href="/css/bootstrap.css")
     link(rel="stylesheet", href="https://use.fontawesome.com/releases/v5.8.2/css/all.css", integrity="sha384-oS3vJWv+0UjzBfQzYUhtDYW+Pj2yciDJxpsK1OYPAYjqT085Qq/1cq5FLXAZQ7Ay", crossorigin="anonymous")
     style.
         .collapse {
diff --git a/views/EN/account/profile.pug b/views/EN/account/profile.pug
index 838bca98..60788795 100644
--- a/views/EN/account/profile.pug
+++ b/views/EN/account/profile.pug
@@ -4,7 +4,7 @@ html(lang="en")
     title= "User Profile"
     meta(charset="UTF-8")
     meta(name="viewport", content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no")
-    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap.css")
+    link(rel="stylesheet", type="text/css", href="/css/bootstrap.css")
     link(rel="stylesheet", href="https://use.fontawesome.com/releases/v5.8.2/css/all.css", integrity="sha384-oS3vJWv+0UjzBfQzYUhtDYW+Pj2yciDJxpsK1OYPAYjqT085Qq/1cq5FLXAZQ7Ay", crossorigin="anonymous")
     style.
         .collapse {
diff --git a/views/EN/account/registration.pug b/views/EN/account/registration.pug
index 1e549e67..2e1aba4c 100644
--- a/views/EN/account/registration.pug
+++ b/views/EN/account/registration.pug
@@ -4,7 +4,7 @@ html(lang="en")
     title= "Create New Account"
     meta(charset="UTF-8")
     meta(name="viewport", content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no")
-    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap.css")
+    link(rel="stylesheet", type="text/css", href="/css/bootstrap.css")
     link(rel="stylesheet", href="https://use.fontawesome.com/releases/v5.8.2/css/all.css", integrity="sha384-oS3vJWv+0UjzBfQzYUhtDYW+Pj2yciDJxpsK1OYPAYjqT085Qq/1cq5FLXAZQ7Ay", crossorigin="anonymous")
     style.
         .collapse {
diff --git a/views/EN/account/reset.pug b/views/EN/account/reset.pug
index 0b964959..606b304f 100644
--- a/views/EN/account/reset.pug
+++ b/views/EN/account/reset.pug
@@ -4,8 +4,8 @@ html(lang="en")
     title= "Reset Password"
     meta(charset="UTF-8")
     meta(name="viewport", content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no")
-    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap.css")
-    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/custom/login.css")
+    link(rel="stylesheet", type="text/css", href="/css/bootstrap.css")
+    link(rel="stylesheet", type="text/css", href="/css/custom/login.css")
     link(rel="stylesheet", href="https://use.fontawesome.com/releases/v5.8.2/css/all.css", integrity="sha384-oS3vJWv+0UjzBfQzYUhtDYW+Pj2yciDJxpsK1OYPAYjqT085Qq/1cq5FLXAZQ7Ay", crossorigin="anonymous")
     style.
         .collapse {
diff --git a/views/EN/account/security.pug b/views/EN/account/security.pug
index e8d8be5b..c2c997b0 100644
--- a/views/EN/account/security.pug
+++ b/views/EN/account/security.pug
@@ -4,7 +4,7 @@ html(lang="en")
     title= "User Profile"
     meta(charset="UTF-8")
     meta(name="viewport", content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no")
-    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap.css")
+    link(rel="stylesheet", type="text/css", href="/css/bootstrap.css")
     link(rel="stylesheet", href="https://use.fontawesome.com/releases/v5.8.2/css/all.css", integrity="sha384-oS3vJWv+0UjzBfQzYUhtDYW+Pj2yciDJxpsK1OYPAYjqT085Qq/1cq5FLXAZQ7Ay", crossorigin="anonymous")
     style.
         .collapse {
diff --git a/views/EN/account/services.pug b/views/EN/account/services.pug
index 7ad5e503..c70d729f 100644
--- a/views/EN/account/services.pug
+++ b/views/EN/account/services.pug
@@ -4,7 +4,7 @@ html(lang="en")
     title= "User Profile"
     meta(charset="UTF-8")
     meta(name="viewport", content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no")
-    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap.css")
+    link(rel="stylesheet", type="text/css", href="/css/bootstrap.css")
     link(rel="stylesheet", href="https://use.fontawesome.com/releases/v5.8.2/css/all.css", integrity="sha384-oS3vJWv+0UjzBfQzYUhtDYW+Pj2yciDJxpsK1OYPAYjqT085Qq/1cq5FLXAZQ7Ay", crossorigin="anonymous")
     style.
         .collapse {
diff --git a/views/EN/project/addProjectOverview.pug b/views/EN/project/addProjectOverview.pug
index 42375dad..d0a4b0eb 100644
--- a/views/EN/project/addProjectOverview.pug
+++ b/views/EN/project/addProjectOverview.pug
@@ -4,7 +4,7 @@ html(lang="de")
     title= "Add Project Overview"
     meta(charset="UTF-8")
     meta(name="viewport", content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no")
-    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap.css")
+    link(rel="stylesheet", type="text/css", href="/css/bootstrap.css")
     link(rel="stylesheet", href="https://use.fontawesome.com/releases/v5.8.2/css/all.css", integrity="sha384-oS3vJWv+0UjzBfQzYUhtDYW+Pj2yciDJxpsK1OYPAYjqT085Qq/1cq5FLXAZQ7Ay", crossorigin="anonymous")
     style.
         .collapse {
diff --git a/views/EN/project/mailinglists.pug b/views/EN/project/mailinglists.pug
index 43a4a436..fdc0ef23 100644
--- a/views/EN/project/mailinglists.pug
+++ b/views/EN/project/mailinglists.pug
@@ -3,7 +3,7 @@ html(lang="en")
     title= "Mailinglisten"
     meta(charset="UTF-8")
     meta(name="viewport", content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no")
-    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap.css")
+    link(rel="stylesheet", type="text/css", href="/css/bootstrap.css")
     link(rel="stylesheet", href="https://use.fontawesome.com/releases/v5.8.2/css/all.css", integrity="sha384-oS3vJWv+0UjzBfQzYUhtDYW+Pj2yciDJxpsK1OYPAYjqT085Qq/1cq5FLXAZQ7Ay", crossorigin="anonymous")
     style.
         .collapse {
diff --git a/views/EN/project/projects.pug b/views/EN/project/projects.pug
index 720bc8fc..f1ecc579 100644
--- a/views/EN/project/projects.pug
+++ b/views/EN/project/projects.pug
@@ -4,7 +4,7 @@ html(lang="de")
     title= "Project List"
     meta(charset="UTF-8")
     meta(name="viewport", content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no")
-    link(rel="stylesheet", type="text/css", href="https://transfer.hft-stuttgart.de/css/bootstrap.css")
+    link(rel="stylesheet", type="text/css", href="/css/bootstrap.css")
     link(rel="stylesheet", href="https://use.fontawesome.com/releases/v5.8.2/css/all.css", integrity="sha384-oS3vJWv+0UjzBfQzYUhtDYW+Pj2yciDJxpsK1OYPAYjqT085Qq/1cq5FLXAZQ7Ay", crossorigin="anonymous")
     style.
         .collapse {
-- 
GitLab