From f42e90490c84ccb43dcfa7cb1b2f659b6f7dd546 Mon Sep 17 00:00:00 2001
From: Rosanny <rosanny.sihombing@hft-stuttgart.de>
Date: Wed, 6 Jul 2022 15:32:46 +0200
Subject: [PATCH] add compiled codes

---
 built/app.js                                  |   7 +
 built/classes/project.js                      |   3 +
 built/classes/repo.js                         |   1 +
 built/classes/user.js                         |   7 +
 built/classes/website.js                      |   1 +
 built/config/config.js                        |  22 ++
 built/config/const.js                         |   1 +
 built/config/dbconn.js                        |   2 +
 built/config/mailer.js                        |   1 +
 built/controller/dbController.js              |  14 ++
 built/controller/gitlabController.js          |   2 +
 built/controller/publicController.js          |   9 +
 built/public/default/logo.png                 | Bin 0 -> 86689 bytes
 built/public/js/generalFunction.js            |   9 +
 built/public/js/headfoot.js                   | 224 +++++++++++++++++
 built/public/js/headfootLogout.js             | 237 ++++++++++++++++++
 built/public/js/registration.js               |  37 +++
 built/public/js/security.js                   |  30 +++
 built/routes/account.js                       |  12 +
 built/routes/cert/cert.pem                    |  33 +++
 built/routes/cert/cert_idp.pem                |   1 +
 built/routes/cert/key.pem                     |   3 +
 built/routes/public.js                        |   7 +
 built/views/DE/404.pug                        |  30 +++
 built/views/DE/500.pug                        |  31 +++
 built/views/DE/account/contact.pug            |  56 +++++
 built/views/DE/account/forgotPwd.pug          |  36 +++
 built/views/DE/account/home.pug               |  75 ++++++
 built/views/DE/account/newInformation.pug     | 123 +++++++++
 built/views/DE/account/profile.pug            | 112 +++++++++
 built/views/DE/account/registration.pug       |  85 +++++++
 built/views/DE/account/reset.pug              |  42 ++++
 built/views/DE/account/security.pug           |  94 +++++++
 built/views/DE/account/services.pug           | 101 ++++++++
 built/views/DE/account/updateInformation.pug  | 156 ++++++++++++
 built/views/DE/account/verification.pug       |  36 +++
 .../DE/project/updateProjectOverview.pug      |   0
 built/views/EN/404.pug                        |   4 +
 built/views/EN/500.pug                        |   8 +
 built/views/EN/account/forgotPwd.pug          |  56 +++++
 built/views/EN/account/home.pug               |  49 ++++
 built/views/EN/account/profile.pug            |  95 +++++++
 built/views/EN/account/registration.pug       |  92 +++++++
 built/views/EN/account/reset.pug              |  60 +++++
 built/views/EN/account/security.pug           |  94 +++++++
 built/views/EN/account/services.pug           |  77 ++++++
 46 files changed, 2175 insertions(+)
 create mode 100644 built/app.js
 create mode 100644 built/classes/project.js
 create mode 100644 built/classes/repo.js
 create mode 100644 built/classes/user.js
 create mode 100644 built/classes/website.js
 create mode 100644 built/config/config.js
 create mode 100644 built/config/const.js
 create mode 100644 built/config/dbconn.js
 create mode 100644 built/config/mailer.js
 create mode 100644 built/controller/dbController.js
 create mode 100644 built/controller/gitlabController.js
 create mode 100644 built/controller/publicController.js
 create mode 100644 built/public/default/logo.png
 create mode 100644 built/public/js/generalFunction.js
 create mode 100644 built/public/js/headfoot.js
 create mode 100644 built/public/js/headfootLogout.js
 create mode 100644 built/public/js/registration.js
 create mode 100644 built/public/js/security.js
 create mode 100644 built/routes/account.js
 create mode 100644 built/routes/cert/cert.pem
 create mode 100644 built/routes/cert/cert_idp.pem
 create mode 100644 built/routes/cert/key.pem
 create mode 100644 built/routes/public.js
 create mode 100644 built/views/DE/404.pug
 create mode 100644 built/views/DE/500.pug
 create mode 100644 built/views/DE/account/contact.pug
 create mode 100644 built/views/DE/account/forgotPwd.pug
 create mode 100644 built/views/DE/account/home.pug
 create mode 100644 built/views/DE/account/newInformation.pug
 create mode 100644 built/views/DE/account/profile.pug
 create mode 100644 built/views/DE/account/registration.pug
 create mode 100644 built/views/DE/account/reset.pug
 create mode 100644 built/views/DE/account/security.pug
 create mode 100644 built/views/DE/account/services.pug
 create mode 100644 built/views/DE/account/updateInformation.pug
 create mode 100644 built/views/DE/account/verification.pug
 create mode 100644 built/views/DE/project/updateProjectOverview.pug
 create mode 100644 built/views/EN/404.pug
 create mode 100644 built/views/EN/500.pug
 create mode 100644 built/views/EN/account/forgotPwd.pug
 create mode 100644 built/views/EN/account/home.pug
 create mode 100644 built/views/EN/account/profile.pug
 create mode 100644 built/views/EN/account/registration.pug
 create mode 100644 built/views/EN/account/reset.pug
 create mode 100644 built/views/EN/account/security.pug
 create mode 100644 built/views/EN/account/services.pug

diff --git a/built/app.js b/built/app.js
new file mode 100644
index 00000000..4d73b754
--- /dev/null
+++ b/built/app.js
@@ -0,0 +1,7 @@
+"use strict";var _process$env$NODE_ENV,_express=_interopRequireDefault(require("express")),_path=_interopRequireDefault(require("path")),_passport=_interopRequireDefault(require("passport")),_morgan=_interopRequireDefault(require("morgan")),_cookieParser=_interopRequireDefault(require("cookie-parser")),_bodyParser=_interopRequireDefault(require("body-parser")),_expressSession=_interopRequireDefault(require("express-session")),_expressFlash=_interopRequireDefault(require("express-flash-2")),_expressFileupload=_interopRequireDefault(require("express-fileupload")),_helmet=_interopRequireDefault(require("helmet")),_compression=_interopRequireDefault(require("compression")),_methodOverride=_interopRequireDefault(require("method-override"));function _interopRequireDefault(a){return a&&a.__esModule?a:{default:a}}var env=null!==(_process$env$NODE_ENV=process.env.NODE_ENV)&&void 0!==_process$env$NODE_ENV?_process$env$NODE_ENV:"testing",config=require("./config/config")[env],lang="DE",app=(0,_express["default"])();// enable files upload
+// caching disabled for every route
+// NOTE: Works in Firefox and Opera. Does not work in Edge
+// Handle 404
+// Handle 500 - any server error
+app.set("port",config.app.port),app.set("views",_path["default"].join(_path["default"].join(__dirname,"/views"))),app.set("view engine","pug"),app.use((0,_expressFileupload["default"])({createParentPath:!0,limits:{fileSize:1e6// 1 MB max. file size
+}})),app.use((0,_methodOverride["default"])("_method")),app.use(_helmet["default"].contentSecurityPolicy({useDefaults:!0,directives:{"font-src":["'self'","https://use.fontawesome.com"],"img-src":["'self'","https://transfer.hft-stuttgart.de"],"script-src":["'self'","https://code.jquery.com/jquery-3.3.1.min.js","https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js","https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js","https://unpkg.com/bootstrap-show-password@1.2.1/dist/bootstrap-show-password.min.js"],"style-src":["'self'","https://use.fontawesome.com/releases/v5.8.2/css/all.css"],"frame-src":["'self'"]},reportOnly:!0})),app.use((0,_compression["default"])()),app.use((0,_morgan["default"])("combined")),app.use((0,_cookieParser["default"])(config.app.sessionSecret)),app.use(_bodyParser["default"].json()),app.use(_bodyParser["default"].urlencoded({extended:!1})),app.use(_express["default"]["static"](_path["default"].join(__dirname,"public"))),app.use(function(a,b,c){c()}),app.use((0,_expressSession["default"])({resave:!0,saveUninitialized:!0,secret:config.app.sessionSecret})),app.use((0,_expressFlash["default"])()),app.use(_passport["default"].initialize()),app.use(_passport["default"].session()),app.use(function(a,b,c){b.set("Cache-Control","no-cache, private, no-store, must-revalidate, max-stale=0, post-check=0, pre-check=0"),c()}),require("./routes/public")(app,config,lang),require("./routes/account")(app,config,_passport["default"],lang),app.use(function(a,b){b.status(404).render(lang+"/404")}),app.use(function(a,b,c){console.error(a.stack),c.status(500).render(lang+"/500",{error:a})}),app.listen(app.get("port"),function(){console.log("Express server listening on port "+app.get("port"))});
\ No newline at end of file
diff --git a/built/classes/project.js b/built/classes/project.js
new file mode 100644
index 00000000..6f678d7b
--- /dev/null
+++ b/built/classes/project.js
@@ -0,0 +1,3 @@
+"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.Project=void 0;function _classCallCheck(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function _defineProperties(a,b){for(var c,d=0;d<b.length;d++)c=b[d],c.enumerable=c.enumerable||!1,c.configurable=!0,"value"in c&&(c.writable=!0),Object.defineProperty(a,c.key,c)}function _createClass(a,b,c){return b&&_defineProperties(a.prototype,b),c&&_defineProperties(a,c),Object.defineProperty(a,"prototype",{writable:!1}),a}var Project=/*#__PURE__*/function(){function a(b,c,d,e,f,g){_classCallCheck(this,a),this.ownerGitlabId=b,this.name=c,this.desc=d,this.id=e,this.logo=f,this.path=g}// getter
+return _createClass(a,[{key:"getOwnerGitlabId",value:function getOwnerGitlabId(){return this.ownerGitlabId}},{key:"getId",value:function getId(){return this.id}},{key:"getName",value:function getName(){return this.name}},{key:"getDesc",value:function getDesc(){return this.desc}},{key:"getLogo",value:function getLogo(){return this.logo}},{key:"getPath",value:function getPath(){return this.path}// setter
+},{key:"setOwnerGitlabId",value:function setOwnerGitlabId(a){this.ownerGitlabId=a}},{key:"setId",value:function setId(a){this.id=a}},{key:"setName",value:function setName(a){this.name=a}},{key:"setDesc",value:function setDesc(a){this.desc=a}},{key:"setLogo",value:function setLogo(a){this.logo=a}},{key:"setPath",value:function setPath(a){this.path=a}}]),a}();exports.Project=Project;
\ No newline at end of file
diff --git a/built/classes/repo.js b/built/classes/repo.js
new file mode 100644
index 00000000..145d184c
--- /dev/null
+++ b/built/classes/repo.js
@@ -0,0 +1 @@
+"use strict";var _project=require("./project");function _typeof(a){"@babel/helpers - typeof";return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a},_typeof(a)}Object.defineProperty(exports,"__esModule",{value:!0}),exports.Repo=void 0;function _defineProperties(a,b){for(var c,d=0;d<b.length;d++)c=b[d],c.enumerable=c.enumerable||!1,c.configurable=!0,"value"in c&&(c.writable=!0),Object.defineProperty(a,c.key,c)}function _createClass(a,b,c){return b&&_defineProperties(a.prototype,b),c&&_defineProperties(a,c),Object.defineProperty(a,"prototype",{writable:!1}),a}function _classCallCheck(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function _inherits(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function");a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,writable:!0,configurable:!0}}),Object.defineProperty(a,"prototype",{writable:!1}),b&&_setPrototypeOf(a,b)}function _setPrototypeOf(a,b){return _setPrototypeOf=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(a,b){return a.__proto__=b,a},_setPrototypeOf(a,b)}function _createSuper(a){var b=_isNativeReflectConstruct();return function(){var c,d=_getPrototypeOf(a);if(b){var e=_getPrototypeOf(this).constructor;c=Reflect.construct(d,arguments,e)}else c=d.apply(this,arguments);return _possibleConstructorReturn(this,c)}}function _possibleConstructorReturn(a,b){if(b&&("object"===_typeof(b)||"function"==typeof b))return b;if(void 0!==b)throw new TypeError("Derived constructors may only return object or undefined");return _assertThisInitialized(a)}function _assertThisInitialized(a){if(void 0===a)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return a}function _isNativeReflectConstruct(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch(a){return!1}}function _getPrototypeOf(a){return _getPrototypeOf=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(a){return a.__proto__||Object.getPrototypeOf(a)},_getPrototypeOf(a)}var Repo=/*#__PURE__*/function(a){function b(a,d,e,f,g,h){return _classCallCheck(this,b),c.call(this,a,d,e,f,g,h)}_inherits(b,a);var c=_createSuper(b);return _createClass(b)}(_project.Project);exports.Repo=Repo;
\ No newline at end of file
diff --git a/built/classes/user.js b/built/classes/user.js
new file mode 100644
index 00000000..fa381835
--- /dev/null
+++ b/built/classes/user.js
@@ -0,0 +1,7 @@
+"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.User=void 0;function _classCallCheck(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function _defineProperties(a,b){for(var c,d=0;d<b.length;d++)c=b[d],c.enumerable=c.enumerable||!1,c.configurable=!0,"value"in c&&(c.writable=!0),Object.defineProperty(a,c.key,c)}function _createClass(a,b,c){return b&&_defineProperties(a.prototype,b),c&&_defineProperties(a,c),Object.defineProperty(a,"prototype",{writable:!1}),a}var User=/*#__PURE__*/function(){// should be enum
+// should be enum
+// 1 or 0
+// 1 or 0 - // should be boolean
+function a(b,c,d,e,f,g,h,i,j,k,l,m){_classCallCheck(this,a),this.id=b,this.email=c,this.salutation=d,this.title=e,this.firstName=f,this.lastName=g,this.industry=h,this.organisation=i,this.speciality=j,this.isM4labIdp=k,this.verificationStatus=l,this.gitlabUserId=m}// getter
+return _createClass(a,[{key:"getId",value:function getId(){return this.id}},{key:"getEmail",value:function getEmail(){return this.email}},{key:"getFullName",value:function getFullName(){return this.firstName+" "+this.lastName}},{key:"getIdpStatus",value:function getIdpStatus(){return this.isM4labIdp}},{key:"getVerificationStatus",value:function getVerificationStatus(){return this.verificationStatus}},{key:"getGitlabUserId",value:function getGitlabUserId(){return this.gitlabUserId}// setter
+},{key:"setEmail",value:function setEmail(a){this.email=a}},{key:"setSalutation",value:function setSalutation(a){this.salutation=a}},{key:"setTitle",value:function setTitle(a){this.title=a}},{key:"setFirstName",value:function setFirstName(a){this.firstName=a}},{key:"setLastName",value:function setLastName(a){this.lastName=a}},{key:"setIndustry",value:function setIndustry(a){this.industry=a}},{key:"setOrganisation",value:function setOrganisation(a){this.organisation=a}},{key:"setSpeciality",value:function setSpeciality(a){this.speciality=a}},{key:"setM4lab_idp",value:function setM4lab_idp(a){this.isM4labIdp=a}},{key:"setVerificationStatus",value:function setVerificationStatus(a){this.verificationStatus=a}},{key:"setGitlabUserId",value:function setGitlabUserId(a){this.gitlabUserId=a}},{key:"updateProfile",value:function updateProfile(a,b,c,d,e,f,g,h){this.salutation=a,this.title=b,this.firstName=c,this.lastName=d,this.email=e,this.organisation=f,this.industry=g,this.speciality=h}}]),a}();exports.User=User;
\ No newline at end of file
diff --git a/built/classes/website.js b/built/classes/website.js
new file mode 100644
index 00000000..16066986
--- /dev/null
+++ b/built/classes/website.js
@@ -0,0 +1 @@
+"use strict";var _project=require("./project");function _typeof(a){"@babel/helpers - typeof";return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a},_typeof(a)}Object.defineProperty(exports,"__esModule",{value:!0}),exports.Website=void 0;function _defineProperties(a,b){for(var c,d=0;d<b.length;d++)c=b[d],c.enumerable=c.enumerable||!1,c.configurable=!0,"value"in c&&(c.writable=!0),Object.defineProperty(a,c.key,c)}function _createClass(a,b,c){return b&&_defineProperties(a.prototype,b),c&&_defineProperties(a,c),Object.defineProperty(a,"prototype",{writable:!1}),a}function _classCallCheck(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function _inherits(a,b){if("function"!=typeof b&&null!==b)throw new TypeError("Super expression must either be null or a function");a.prototype=Object.create(b&&b.prototype,{constructor:{value:a,writable:!0,configurable:!0}}),Object.defineProperty(a,"prototype",{writable:!1}),b&&_setPrototypeOf(a,b)}function _setPrototypeOf(a,b){return _setPrototypeOf=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(a,b){return a.__proto__=b,a},_setPrototypeOf(a,b)}function _createSuper(a){var b=_isNativeReflectConstruct();return function(){var c,d=_getPrototypeOf(a);if(b){var e=_getPrototypeOf(this).constructor;c=Reflect.construct(d,arguments,e)}else c=d.apply(this,arguments);return _possibleConstructorReturn(this,c)}}function _possibleConstructorReturn(a,b){if(b&&("object"===_typeof(b)||"function"==typeof b))return b;if(void 0!==b)throw new TypeError("Derived constructors may only return object or undefined");return _assertThisInitialized(a)}function _assertThisInitialized(a){if(void 0===a)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return a}function _isNativeReflectConstruct(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){})),!0}catch(a){return!1}}function _getPrototypeOf(a){return _getPrototypeOf=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(a){return a.__proto__||Object.getPrototypeOf(a)},_getPrototypeOf(a)}var Website=/*#__PURE__*/function(a){function b(a,d,e,f,g,h){return _classCallCheck(this,b),c.call(this,a,d,e,f,g,h)}_inherits(b,a);var c=_createSuper(b);return _createClass(b)}(_project.Project);exports.Website=Website;
\ No newline at end of file
diff --git a/built/config/config.js b/built/config/config.js
new file mode 100644
index 00000000..e04c4ea8
--- /dev/null
+++ b/built/config/config.js
@@ -0,0 +1,22 @@
+"use strict";var _process$env$PORT,_process$env$SAML_PAT,_process$env$PORT2,_process$env$SAML_PAT2,_process$env$SAML_ENT;Object.defineProperty(exports,"__esModule",{value:!0});module.exports={development:{app:{name:"User Account Management",port:null!==(_process$env$PORT=process.env.PORT)&&void 0!==_process$env$PORT?_process$env$PORT:9989,host:"http://localhost:9989",sessionSecret:"thisisasecret"},passport:{strategy:"saml",saml:{path:null!==(_process$env$SAML_PAT=process.env.SAML_PATH)&&void 0!==_process$env$SAML_PAT?_process$env$SAML_PAT:"/saml/SSO",entryPoint:process.env.SAML_ENTRY_POINT||"saml entry point",issuer:"SAML issuer",logoutUrl:"SAML logout URL"}},database:{host:"localhost",// DB host
+user:"dbuser",// DB username
+password:"dbpass",// DB password
+port:3306,// MySQL port
+dbUser:"userdb",// User DB
+host_project:"localhost",// DB host project db
+dbProject:"projectdb"// Project DB
+},mailer:{host:"mailhost",// hostname
+secureConnection:!1,// TLS requires secureConnection to be false
+port:587,// port for secure SMTP
+TLS:!0,authUser:"mailuser",authPass:"mailpass",tlsCiphers:"SSLv3",from:"mailfrom"},gitlab:{token_readWriteProjects:"token-goes-here"}},testing:{app:{name:"User Account Management",port:null!==(_process$env$PORT2=process.env.PORT)&&void 0!==_process$env$PORT2?_process$env$PORT2:9989,host:"https://m4lab.hft-stuttgart.de/account",sessionSecret:"thisisasecret"},passport:{strategy:"saml",saml:{path:null!==(_process$env$SAML_PAT2=process.env.SAML_PATH)&&void 0!==_process$env$SAML_PAT2?_process$env$SAML_PAT2:"/saml/SSO",entryPoint:null!==(_process$env$SAML_ENT=process.env.SAML_ENTRY_POINT)&&void 0!==_process$env$SAML_ENT?_process$env$SAML_ENT:"saml entry point",issuer:"SAML issuer",// testing metadata
+logoutUrl:"SAML logout URL"}},database:{host:"dbhost",// DB host
+user:"dbuser",// DB username
+password:"dbpass",// DB password
+port:3306,// MySQL port
+dbUser:"userdb",// User DB
+host_project:"dbhost",// DB host project db
+dbProject:"projectdb"// Project DB
+},mailer:{host:"mailhost",// hostname
+secureConnection:!1,// TLS requires secureConnection to be false
+port:587,// port for secure SMTP
+TLS:!0,authUser:"mailuser",authPass:"mailpass",tlsCiphers:"SSLv3",from:"mailfrom"},gitlab:{token_readWriteProjects:"token-goes-here"}}};
\ No newline at end of file
diff --git a/built/config/const.js b/built/config/const.js
new file mode 100644
index 00000000..48f80a01
--- /dev/null
+++ b/built/config/const.js
@@ -0,0 +1 @@
+"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.miscConst=void 0;var miscConst={mailSignature:"Mit den besten Gr\xFC\xDFen,<br/>das Transferportal-Team der HFT Stuttgart<br/><br/>Transferportal der Hochschule f\xFCr Technik Stuttgart<br/>Schellingstr. 24   70174 Stuttgart<br/>m4lab@hft-stuttgart.de<br/><a mailConsthref=\"https://transfer.hft-stuttgart.de\">https://transfer.hft-stuttgart.de</a><br/><a href=\"http://www.hft-stuttgart.de/Aktuell/\"><img border=\"0\" alt=\"HFT\" src=\"https://m4lab.hft-stuttgart.de/img/signature/hft_logo.png\" width=\"30\" height=\"30\"></a>  &nbsp;<a href=\"http://www.facebook.com/hftstuttgart\"><img border=\"0\" alt=\"Facebook\" src=\"https://m4lab.hft-stuttgart.de/img/signature/fb_bw.png\" width=\"30\" height=\"30\"></a>  &nbsp;<a href=\"https://www.instagram.com/hft_stuttgart/\"><img border=\"0\" alt=\"Instagram\" src=\"https://m4lab.hft-stuttgart.de/img/signature/instagram_bw.png\" width=\"30\" height=\"30\"></a>  &nbsp;<a href=\"https://twitter.com/hft_presse\"><img border=\"0\" alt=\"Twitter\" src=\"https://m4lab.hft-stuttgart.de/img/signature/twitter_bw.png\" width=\"30\" height=\"30\"></a>  &nbsp;<a href=\"https://www.youtube.com/channel/UCi0_JfF2qMZbOhOnNH5PyHA\"><img border=\"0\" alt=\"Youtube\" src=\"https://m4lab.hft-stuttgart.de/img/signature/youtube_bw.png\" width=\"30\" height=\"30\"></a>  &nbsp;<a href=\"http://www.hft-stuttgart.de/Aktuell/Presse-Marketing/SocialMedia/Snapcode HFT_Stuttgart.jpg/photo_view\"><img border=\"0\" alt=\"Snapchat\" src=\"https://m4lab.hft-stuttgart.de/img/signature/snapchat_bw.png\" width=\"30\" height=\"30\"></a><br/><img border=\"0\" src=\"https://m4lab.hft-stuttgart.de/img/signature/inno_bw.png\" width=\"150\" height=\"100\">",updatePasswordMailSubject:"Ihr Passwort f\xFCr das Transferportal wurde gespeichert.",updatePasswordMailContent:"<div>Lieber Nutzer,<br/><br/>Ihr Passwort wurde erfolgreich ge\xE4ndert.<br/><br/></div>"};exports.miscConst=miscConst;
\ No newline at end of file
diff --git a/built/config/dbconn.js b/built/config/dbconn.js
new file mode 100644
index 00000000..1fc0ed1b
--- /dev/null
+++ b/built/config/dbconn.js
@@ -0,0 +1,2 @@
+"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.dbConnection=void 0;var _process$env$NODE_ENV,_mysql=_interopRequireDefault(require("mysql2"));function _interopRequireDefault(a){return a&&a.__esModule?a:{default:a}}var env=null!==(_process$env$NODE_ENV=process.env.NODE_ENV)&&void 0!==_process$env$NODE_ENV?_process$env$NODE_ENV:"testing",config=require("./config")[env],userConnection=_mysql["default"].createPool({host:config.database.host,user:config.database.user,password:config.database.password,port:config.database.port,database:config.database.dbUser,waitForConnections:!0,connectionLimit:10,queueLimit:0});userConnection.query("USE "+config.database.dbUser);// ==== PROJECT DB CONNECTION ====
+var projectConnection=_mysql["default"].createPool({host:config.database.host_project,user:config.database.user,password:config.database.password,port:config.database.port,database:config.database.dbProject,waitForConnections:!0,connectionLimit:10,queueLimit:0});projectConnection.query("USE "+config.database.dbProject);var dbConnection={user:userConnection,project:projectConnection};exports.dbConnection=dbConnection;
\ No newline at end of file
diff --git a/built/config/mailer.js b/built/config/mailer.js
new file mode 100644
index 00000000..505d4c35
--- /dev/null
+++ b/built/config/mailer.js
@@ -0,0 +1 @@
+"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.mailer=void 0;var _process$env$NODE_ENV,nodemailer=require("nodemailer"),nodemailerNTLMAuth=require("nodemailer-ntlm-auth"),env=null!==(_process$env$NODE_ENV=process.env.NODE_ENV)&&void 0!==_process$env$NODE_ENV?_process$env$NODE_ENV:"testing",config=require("./config")[env],smtpTransporter=nodemailer.createTransport({host:config.mailer.host,secure:config.mailer.secureConnection,port:config.mailer.port,requireTLS:config.mailer.TLS,auth:{type:"custom",method:"NTLM",user:config.mailer.authUser,pass:config.mailer.authPass,options:{domain:"ad"}},customAuth:{NTLM:nodemailerNTLMAuth}}),mailOptions={to:"",cc:"",from:config.mailer.from,subject:"",text:"",html:""},mailer={transporter:smtpTransporter,options:mailOptions};exports.mailer=mailer;
\ No newline at end of file
diff --git a/built/controller/dbController.js b/built/controller/dbController.js
new file mode 100644
index 00000000..c38b8592
--- /dev/null
+++ b/built/controller/dbController.js
@@ -0,0 +1,14 @@
+"use strict";var _dbconn=require("../config/dbconn");function _typeof(a){"@babel/helpers - typeof";return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a},_typeof(a)}Object.defineProperty(exports,"__esModule",{value:!0}),exports.dbController=void 0;function _regeneratorRuntime(){"use strict";/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */function a(a,b,c){return Object.defineProperty(a,b,{value:c,enumerable:!0,configurable:!0,writable:!0}),a[b]}function b(a,b,e,f){var g=b&&b.prototype instanceof d?b:d,h=Object.create(g.prototype),j=new l(f||[]);return h._invoke=function(a,b,d){var e="suspendedStart";return function(f,g){if("executing"===e)throw new Error("Generator is already running");if("completed"===e){if("throw"===f)throw g;return n()}for(d.method=f,d.arg=g;;){var h=d.delegate;if(h){var j=i(h,d);if(j){if(j===v)continue;return j}}if("next"===d.method)d.sent=d._sent=d.arg;else if("throw"===d.method){if("suspendedStart"===e)throw e="completed",d.arg;d.dispatchException(d.arg)}else"return"===d.method&&d.abrupt("return",d.arg);e="executing";var k=c(a,b,d);if("normal"===k.type){if(e=d.done?"completed":"suspendedYield",k.arg===v)continue;return{value:k.arg,done:d.done}}"throw"===k.type&&(e="completed",d.method="throw",d.arg=k.arg)}}}(a,e,j),h}function c(a,b,c){try{return{type:"normal",arg:a.call(b,c)}}catch(a){return{type:"throw",arg:a}}}function d(){}function e(){}function f(){}function g(b){["next","throw","return"].forEach(function(c){a(b,c,function(a){return this._invoke(c,a)})})}function h(a,b){function d(e,f,g,h){var i=c(a[e],a,f);if("throw"!==i.type){var j=i.arg,k=j.value;return k&&"object"==_typeof(k)&&q.call(k,"__await")?b.resolve(k.__await).then(function(a){d("next",a,g,h)},function(a){d("throw",a,g,h)}):b.resolve(k).then(function(a){j.value=a,g(j)},function(a){return d("throw",a,g,h)})}h(i.arg)}var e;this._invoke=function(a,c){function f(){return new b(function(b,e){d(a,c,b,e)})}return e=e?e.then(f,f):f()}}function i(a,b){var d=a.iterator[b.method];if(void 0===d){if(b.delegate=null,"throw"===b.method){if(a.iterator["return"]&&(b.method="return",b.arg=void 0,i(a,b),"throw"===b.method))return v;b.method="throw",b.arg=new TypeError("The iterator does not provide a 'throw' method")}return v}var e=c(d,a.iterator,b.arg);if("throw"===e.type)return b.method="throw",b.arg=e.arg,b.delegate=null,v;var f=e.arg;return f?f.done?(b[a.resultName]=f.value,b.next=a.nextLoc,"return"!==b.method&&(b.method="next",b.arg=void 0),b.delegate=null,v):f:(b.method="throw",b.arg=new TypeError("iterator result is not an object"),b.delegate=null,v)}function j(a){var b={tryLoc:a[0]};1 in a&&(b.catchLoc=a[1]),2 in a&&(b.finallyLoc=a[2],b.afterLoc=a[3]),this.tryEntries.push(b)}function k(a){var b=a.completion||{};b.type="normal",delete b.arg,a.completion=b}function l(a){this.tryEntries=[{tryLoc:"root"}],a.forEach(j,this),this.reset(!0)}function m(a){if(a){var b=a[s];if(b)return b.call(a);if("function"==typeof a.next)return a;if(!isNaN(a.length)){var c=-1,d=function b(){for(;++c<a.length;)if(q.call(a,c))return b.value=a[c],b.done=!1,b;return b.value=void 0,b.done=!0,b};return d.next=d}}return{next:n}}function n(){return{value:void 0,done:!0}}_regeneratorRuntime=function(){return o};var o={},p=Object.prototype,q=p.hasOwnProperty,r="function"==typeof Symbol?Symbol:{},s=r.iterator||"@@iterator",t=r.asyncIterator||"@@asyncIterator",u=r.toStringTag||"@@toStringTag";try{a({},"")}catch(b){a=function(a,b,c){return a[b]=c}}o.wrap=b;var v={},w={};a(w,s,function(){return this});var x=Object.getPrototypeOf,y=x&&x(x(m([])));y&&y!==p&&q.call(y,s)&&(w=y);var z=f.prototype=d.prototype=Object.create(w);return e.prototype=f,a(z,"constructor",f),a(f,"constructor",e),e.displayName=a(f,u,"GeneratorFunction"),o.isGeneratorFunction=function(a){var b="function"==typeof a&&a.constructor;return!!b&&(b===e||"GeneratorFunction"===(b.displayName||b.name))},o.mark=function(b){return Object.setPrototypeOf?Object.setPrototypeOf(b,f):(b.__proto__=f,a(b,u,"GeneratorFunction")),b.prototype=Object.create(z),b},o.awrap=function(a){return{__await:a}},g(h.prototype),a(h.prototype,t,function(){return this}),o.AsyncIterator=h,o.async=function(a,c,d,e,f){void 0===f&&(f=Promise);var g=new h(b(a,c,d,e),f);return o.isGeneratorFunction(c)?g:g.next().then(function(a){return a.done?a.value:g.next()})},g(z),a(z,u,"Generator"),a(z,s,function(){return this}),a(z,"toString",function(){return"[object Generator]"}),o.keys=function(a){var b=[];for(var c in a)b.push(c);return b.reverse(),function c(){for(;b.length;){var d=b.pop();if(d in a)return c.value=d,c.done=!1,c}return c.done=!0,c}},o.values=m,l.prototype={constructor:l,reset:function reset(a){if(this.prev=0,this.next=0,this.sent=this._sent=void 0,this.done=!1,this.delegate=null,this.method="next",this.arg=void 0,this.tryEntries.forEach(k),!a)for(var b in this)"t"===b.charAt(0)&&q.call(this,b)&&!isNaN(+b.slice(1))&&(this[b]=void 0)},stop:function stop(){this.done=!0;var a=this.tryEntries[0].completion;if("throw"===a.type)throw a.arg;return this.rval},dispatchException:function dispatchException(a){function b(b,d){return f.type="throw",f.arg=a,c.next=b,d&&(c.method="next",c.arg=void 0),!!d}if(this.done)throw a;for(var c=this,d=this.tryEntries.length-1;0<=d;--d){var e=this.tryEntries[d],f=e.completion;if("root"===e.tryLoc)return b("end");if(e.tryLoc<=this.prev){var g=q.call(e,"catchLoc"),h=q.call(e,"finallyLoc");if(g&&h){if(this.prev<e.catchLoc)return b(e.catchLoc,!0);if(this.prev<e.finallyLoc)return b(e.finallyLoc)}else if(!g){if(!h)throw new Error("try statement without catch or finally");if(this.prev<e.finallyLoc)return b(e.finallyLoc)}else if(this.prev<e.catchLoc)return b(e.catchLoc,!0)}}},abrupt:function abrupt(a,b){for(var c,d=this.tryEntries.length-1;0<=d;--d)if(c=this.tryEntries[d],c.tryLoc<=this.prev&&q.call(c,"finallyLoc")&&this.prev<c.finallyLoc){var e=c;break}e&&("break"===a||"continue"===a)&&e.tryLoc<=b&&b<=e.finallyLoc&&(e=null);var f=e?e.completion:{};return f.type=a,f.arg=b,e?(this.method="next",this.next=e.finallyLoc,v):this.complete(f)},complete:function complete(a,b){if("throw"===a.type)throw a.arg;return"break"===a.type||"continue"===a.type?this.next=a.arg:"return"===a.type?(this.rval=this.arg=a.arg,this.method="return",this.next="end"):"normal"===a.type&&b&&(this.next=b),v},finish:function finish(a){for(var b,c=this.tryEntries.length-1;0<=c;--c)if(b=this.tryEntries[c],b.finallyLoc===a)return this.complete(b.completion,b.afterLoc),k(b),v},catch:function _catch(a){for(var b,c=this.tryEntries.length-1;0<=c;--c)if(b=this.tryEntries[c],b.tryLoc===a){var d=b.completion;if("throw"===d.type){var e=d.arg;k(b)}return e}throw new Error("illegal catch attempt")},delegateYield:function delegateYield(a,b,c){return this.delegate={iterator:m(a),resultName:b,nextLoc:c},"next"===this.method&&(this.arg=void 0),v}},o}function asyncGeneratorStep(a,b,c,d,e,f,g){try{var h=a[f](g),i=h.value}catch(a){return void c(a)}h.done?b(i):Promise.resolve(i).then(d,e)}function _asyncToGenerator(a){return function(){var b=this,c=arguments;return new Promise(function(d,e){function f(a){asyncGeneratorStep(h,d,e,f,g,"next",a)}function g(a){asyncGeneratorStep(h,d,e,f,g,"throw",a)}var h=a.apply(b,c);f(void 0)})}}var dbController={// ===================== user db =====================
+registerNewUser:function registerNewUser(a,b){_dbconn.dbConnection.user.getConnection(function(c,d){d.beginTransaction(function(b){// START TRANSACTION
+if(b)throw b;// insert profile
+d.query("INSERT INTO user SET ?",a.profile,function(b,c){if(b)return d.rollback(function(){throw b});var e=c.insertId,f={user_id:e,password:a.password};// set password
+d.query("INSERT INTO credential SET ?",f,function(b){if(b)return d.rollback(function(){throw b});// set default user-project-role
+d.query("INSERT INTO user_project_role SET ?",{project_id:1,// M4_LAB
+role_id:2,// USER
+user_id:e},function(b){if(b)return d.rollback(function(){throw b});// MLAB-129: INSERT verification token
+var c={user_id:e,token:a.verificationToken};d.query("INSERT INTO verification SET ?",c,function(a){return a?d.rollback(function(){throw a}):void// COMMIT
+d.commit(function(a){if(a)return d.rollback(function(){throw a})})})})})})}),b(c)})},getUserByEmail:function(){function a(){return b.apply(this,arguments)}var b=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function b(a){var c;return _regeneratorRuntime().wrap(function d(b){for(;1;)switch(b.prev=b.next){case 0:return b.prev=0,b.next=3,_dbconn.dbConnection.user.promise().query("SELECT id, verificationStatus, salutation, title, firstname, lastname, industry, organisation, speciality, m4lab_idp FROM user WHERE email = \""+a+"\"");case 3:if(c=b.sent,!c[0][0]){b.next=8;break}return b.abrupt("return",c[0][0]);case 8:return b.abrupt("return",null);case 9:b.next=14;break;case 11:b.prev=11,b.t0=b["catch"](0),console.error(b.t0);case 14:return b.abrupt("return",null);case 15:case"end":return b.stop();}},b,null,[[0,11]])}));return a}(),getUserEmailById:function(){function a(a){return b.apply(this,arguments)}var b=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function b(a){var c;return _regeneratorRuntime().wrap(function d(b){for(;1;)switch(b.prev=b.next){case 0:return b.prev=0,b.next=3,_dbconn.dbConnection.user.promise().query("SELECT email FROM user WHERE id = "+a);case 3:if(c=b.sent,!c[0][0]){b.next=8;break}return b.abrupt("return",c[0][0].email);case 8:return b.abrupt("return",null);case 9:b.next=14;break;case 11:b.prev=11,b.t0=b["catch"](0),console.error(b.t0);case 14:return b.abrupt("return",null);case 15:case"end":return b.stop();}},b,null,[[0,11]])}));return a}(),checkUserEmail:function(){function a(a){return b.apply(this,arguments)}var b=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function b(a){var c;return _regeneratorRuntime().wrap(function d(b){for(;1;)switch(b.prev=b.next){case 0:return b.prev=0,b.next=3,_dbconn.dbConnection.user.promise().query("SELECT id, email FROM user WHERE email = \""+a+"\"");case 3:if(c=b.sent,!c[0][0]){b.next=8;break}return b.abrupt("return",c[0][0]);case 8:return b.abrupt("return",null);case 9:b.next=14;break;case 11:b.prev=11,b.t0=b["catch"](0),console.error(b.t0);case 14:return b.abrupt("return",null);case 15:case"end":return b.stop();}},b,null,[[0,11]])}));return a}(),getUserByToken:function(){function a(a){return b.apply(this,arguments)}var b=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function b(a){var c;return _regeneratorRuntime().wrap(function d(b){for(;1;)switch(b.prev=b.next){case 0:return b.prev=0,b.next=3,_dbconn.dbConnection.user.promise().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 = \""+a+"\" and resetPasswordExpires > "+Date.now());case 3:if(c=b.sent,!c[0][0]){b.next=8;break}return b.abrupt("return",c[0][0]);case 8:return b.abrupt("return",null);case 9:b.next=14;break;case 11:b.prev=11,b.t0=b["catch"](0),console.error(b.t0);case 14:return b.abrupt("return",null);case 15:case"end":return b.stop();}},b,null,[[0,11]])}));return a}(),updateUserById:function(){function a(a,c){return b.apply(this,arguments)}var b=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function c(a,b){var d;return _regeneratorRuntime().wrap(function e(c){for(;1;)switch(c.prev=c.next){case 0:return c.prev=0,c.next=3,_dbconn.dbConnection.user.promise().query("UPDATE user SET ? WHERE id = "+a,b);case 3:return d=c.sent,c.abrupt("return",d);case 7:c.prev=7,c.t0=c["catch"](0),console.error(c.t0);case 10:return c.abrupt("return",null);case 11:case"end":return c.stop();}},c,null,[[0,7]])}));return a}(),updateCredential:function(){function a(a){return b.apply(this,arguments)}var b=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function b(a){var c;return _regeneratorRuntime().wrap(function d(b){for(;1;)switch(b.prev=b.next){case 0:return b.prev=0,b.next=3,_dbconn.dbConnection.user.promise().query("UPDATE credential SET ? WHERE user_id = "+a.user_id,a);case 3:return c=b.sent,b.abrupt("return",c);case 7:b.prev=7,b.t0=b["catch"](0),console.error(b.t0);case 10:return b.abrupt("return",null);case 11:case"end":return b.stop();}},b,null,[[0,7]])}));return a}(),addUserProjectRole_OBSOLETE:function addUserProjectRole_OBSOLETE(a,b){_dbconn.dbConnection.user.query("INSERT INTO user_project_role SET ?",a,function(a){if(a)throw a;b(a)})},getVerificationTokenByUserId:function(){function a(a){return b.apply(this,arguments)}var b=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function b(a){var c;return _regeneratorRuntime().wrap(function d(b){for(;1;)switch(b.prev=b.next){case 0:return b.prev=0,b.next=3,_dbconn.dbConnection.user.promise().query("SELECT token FROM verification WHERE user_id = \""+a+"\"");case 3:if(c=b.sent,!c[0][0]){b.next=8;break}return b.abrupt("return",c[0][0].token);case 8:return b.abrupt("return",null);case 9:b.next=14;break;case 11:b.prev=11,b.t0=b["catch"](0),console.error(b.t0);case 14:return b.abrupt("return",null);case 15:case"end":return b.stop();}},b,null,[[0,11]])}));return a}(),getUserIdByVerificationToken:function(){function a(a){return b.apply(this,arguments)}var b=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function b(a){var c;return _regeneratorRuntime().wrap(function d(b){for(;1;)switch(b.prev=b.next){case 0:return b.prev=0,b.next=3,_dbconn.dbConnection.user.promise().query("SELECT user_id FROM verification WHERE token = \""+a+"\"");case 3:if(c=b.sent,!c[0][0]){b.next=8;break}return b.abrupt("return",c[0][0].user_id);case 8:return b.abrupt("return",null);case 9:b.next=14;break;case 11:b.prev=11,b.t0=b["catch"](0),console.error(b.t0);case 14:return b.abrupt("return",null);case 15:case"end":return b.stop();}},b,null,[[0,11]])}));return a}(),verifyUserAccount:function verifyUserAccount(a,b){_dbconn.dbConnection.user.getConnection(function(c,d){d.beginTransaction(function(b){// START TRANSACTION
+if(b)throw b;// update user status
+d.query("UPDATE user SET ? WHERE id ="+a.id,a,function(b,c,e){return b?d.rollback(function(){throw b}):void// delete verification token
+d.query("DELETE FROM verification WHERE user_id = "+a.id,function(a,b,c){return a?d.rollback(function(){throw a}):void// COMMIT
+d.commit(function(a){if(a)return d.rollback(function(){throw a})})})})}),b(c)})},/* ===== GitLab ===== */getGitlabId:function(){function a(a){return b.apply(this,arguments)}var b=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function b(a){var c;return _regeneratorRuntime().wrap(function d(b){for(;1;)switch(b.prev=b.next){case 0:return b.prev=0,b.next=3,_dbconn.dbConnection.user.promise().query("SELECT gu.gitlab_userId FROM user_gitlab gu, user u WHERE u.id = \""+a+"\" and gu.user_id = u.id");case 3:if(c=b.sent,!c[0][0]){b.next=8;break}return b.abrupt("return",c[0][0].gitlab_userId);case 8:return b.abrupt("return",null);case 9:b.next=15;break;case 11:return b.prev=11,b.t0=b["catch"](0),console.error(b.t0),b.abrupt("return",b.t0);case 15:case"end":return b.stop();}},b,null,[[0,11]])}));return a}(),addGitlabUser:function addGitlabUser(a,b){_dbconn.dbConnection.user.query("INSERT INTO user_gitlab SET ?",a,function(a){if(a)throw a;b(a)})}};exports.dbController=dbController;
\ No newline at end of file
diff --git a/built/controller/gitlabController.js b/built/controller/gitlabController.js
new file mode 100644
index 00000000..053f4ca9
--- /dev/null
+++ b/built/controller/gitlabController.js
@@ -0,0 +1,2 @@
+"use strict";function _typeof(a){"@babel/helpers - typeof";return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a},_typeof(a)}Object.defineProperty(exports,"__esModule",{value:!0}),exports.gitlabController=void 0;var _process$env$NODE_ENV,_axios=_interopRequireDefault(require("axios")),_fs=_interopRequireDefault(require("fs")),_formData=_interopRequireDefault(require("form-data"));function _interopRequireDefault(a){return a&&a.__esModule?a:{default:a}}function ownKeys(a,b){var c=Object.keys(a);if(Object.getOwnPropertySymbols){var d=Object.getOwnPropertySymbols(a);b&&(d=d.filter(function(b){return Object.getOwnPropertyDescriptor(a,b).enumerable})),c.push.apply(c,d)}return c}function _objectSpread(a){for(var b,c=1;c<arguments.length;c++)b=null==arguments[c]?{}:arguments[c],c%2?ownKeys(Object(b),!0).forEach(function(c){_defineProperty(a,c,b[c])}):Object.getOwnPropertyDescriptors?Object.defineProperties(a,Object.getOwnPropertyDescriptors(b)):ownKeys(Object(b)).forEach(function(c){Object.defineProperty(a,c,Object.getOwnPropertyDescriptor(b,c))});return a}function _defineProperty(a,b,c){return b in a?Object.defineProperty(a,b,{value:c,enumerable:!0,configurable:!0,writable:!0}):a[b]=c,a}function _regeneratorRuntime(){"use strict";/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */function a(a,b,c){return Object.defineProperty(a,b,{value:c,enumerable:!0,configurable:!0,writable:!0}),a[b]}function b(a,b,e,f){var g=b&&b.prototype instanceof d?b:d,h=Object.create(g.prototype),j=new l(f||[]);return h._invoke=function(a,b,d){var e="suspendedStart";return function(f,g){if("executing"===e)throw new Error("Generator is already running");if("completed"===e){if("throw"===f)throw g;return n()}for(d.method=f,d.arg=g;;){var h=d.delegate;if(h){var j=i(h,d);if(j){if(j===v)continue;return j}}if("next"===d.method)d.sent=d._sent=d.arg;else if("throw"===d.method){if("suspendedStart"===e)throw e="completed",d.arg;d.dispatchException(d.arg)}else"return"===d.method&&d.abrupt("return",d.arg);e="executing";var k=c(a,b,d);if("normal"===k.type){if(e=d.done?"completed":"suspendedYield",k.arg===v)continue;return{value:k.arg,done:d.done}}"throw"===k.type&&(e="completed",d.method="throw",d.arg=k.arg)}}}(a,e,j),h}function c(a,b,c){try{return{type:"normal",arg:a.call(b,c)}}catch(a){return{type:"throw",arg:a}}}function d(){}function e(){}function f(){}function g(b){["next","throw","return"].forEach(function(c){a(b,c,function(a){return this._invoke(c,a)})})}function h(a,b){function d(e,f,g,h){var i=c(a[e],a,f);if("throw"!==i.type){var j=i.arg,k=j.value;return k&&"object"==_typeof(k)&&q.call(k,"__await")?b.resolve(k.__await).then(function(a){d("next",a,g,h)},function(a){d("throw",a,g,h)}):b.resolve(k).then(function(a){j.value=a,g(j)},function(a){return d("throw",a,g,h)})}h(i.arg)}var e;this._invoke=function(a,c){function f(){return new b(function(b,e){d(a,c,b,e)})}return e=e?e.then(f,f):f()}}function i(a,b){var d=a.iterator[b.method];if(void 0===d){if(b.delegate=null,"throw"===b.method){if(a.iterator["return"]&&(b.method="return",b.arg=void 0,i(a,b),"throw"===b.method))return v;b.method="throw",b.arg=new TypeError("The iterator does not provide a 'throw' method")}return v}var e=c(d,a.iterator,b.arg);if("throw"===e.type)return b.method="throw",b.arg=e.arg,b.delegate=null,v;var f=e.arg;return f?f.done?(b[a.resultName]=f.value,b.next=a.nextLoc,"return"!==b.method&&(b.method="next",b.arg=void 0),b.delegate=null,v):f:(b.method="throw",b.arg=new TypeError("iterator result is not an object"),b.delegate=null,v)}function j(a){var b={tryLoc:a[0]};1 in a&&(b.catchLoc=a[1]),2 in a&&(b.finallyLoc=a[2],b.afterLoc=a[3]),this.tryEntries.push(b)}function k(a){var b=a.completion||{};b.type="normal",delete b.arg,a.completion=b}function l(a){this.tryEntries=[{tryLoc:"root"}],a.forEach(j,this),this.reset(!0)}function m(a){if(a){var b=a[s];if(b)return b.call(a);if("function"==typeof a.next)return a;if(!isNaN(a.length)){var c=-1,d=function b(){for(;++c<a.length;)if(q.call(a,c))return b.value=a[c],b.done=!1,b;return b.value=void 0,b.done=!0,b};return d.next=d}}return{next:n}}function n(){return{value:void 0,done:!0}}_regeneratorRuntime=function(){return o};var o={},p=Object.prototype,q=p.hasOwnProperty,r="function"==typeof Symbol?Symbol:{},s=r.iterator||"@@iterator",t=r.asyncIterator||"@@asyncIterator",u=r.toStringTag||"@@toStringTag";try{a({},"")}catch(b){a=function(a,b,c){return a[b]=c}}o.wrap=b;var v={},w={};a(w,s,function(){return this});var x=Object.getPrototypeOf,y=x&&x(x(m([])));y&&y!==p&&q.call(y,s)&&(w=y);var z=f.prototype=d.prototype=Object.create(w);return e.prototype=f,a(z,"constructor",f),a(f,"constructor",e),e.displayName=a(f,u,"GeneratorFunction"),o.isGeneratorFunction=function(a){var b="function"==typeof a&&a.constructor;return!!b&&(b===e||"GeneratorFunction"===(b.displayName||b.name))},o.mark=function(b){return Object.setPrototypeOf?Object.setPrototypeOf(b,f):(b.__proto__=f,a(b,u,"GeneratorFunction")),b.prototype=Object.create(z),b},o.awrap=function(a){return{__await:a}},g(h.prototype),a(h.prototype,t,function(){return this}),o.AsyncIterator=h,o.async=function(a,c,d,e,f){void 0===f&&(f=Promise);var g=new h(b(a,c,d,e),f);return o.isGeneratorFunction(c)?g:g.next().then(function(a){return a.done?a.value:g.next()})},g(z),a(z,u,"Generator"),a(z,s,function(){return this}),a(z,"toString",function(){return"[object Generator]"}),o.keys=function(a){var b=[];for(var c in a)b.push(c);return b.reverse(),function c(){for(;b.length;){var d=b.pop();if(d in a)return c.value=d,c.done=!1,c}return c.done=!0,c}},o.values=m,l.prototype={constructor:l,reset:function reset(a){if(this.prev=0,this.next=0,this.sent=this._sent=void 0,this.done=!1,this.delegate=null,this.method="next",this.arg=void 0,this.tryEntries.forEach(k),!a)for(var b in this)"t"===b.charAt(0)&&q.call(this,b)&&!isNaN(+b.slice(1))&&(this[b]=void 0)},stop:function stop(){this.done=!0;var a=this.tryEntries[0].completion;if("throw"===a.type)throw a.arg;return this.rval},dispatchException:function dispatchException(a){function b(b,d){return f.type="throw",f.arg=a,c.next=b,d&&(c.method="next",c.arg=void 0),!!d}if(this.done)throw a;for(var c=this,d=this.tryEntries.length-1;0<=d;--d){var e=this.tryEntries[d],f=e.completion;if("root"===e.tryLoc)return b("end");if(e.tryLoc<=this.prev){var g=q.call(e,"catchLoc"),h=q.call(e,"finallyLoc");if(g&&h){if(this.prev<e.catchLoc)return b(e.catchLoc,!0);if(this.prev<e.finallyLoc)return b(e.finallyLoc)}else if(!g){if(!h)throw new Error("try statement without catch or finally");if(this.prev<e.finallyLoc)return b(e.finallyLoc)}else if(this.prev<e.catchLoc)return b(e.catchLoc,!0)}}},abrupt:function abrupt(a,b){for(var c,d=this.tryEntries.length-1;0<=d;--d)if(c=this.tryEntries[d],c.tryLoc<=this.prev&&q.call(c,"finallyLoc")&&this.prev<c.finallyLoc){var e=c;break}e&&("break"===a||"continue"===a)&&e.tryLoc<=b&&b<=e.finallyLoc&&(e=null);var f=e?e.completion:{};return f.type=a,f.arg=b,e?(this.method="next",this.next=e.finallyLoc,v):this.complete(f)},complete:function complete(a,b){if("throw"===a.type)throw a.arg;return"break"===a.type||"continue"===a.type?this.next=a.arg:"return"===a.type?(this.rval=this.arg=a.arg,this.method="return",this.next="end"):"normal"===a.type&&b&&(this.next=b),v},finish:function finish(a){for(var b,c=this.tryEntries.length-1;0<=c;--c)if(b=this.tryEntries[c],b.finallyLoc===a)return this.complete(b.completion,b.afterLoc),k(b),v},catch:function _catch(a){for(var b,c=this.tryEntries.length-1;0<=c;--c)if(b=this.tryEntries[c],b.tryLoc===a){var d=b.completion;if("throw"===d.type){var e=d.arg;k(b)}return e}throw new Error("illegal catch attempt")},delegateYield:function delegateYield(a,b,c){return this.delegate={iterator:m(a),resultName:b,nextLoc:c},"next"===this.method&&(this.arg=void 0),v}},o}function asyncGeneratorStep(a,b,c,d,e,f,g){try{var h=a[f](g),i=h.value}catch(a){return void c(a)}h.done?b(i):Promise.resolve(i).then(d,e)}function _asyncToGenerator(a){return function(){var b=this,c=arguments;return new Promise(function(d,e){function f(a){asyncGeneratorStep(h,d,e,f,g,"next",a)}function g(a){asyncGeneratorStep(h,d,e,f,g,"throw",a)}var h=a.apply(b,c);f(void 0)})}}var env=null!==(_process$env$NODE_ENV=process.env.NODE_ENV)&&void 0!==_process$env$NODE_ENV?_process$env$NODE_ENV:"testing",config=require("../config/config")[env],gitlabController={getUserByEmail:function(){function a(){return b.apply(this,arguments)}var b=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function b(a){return _regeneratorRuntime().wrap(function c(b){for(;1;)switch(b.prev=b.next){case 0:return b.next=2,(0,_axios["default"])({method:"get",url:"https://transfer.hft-stuttgart.de/gitlab/api/v4/users?search="+a,headers:{Authorization:"Bearer "+config.gitlab.token_readWriteProjects}}).then(function(a){return a.data[0]})["catch"](function(a){return console.error(a),null});case 2:return b.abrupt("return",b.sent);case 3:case"end":return b.stop();}},b)}));return a}(),createNewPages:function(){function a(a,c,d){return b.apply(this,arguments)}var b=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function d(a,b,c){var e;return _regeneratorRuntime().wrap(function f(d){for(;1;)switch(d.prev=d.next){case 0:return e=new _formData["default"],e.append("avatar",_fs["default"].createReadStream(b)),d.next=4,(0,_axios["default"])({method:"post",url:"https://transfer.hft-stuttgart.de/gitlab/api/v4/projects/user/"+(a.getOwnerGitlabId()+"?name=")+(a.getName()+"&description=")+(a.getDesc()+"&tag_list=website&use_custom_template=true&template_name=")+c,headers:_objectSpread({Authorization:"Bearer "+config.gitlab.token_readWriteProjects},e.getHeaders()),data:e}).then(function(a){return a.data})["catch"](function(a){return console.error("ERR Status: "+a.response.status),console.error("ERR Name: "+a.response.data.message.name),console.error("ERR Path: "+a.response.data.message.path),a.response});case 4:return d.abrupt("return",d.sent);case 5:case"end":return d.stop();}},d)}));return a}(),updateProject:function(){function a(a,c){return b.apply(this,arguments)}var b=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function c(a,b){var d;return _regeneratorRuntime().wrap(function e(c){for(;1;)switch(c.prev=c.next){case 0:return d=new _formData["default"],b&&d.append("avatar",_fs["default"].createReadStream(b)),c.next=4,(0,_axios["default"])({method:"put",url:"https://transfer.hft-stuttgart.de/gitlab/api/v4/projects/"+a.getId()+"?name="+a.getName()+"&description="+a.getDesc(),headers:_objectSpread({Authorization:"Bearer "+config.gitlab.token_readWriteProjects},d.getHeaders()),data:d})// .then(res => res.data[0])
+.then(function(a){return a.data})["catch"](function(a){return console.error("ERR Status: "+a.response.status),console.error("ERR Name: "+a.response.data.message.name),console.error("ERR Path: "+a.response.data.message.path),a.response});case 4:return c.abrupt("return",c.sent);case 5:case"end":return c.stop();}},c)}));return a}(),deleteProjectById:function(){function a(a){return b.apply(this,arguments)}var b=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function b(a){return _regeneratorRuntime().wrap(function c(b){for(;1;)switch(b.prev=b.next){case 0:return b.next=2,(0,_axios["default"])({method:"delete",url:"https://transfer.hft-stuttgart.de/gitlab/api/v4/projects/"+a,headers:{Authorization:"Bearer "+config.gitlab.token_readWriteProjects}}).then(function(a){return!0})["catch"](function(a){return console.error("ERR Status: "+a.response.status),console.error("ERR Name: "+a.response.data.message.name),console.error("ERR Path: "+a.response.data.message.path),!1});case 2:return b.abrupt("return",b.sent);case 3:case"end":return b.stop();}},b)}));return a}(),getUserProjects:function(){function a(a){return b.apply(this,arguments)}var b=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function b(a){return _regeneratorRuntime().wrap(function c(b){for(;1;)switch(b.prev=b.next){case 0:return b.next=2,(0,_axios["default"])({method:"get",url:"https://transfer.hft-stuttgart.de/gitlab/api/v4/users/"+a+"/projects?owned=true&visibility=public",headers:{Authorization:"Bearer "+config.gitlab.token_readWriteProjects}}).then(function(a){return a.data})["catch"](function(a){return console.error(a),null});case 2:return b.abrupt("return",b.sent);case 3:case"end":return b.stop();}},b)}));return a}(),getProjectById:function(){function a(a){return b.apply(this,arguments)}var b=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function b(a){return _regeneratorRuntime().wrap(function c(b){for(;1;)switch(b.prev=b.next){case 0:return b.next=2,(0,_axios["default"])({method:"get",url:"https://transfer.hft-stuttgart.de/gitlab/api/v4/projects/"+a,headers:{Authorization:"Bearer "+config.gitlab.token_readWriteProjects}}).then(function(a){return a.data})["catch"](function(a){return console.error(a),null});case 2:return b.abrupt("return",b.sent);case 3:case"end":return b.stop();}},b)}));return a}(),getProjectPipelineLatestStatus:function(){function a(a){return b.apply(this,arguments)}var b=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function b(a){return _regeneratorRuntime().wrap(function c(b){for(;1;)switch(b.prev=b.next){case 0:return b.next=2,(0,_axios["default"])({method:"get",url:"https://transfer.hft-stuttgart.de/gitlab/api/v4/projects/"+a+"/pipelines"}).then(function(a){return a.data[0].status})["catch"](function(a){return console.error(a),null});case 2:return b.abrupt("return",b.sent);case 3:case"end":return b.stop();}},b)}));return a}()};exports.gitlabController=gitlabController;
\ No newline at end of file
diff --git a/built/controller/publicController.js b/built/controller/publicController.js
new file mode 100644
index 00000000..c425b148
--- /dev/null
+++ b/built/controller/publicController.js
@@ -0,0 +1,9 @@
+"use strict";function _typeof(a){"@babel/helpers - typeof";return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a},_typeof(a)}Object.defineProperty(exports,"__esModule",{value:!0}),exports.publicController=void 0;var _async=_interopRequireDefault(require("async")),_bcryptjs=_interopRequireDefault(require("bcryptjs")),_mailer=require("../config/mailer"),_const=require("../config/const"),_dbController=require("./dbController");function _interopRequireDefault(a){return a&&a.__esModule?a:{default:a}}function _regeneratorRuntime(){"use strict";/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */function a(a,b,c){return Object.defineProperty(a,b,{value:c,enumerable:!0,configurable:!0,writable:!0}),a[b]}function b(a,b,e,f){var g=b&&b.prototype instanceof d?b:d,h=Object.create(g.prototype),j=new l(f||[]);return h._invoke=function(a,b,d){var e="suspendedStart";return function(f,g){if("executing"===e)throw new Error("Generator is already running");if("completed"===e){if("throw"===f)throw g;return n()}for(d.method=f,d.arg=g;;){var h=d.delegate;if(h){var j=i(h,d);if(j){if(j===v)continue;return j}}if("next"===d.method)d.sent=d._sent=d.arg;else if("throw"===d.method){if("suspendedStart"===e)throw e="completed",d.arg;d.dispatchException(d.arg)}else"return"===d.method&&d.abrupt("return",d.arg);e="executing";var k=c(a,b,d);if("normal"===k.type){if(e=d.done?"completed":"suspendedYield",k.arg===v)continue;return{value:k.arg,done:d.done}}"throw"===k.type&&(e="completed",d.method="throw",d.arg=k.arg)}}}(a,e,j),h}function c(a,b,c){try{return{type:"normal",arg:a.call(b,c)}}catch(a){return{type:"throw",arg:a}}}function d(){}function e(){}function f(){}function g(b){["next","throw","return"].forEach(function(c){a(b,c,function(a){return this._invoke(c,a)})})}function h(a,b){function d(e,f,g,h){var i=c(a[e],a,f);if("throw"!==i.type){var j=i.arg,k=j.value;return k&&"object"==_typeof(k)&&q.call(k,"__await")?b.resolve(k.__await).then(function(a){d("next",a,g,h)},function(a){d("throw",a,g,h)}):b.resolve(k).then(function(a){j.value=a,g(j)},function(a){return d("throw",a,g,h)})}h(i.arg)}var e;this._invoke=function(a,c){function f(){return new b(function(b,e){d(a,c,b,e)})}return e=e?e.then(f,f):f()}}function i(a,b){var d=a.iterator[b.method];if(void 0===d){if(b.delegate=null,"throw"===b.method){if(a.iterator["return"]&&(b.method="return",b.arg=void 0,i(a,b),"throw"===b.method))return v;b.method="throw",b.arg=new TypeError("The iterator does not provide a 'throw' method")}return v}var e=c(d,a.iterator,b.arg);if("throw"===e.type)return b.method="throw",b.arg=e.arg,b.delegate=null,v;var f=e.arg;return f?f.done?(b[a.resultName]=f.value,b.next=a.nextLoc,"return"!==b.method&&(b.method="next",b.arg=void 0),b.delegate=null,v):f:(b.method="throw",b.arg=new TypeError("iterator result is not an object"),b.delegate=null,v)}function j(a){var b={tryLoc:a[0]};1 in a&&(b.catchLoc=a[1]),2 in a&&(b.finallyLoc=a[2],b.afterLoc=a[3]),this.tryEntries.push(b)}function k(a){var b=a.completion||{};b.type="normal",delete b.arg,a.completion=b}function l(a){this.tryEntries=[{tryLoc:"root"}],a.forEach(j,this),this.reset(!0)}function m(a){if(a){var b=a[s];if(b)return b.call(a);if("function"==typeof a.next)return a;if(!isNaN(a.length)){var c=-1,d=function b(){for(;++c<a.length;)if(q.call(a,c))return b.value=a[c],b.done=!1,b;return b.value=void 0,b.done=!0,b};return d.next=d}}return{next:n}}function n(){return{value:void 0,done:!0}}_regeneratorRuntime=function(){return o};var o={},p=Object.prototype,q=p.hasOwnProperty,r="function"==typeof Symbol?Symbol:{},s=r.iterator||"@@iterator",t=r.asyncIterator||"@@asyncIterator",u=r.toStringTag||"@@toStringTag";try{a({},"")}catch(b){a=function(a,b,c){return a[b]=c}}o.wrap=b;var v={},w={};a(w,s,function(){return this});var x=Object.getPrototypeOf,y=x&&x(x(m([])));y&&y!==p&&q.call(y,s)&&(w=y);var z=f.prototype=d.prototype=Object.create(w);return e.prototype=f,a(z,"constructor",f),a(f,"constructor",e),e.displayName=a(f,u,"GeneratorFunction"),o.isGeneratorFunction=function(a){var b="function"==typeof a&&a.constructor;return!!b&&(b===e||"GeneratorFunction"===(b.displayName||b.name))},o.mark=function(b){return Object.setPrototypeOf?Object.setPrototypeOf(b,f):(b.__proto__=f,a(b,u,"GeneratorFunction")),b.prototype=Object.create(z),b},o.awrap=function(a){return{__await:a}},g(h.prototype),a(h.prototype,t,function(){return this}),o.AsyncIterator=h,o.async=function(a,c,d,e,f){void 0===f&&(f=Promise);var g=new h(b(a,c,d,e),f);return o.isGeneratorFunction(c)?g:g.next().then(function(a){return a.done?a.value:g.next()})},g(z),a(z,u,"Generator"),a(z,s,function(){return this}),a(z,"toString",function(){return"[object Generator]"}),o.keys=function(a){var b=[];for(var c in a)b.push(c);return b.reverse(),function c(){for(;b.length;){var d=b.pop();if(d in a)return c.value=d,c.done=!1,c}return c.done=!0,c}},o.values=m,l.prototype={constructor:l,reset:function reset(a){if(this.prev=0,this.next=0,this.sent=this._sent=void 0,this.done=!1,this.delegate=null,this.method="next",this.arg=void 0,this.tryEntries.forEach(k),!a)for(var b in this)"t"===b.charAt(0)&&q.call(this,b)&&!isNaN(+b.slice(1))&&(this[b]=void 0)},stop:function stop(){this.done=!0;var a=this.tryEntries[0].completion;if("throw"===a.type)throw a.arg;return this.rval},dispatchException:function dispatchException(a){function b(b,d){return f.type="throw",f.arg=a,c.next=b,d&&(c.method="next",c.arg=void 0),!!d}if(this.done)throw a;for(var c=this,d=this.tryEntries.length-1;0<=d;--d){var e=this.tryEntries[d],f=e.completion;if("root"===e.tryLoc)return b("end");if(e.tryLoc<=this.prev){var g=q.call(e,"catchLoc"),h=q.call(e,"finallyLoc");if(g&&h){if(this.prev<e.catchLoc)return b(e.catchLoc,!0);if(this.prev<e.finallyLoc)return b(e.finallyLoc)}else if(!g){if(!h)throw new Error("try statement without catch or finally");if(this.prev<e.finallyLoc)return b(e.finallyLoc)}else if(this.prev<e.catchLoc)return b(e.catchLoc,!0)}}},abrupt:function abrupt(a,b){for(var c,d=this.tryEntries.length-1;0<=d;--d)if(c=this.tryEntries[d],c.tryLoc<=this.prev&&q.call(c,"finallyLoc")&&this.prev<c.finallyLoc){var e=c;break}e&&("break"===a||"continue"===a)&&e.tryLoc<=b&&b<=e.finallyLoc&&(e=null);var f=e?e.completion:{};return f.type=a,f.arg=b,e?(this.method="next",this.next=e.finallyLoc,v):this.complete(f)},complete:function complete(a,b){if("throw"===a.type)throw a.arg;return"break"===a.type||"continue"===a.type?this.next=a.arg:"return"===a.type?(this.rval=this.arg=a.arg,this.method="return",this.next="end"):"normal"===a.type&&b&&(this.next=b),v},finish:function finish(a){for(var b,c=this.tryEntries.length-1;0<=c;--c)if(b=this.tryEntries[c],b.finallyLoc===a)return this.complete(b.completion,b.afterLoc),k(b),v},catch:function _catch(a){for(var b,c=this.tryEntries.length-1;0<=c;--c)if(b=this.tryEntries[c],b.tryLoc===a){var d=b.completion;if("throw"===d.type){var e=d.arg;k(b)}return e}throw new Error("illegal catch attempt")},delegateYield:function delegateYield(a,b,c){return this.delegate={iterator:m(a),resultName:b,nextLoc:c},"next"===this.method&&(this.arg=void 0),v}},o}function asyncGeneratorStep(a,b,c,d,e,f,g){try{var h=a[f](g),i=h.value}catch(a){return void c(a)}h.done?b(i):Promise.resolve(i).then(d,e)}function _asyncToGenerator(a){return function(){var b=this,c=arguments;return new Promise(function(d,e){function f(a){asyncGeneratorStep(h,d,e,f,g,"next",a)}function g(a){asyncGeneratorStep(h,d,e,f,g,"throw",a)}var h=a.apply(b,c);f(void 0)})}}var saltRounds=10,publicController={showRegistrationPage:function showRegistrationPage(a,b){a.render(b+"/account/registration")},showContactPage:function showContactPage(a,b,c){b.render(c+"/account/contact",{user:a.user})},showForgotPwdPage:function showForgotPwdPage(a,b,c){b.render(c+"/account/forgotPwd",{user:a.user})},showResetPassword:function(){function a(){return b.apply(this,arguments)}var b=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function d(a,b,c){var e;return _regeneratorRuntime().wrap(function f(d){for(;1;)switch(d.prev=d.next){case 0:return d.next=2,_dbController.dbController.getUserByToken(a.params.token);case 2:e=d.sent,e?b.render(c+"/account/reset"):(b.flash("error","Der Schl\xFCssel zum zur\xFCcksetzen des Passworts ist ung\xFCltig oder abgelaufen."),b.redirect("/account/forgotPwd"));case 4:case"end":return d.stop();}},d)}));return a}(),sendContactMessage:function sendContactMessage(a,b){var c=a.body.inputEmail,d="support-transfer@hft-stuttgart.de",e=a.body.name,f=a.body.message,g="Ihre Anfrage an das Transferportal",h="<div>Es wurde eine Anfrage an das Transferportal gestellt: <br/><br/>NAME: "+e+"<br/>NACHRICHT: "+f+"</div>";_async["default"].waterfall([function(a){// send email
+_mailer.mailer.options.to=d,_mailer.mailer.options.cc=c,_mailer.mailer.options.subject=g,_mailer.mailer.options.html=h,_mailer.mailer.transporter.sendMail(_mailer.mailer.options,function(b){a(b,"done")})}],function(a){a?(console.error(a),b.flash("error","Ein Fehler ist aufgetreten. Bitte versuchen Sie es erneut.")):b.flash("success","Vielen Dank f\xFCr Ihre Anfrage. Wir melden uns baldm\xF6glichst bei Ihnen. Eine Kopie Ihrer Anfrage wurde an "+c+" versandt."),b.redirect("/account/contact")})},registerUser:function registerUser(a,b,c){// user data
+var d=new Date,e={salutation:a.body.inputSalutation,title:a.body.inputTitle,firstname:a.body.inputFirstname,lastname:a.body.inputLastname,email:a.body.inputEmail,organisation:a.body.inputOrganisation,industry:a.body.inputIndustry,speciality:a.body.inputSpeciality,createdDate:d.toISOString().slice(0,10)},f=e.email,g=f.indexOf("@"),h=f.length,i=f.slice(g,h);"@hft-stuttgart.de"===i.toLowerCase()?(b.flash("error","Fehlgeschlagen: HFT-Account"),b.redirect("/account/registration")):_async["default"].waterfall([function(b){// generate token
+for(var c="",d="abcdefghijklmnopqrstuvwxyz0123456789",f=0;40>f;f++)c+=d.charAt(Math.floor(Math.random()*d.length));// encrypt password
+_bcryptjs["default"].genSalt(saltRounds,function(d,f){_bcryptjs["default"].hash(a.body.inputPassword,f,function(a,d){var f={profile:e,password:d,verificationToken:c};b(a,f)})})},// save data
+function(d,e){_dbController.dbController.registerNewUser(d,function(e){if(e)b.flash("error","Fehlgeschlagen");else{// send email
+var f="Bitte best\xE4tigen Sie Ihr M4_LAB Benutzerkonto",g="<div>Lieber Nutzer,<br/><br/><p>vielen Dank f\xFCr Ihre Anmeldung am Transferportal der HFT Stuttgart. <br/>Um Ihre Anmeldung zu best\xE4tigen, klicken Sie bitte <a href="+(c.app.host+"")+"/verifyAccount?token="+(d.verificationToken+"")+">diesen Link</a> <br/><br/>Ohne Best\xE4tigung Ihres Kontos m\xFCssen wir Ihr Konto leider nach 7 Tagen l\xF6schen.</p><br/>"+(_const.miscConst.mailSignature+"")+"</div>";// user feedback
+_mailer.mailer.options.to=a.body.inputEmail,_mailer.mailer.options.subject="Bitte best\xE4tigen Sie Ihr M4_LAB Benutzerkonto",_mailer.mailer.options.html=g,_mailer.mailer.transporter.sendMail(_mailer.mailer.options,function(a){if(a)throw console.error("Cannot send email. [Error] "+(a+"")),a}),b.flash("success","Vielen Dank f\xFCr Ihre Registrierung!\r\n\r\nWir haben Ihnen eine E-Mail an Ihre verwendete Adresse gesendet. Diese enth\xE4lt einen Link zur Best\xE4tigung Ihres Accounts.\r\nWenn Sie die Mail nicht in ihrem Postfach vorfinden, pr\xFCfen Sie bitte auch Ihren Spam-Ordner.")}b.redirect("/account/registration")})}])},verifyAccount:function(){function a(a,c,d){return b.apply(this,arguments)}var b=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function d(a,b,c){var e,f;return _regeneratorRuntime().wrap(function g(d){for(;1;)switch(d.prev=d.next){case 0:return d.next=2,_dbController.dbController.getUserIdByVerificationToken(a.query.token);case 2:e=d.sent,e?(f={id:e,verificationStatus:1},_dbController.dbController.verifyUserAccount(f,/*#__PURE__*/function(){var a=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function d(a){var f,g,h;return _regeneratorRuntime().wrap(function i(d){for(;1;)switch(d.prev=d.next){case 0:if(!a){d.next=5;break}console.error(a),b.render(c+"/account/verification",{status:!1}),d.next=9;break;case 5:return d.next=7,_dbController.dbController.getUserEmailById(e);case 7:f=d.sent,f?(g="Herzlich willkommen",h="<div>Lieber Nutzer,<br/><br/><p>herzlich willkommen beim Transferportal der HFT Stuttgart!<br/>Sie k\xF6nnen nun alle Dienste des Portals nutzen.<p/><br/>"+_const.miscConst.mailSignature,_mailer.mailer.options.to=f,_mailer.mailer.options.subject=g,_mailer.mailer.options.html=h,_mailer.mailer.transporter.sendMail(_mailer.mailer.options,function(a){if(a)throw console.log("cannot send email"),a}),b.render(c+"/account/verification",{status:!0})):b.render(c+"/account/verification",{status:!1});case 9:case"end":return d.stop();}},d)}));return function(b){return a.apply(this,arguments)}}())):b.render(c+"/account/verification",{status:null});case 4:case"end":return d.stop();}},d)}));return a}(),resetPassword:function(){function a(a,c){return b.apply(this,arguments)}var b=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function c(a,b){var d,e;return _regeneratorRuntime().wrap(function f(c){for(;1;)switch(c.prev=c.next){case 0:return d=a.body.inputNewPwd,c.next=3,_dbController.dbController.getUserByToken(a.params.token);case 3:e=c.sent,e?_bcryptjs["default"].genSalt(saltRounds,function(a,c){_bcryptjs["default"].hash(d,c,/*#__PURE__*/function(){var a=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function d(a,c){var f,g;return _regeneratorRuntime().wrap(function d(a){for(;1;)switch(a.prev=a.next){case 0:return f={password:c,user_id:e.user_id,resetPasswordToken:null,resetPasswordExpires:null},a.next=3,_dbController.dbController.updateCredential(f);case 3:g=a.sent,g?(b.flash("success","Passwort aktualisiert!"),_mailer.mailer.options.to=e.email,_mailer.mailer.options.subject=_const.miscConst.updatePasswordMailSubject,_mailer.mailer.options.html=_const.miscConst.updatePasswordMailContent+"<div>"+_const.miscConst.mailSignature+"</div>",_mailer.mailer.transporter.sendMail(_mailer.mailer.options,function(a){a&&console.log(a)})):(console.log("Failed to reset password"),b.flash("error","Datenbankfehler: Passwort kann nicht ge\xE4ndert werden.")),b.redirect("/login");case 6:case"end":return a.stop();}},d)}));return function(b,c){return a.apply(this,arguments)}}())}):(b.flash("error","User not found."),b.redirect("/login"));case 5:case"end":return c.stop();}},c)}));return a}(),generateNewToken:function generateNewToken(a,b,c){var d=Math.floor,e=a.body.inputEmail;_async["default"].waterfall([/*#__PURE__*/function(){var a=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function b(a){var f,g,h,j,k,l,m,n;return _regeneratorRuntime().wrap(function i(b){for(;1;)switch(b.prev=b.next){case 0:return b.next=2,_dbController.dbController.checkUserEmail(e);case 2:if(f=b.sent,f){b.next=7;break}console.log("No user found: "+(e+"")),b.next=17;break;case 7:for(g="",h="abcdefghijklmnopqrstuvwxyz0123456789",j=0;40>j;j++)g+=h.charAt(d(Math.random()*h.length));return k="Ihre Passwort-Anfrage an das Transferportal der HFT Stuttgart",l="<div>Lieber Nutzer,<br/><br/><p>wir haben Ihre Anfrage zur Erneuerung Ihres Passwortes erhalten. Falls Sie diese Anfrage nicht gesendet haben, ignorieren Sie bitte diese E-Mail.<br/><br/>Sie k\xF6nnen Ihr Passwort mit dem Klick auf diesen Link \xE4ndern: "+(c.app.host+"/reset/")+(g+"<br/>Dieser Link ist aus Sicherheitsgr\xFCnden nur f\xFCr 1 Stunde g\xFCltig.<br/></p>")+(_const.miscConst.mailSignature+"</div>"),m={user_id:f.id,resetPasswordToken:g,resetPasswordExpires:Date.now()+36e5// 1 hour
+},b.next=15,_dbController.dbController.updateCredential(m);case 15:n=b.sent,n?(_mailer.mailer.options.to=e,_mailer.mailer.options.subject=k,_mailer.mailer.options.html=l,_mailer.mailer.transporter.sendMail(_mailer.mailer.options,function(a){a&&console.error(a)})):console.log("failed to update credential");case 17:a(null);case 18:case"end":return b.stop();}},b)}));return function(b){return a.apply(this,arguments)}}()],function(a){a?b.flash("error","Ein Fehler ist aufgetreten. Bitte versuchen Sie es erneut."):b.flash("success","Wenn Ihre E-Mail-Adresse registriert ist, wurde eine E-Mail mit dem weiteren Vorgehen an "+(e+"")+" versendet."),b.redirect("/account/forgotPwd")})},checkUserEmail:function(){function a(a,c){return b.apply(this,arguments)}var b=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function c(a,b){var d;return _regeneratorRuntime().wrap(function e(c){for(;1;)switch(c.prev=c.next){case 0:return c.next=2,_dbController.dbController.checkUserEmail(a.params.email);case 2:d=c.sent,d?b.send(!1):b.send(!0);case 4:case"end":return c.stop();}},c)}));return a}()};exports.publicController=publicController;
\ No newline at end of file
diff --git a/built/public/default/logo.png b/built/public/default/logo.png
new file mode 100644
index 0000000000000000000000000000000000000000..49d1a2c4816f76a799d3063b4c3f8fb37962f709
GIT binary patch
literal 86689
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

literal 0
HcmV?d00001

diff --git a/built/public/js/generalFunction.js b/built/public/js/generalFunction.js
new file mode 100644
index 00000000..285537dc
--- /dev/null
+++ b/built/public/js/generalFunction.js
@@ -0,0 +1,9 @@
+// password requirement
+function checkPasswordReq (pwd) {
+  if (pwd.length < 8) {
+    isBest = false
+  } else {
+    isBest = true
+  }
+  return isBest
+}
diff --git a/built/public/js/headfoot.js b/built/public/js/headfoot.js
new file mode 100644
index 00000000..ea46aa2f
--- /dev/null
+++ b/built/public/js/headfoot.js
@@ -0,0 +1,224 @@
+const menu = [{ name: 'Informationen', combos: [{ name: 'Projekte', link: '/project' }, { name: 'Ãœber das M4_LAB', link: '/projectoverview?projectID=1' }, { name: 'Kontakt', link: '/account/contact' }], type: 'dropdown', link: '#' }, { name: 'Zusammenarbeit', combos: [{ name: 'Mailinglisten', link: '/mailinglists' }, { name: 'Videokonferenzen', link: '/videoconference.html' }/* {'name':'...', 'link':'#'} */], type: 'dropdown', link: '#' }, { name: 'Events', combos: [{ name: 'Veranstaltungen der HfT', link: 'http://www.hft-stuttgart.de/Aktuell/Veranstaltungen/' }, { name: 'Veranstaltungen der HfT Forschung', link: 'https://www.hft-stuttgart.de/forschung/veranstaltungen' }], type: 'dropdown', link: '#' }, { name: 'Benutzerkonto', combos: [], type: '', link: '/account/' }]
+
+const hft_links = [{ url: '/account/contact', name: 'Kontakt' }, { url: 'https://www.hft-stuttgart.de/impressum', name: 'Impressum' }, { url: 'https://www.hft-stuttgart.de/datenschutz', name: 'Datenschutz' }]
+
+const socialmedias = [{ url: 'https://twitter.com/InnolabM4', name: 'fa-twitter' }, { url: 'https://www.facebook.com/HfTStuttgart/', name: 'fa-facebook-square' }, { url: 'https://www.instagram.com/m4_lab/', name: 'fa-instagram' }, { url: 'https://de.linkedin.com/school/hochschule-f%C3%BCr-technik-stuttgart-%E2%80%93-university-of-applied-sciences/', name: 'fa-linkedin' }, { url: 'https://www.youtube.com/channel/UCi0_JfF2qMZbOhOnNH5PyHA', name: 'fa-youtube' }]
+
+const footer_images = [{ src: '/images/demo/Innovative_Hochschule_Initiative_BMBF_GWK_RGB.jpg', alt: 'Innovative Hochschule' }]
+
+function prependChild (parent, child) {
+  parent.insertBefore(child, parent.childNodes[0])
+}
+
+function readCookie (cname) {
+  const name = cname + '='
+  const decodedCookie = decodeURIComponent(document.cookie)
+  const ca = decodedCookie.split(';')
+  for (let i = 0; i < ca.length; i++) {
+    let c = ca[i]
+    while (c.charAt(0) == ' ') {
+      c = c.substring(1)
+    }
+    if (c.indexOf(name) == 0) {
+      return c.substring(name.length, c.length)
+    }
+  }
+  return ''
+}
+
+function sendRequest (URL) {
+  console.log(document.cookie)
+  const xhr = new XMLHttpRequest()
+  xhr.open('POST', URL, true)
+  const token = readCookie('XSRF-TOKEN')
+  // Send the proper header information along with the request
+  xhr.setRequestHeader('X-CSRF-TOKEN', token)
+  xhr.send()
+}
+
+/* function head()
+ * creates header and prepends it to the documents body
+ */
+
+function head () {
+  const navheader = document.createElement('header')
+  navheader.id = 'header'
+  navheader.classList.add('clear')
+
+  // disclaimer
+  const alertdiv = document.createElement('div')
+  alertdiv.classList.add('alert', 'alert-danger', 'alert-dismissible', 'fade', 'show')
+  alertdiv.style = 'text-align:center;'
+  alertdiv.innerHTML = '<strong>Disclaimer</strong> This website is under construction and in prototype-phase. It is not for public use.'
+  const alertbutton = document.createElement('button')
+  alertbutton.type = 'button'
+  alertbutton.classList.add('close')
+  alertbutton.setAttribute('data-dismiss', 'alert')
+  alertbutton.innerHTML = '&times;'
+  prependChild(alertdiv, alertbutton)
+
+  // navigation header
+  const navbar = document.createElement('nav')
+  navbar.classList.add('navbar', 'navbar-expand-md', 'navbar-light')
+  navbar.style = 'background-color: #ffffff;'
+
+  const navbarcontainer = document.createElement('div')
+  navbarcontainer.classList.add('container')
+
+  const navbarheader = document.createElement('div')
+  navbarheader.classList.add('navbar-header')
+  // navigation header - logo
+  const link_m4lab = document.createElement('a')
+  link_m4lab.href = '/'
+  link_m4lab.classList.add('navbar-brand')
+  link_m4lab.innerHTML = "<img src='/img/header/Logozeile_Header.png' alt='Logo Innovationslabor M4_LAB'>"
+  navbarheader.appendChild(link_m4lab)
+  // navigation header - toggle button menu for mobile devices
+  const togglebutton = document.createElement('button')
+  togglebutton.classList.add('navbar-toggler')
+  togglebutton.type = 'button'
+  togglebutton.setAttribute('data-toggle', 'collapse')
+  togglebutton.setAttribute('data-target', '#navbarCollapse')
+  togglebutton.setAttribute('aria-controls', 'navbarCollapse')
+  togglebutton.setAttribute('aria-expanded', 'false')
+  togglebutton.setAttribute('aria-label', 'Toggle navigation')
+  togglebutton.innerHTML = "<span class='navbar-toggler-icon'></span>"
+  // nav menu
+  const navelements = document.createElement('ul')
+  navelements.id = 'navbarCollapse'
+  navelements.classList.add('collapse', 'nav', 'navbar-collapse', 'navbar-nav', 'justify-content-end')
+  for (let j = 0; j < menu.length; j++) {
+    const headitem = document.createElement('li')
+    const itemtype = menu[j].type
+    headitem.classList.add('nav-item')
+    const headlink = document.createElement('a')
+    headlink.href = menu[j].link
+    headlink.id = 'navbarDropdown' + j
+    headlink.classList.add('nav-link')
+    headlink.setAttribute('role', 'button')
+    if (itemtype == 'dropdown') {
+      headitem.classList.add('dropdown')
+      headlink.classList.add('dropdown-toggle')
+      headlink.setAttribute('data-toggle', 'dropdown')
+      headlink.setAttribute('aria-haspopup', 'true')
+      headlink.setAttribute('aria-expanded', 'false')
+    }
+    headlink.innerHTML = menu[j].name
+    if (itemtype == 'dropdown') {
+      const combodiv = document.createElement('div')
+      combodiv.id = headlink.id + '_par'
+      combodiv.setAttribute('aria-labelledby', headlink.id)
+      combodiv.classList.add('dropdown-menu')
+      for (let k = 0; k < menu[j].combos.length; k++) {
+        const combolink = document.createElement('a')
+        combolink.classList.add('dropdown-item')
+        combolink.href = menu[j].combos[k].link
+        combolink.innerHTML = menu[j].combos[k].name
+        combodiv.appendChild(combolink)
+      }
+      headitem.appendChild(combodiv)
+    }
+    prependChild(headitem, headlink)
+    navelements.appendChild(headitem)
+  }
+
+  navbarcontainer.appendChild(navbarheader)
+  navbarcontainer.appendChild(togglebutton)
+  navbarcontainer.appendChild(navelements)
+  navbar.appendChild(navbarcontainer)
+
+  navheader.appendChild(alertdiv)
+  navheader.appendChild(navbar)
+  prependChild(document.body, navheader)
+}
+
+/* function foot()
+ * creates footer and appends it to the documents body
+ */
+
+function foot () {
+  // add styles to <head> to manage sticky footer
+  const styles = `
+        @media only screen and (min-width: 768px) {
+            html {
+                position: relative;
+                min-height: 100%;
+            }
+            body {
+                margin-bottom: 120px; /* Margin bottom by footer height */
+            }
+            #homepage {
+                position: absolute;
+                bottom: 0;
+                width: 100%;
+                text-align: center;
+            }
+        }
+    `
+  const styleSheet = document.createElement('style')
+  styleSheet.type = 'text/css'
+  styleSheet.innerText = styles
+  document.head.appendChild(styleSheet)
+
+  const footerdiv = document.createElement('div')
+  footerdiv.id = 'homepage'
+  // footerdiv.classList.add("last", "clear");
+  footerdiv.innerHTML = '<hr>'
+  const containerdiv = document.createElement('div')
+  containerdiv.classList.add('container')
+  const containerdivrow = document.createElement('div')
+  containerdivrow.classList.add('row')
+
+  // bmbf
+  const bmbf = document.createElement('div')
+  bmbf.classList.add('col-md-auto')
+  bmbf.innerHTML = "<img src='/img/footer/Innovative_Hochschule_Initiative_BMBF_GWK_RGB.png' alt='Innovative Hochschule' style='height:90px'/>"
+  // m4labgrau
+  const m4labgrau = document.createElement('div')
+  m4labgrau.classList.add('col-md-auto')
+  m4labgrau.innerHTML = "<img src='/img/footer/M4_LAB_LOGO_Graustufen.png' alt='M4_LAB' style='height:80px'/>"
+  // socmed
+  const socialdiv = document.createElement('div')
+  socialdiv.classList.add('col-md-auto')
+  const socialrow = document.createElement('div')
+  socialrow.id = 'socialmediabuttons'
+  for (let j = 0; j < socialmedias.length; j++) {
+    const sociallink = document.createElement('a')
+    sociallink.href = socialmedias[j].url
+    const socialcontent = document.createElement('i')
+    socialcontent.classList.add('fab', socialmedias[j].name)
+    sociallink.appendChild(socialcontent)
+    socialrow.appendChild(sociallink)
+    socialrow.innerHTML += '&nbsp;'
+  }
+  socialdiv.appendChild(socialrow)
+  // contact
+  const contactdiv = document.createElement('div')
+  contactdiv.classList.add('col-md-auto', 'footer-unten')
+  contactdiv.innerHTML = 'Hochschule für Technik Stuttgart'
+  const rowdiv = document.createElement('div')
+  rowdiv.classList.add('row')
+  for (let i = 0; i < hft_links.length; i++) {
+    const coldiv = document.createElement('div')
+    coldiv.classList.add('contactrow', 'footer-unten')
+    const collink = document.createElement('a')
+    collink.innerHTML = hft_links[i].name
+    collink.classList.add('contact-lower')
+    collink.href = hft_links[i].url
+    coldiv.appendChild(collink)
+    rowdiv.appendChild(coldiv)
+  }
+  contactdiv.appendChild(rowdiv)
+
+  containerdivrow.appendChild(bmbf)
+  containerdivrow.appendChild(m4labgrau)
+  containerdivrow.appendChild(socialdiv)
+  containerdivrow.appendChild(contactdiv)
+
+  containerdiv.appendChild(containerdivrow)
+  footerdiv.appendChild(containerdiv)
+  document.body.appendChild(footerdiv)
+}
+
+head()
+foot()
diff --git a/built/public/js/headfootLogout.js b/built/public/js/headfootLogout.js
new file mode 100644
index 00000000..abeb03d2
--- /dev/null
+++ b/built/public/js/headfootLogout.js
@@ -0,0 +1,237 @@
+const menu = [{ name: 'Informationen', combos: [{ name: 'Projekte', link: '/project' }, { name: 'Über das M4_LAB', link: '/projectoverview?projectID=1' }], type: 'dropdown', link: '#' }, { name: 'Zusammenarbeit', combos: [{ name: 'Mailinglisten', link: '/mailinglists' }, { name: 'Videokonferenzen', link: '/videoconference.html' }/* {'name':'...', 'link':'#'} */], type: 'dropdown', link: '#' }, { name: 'Events', combos: [{ name: 'Veranstaltungen der HfT', link: 'http://www.hft-stuttgart.de/Aktuell/Veranstaltungen/' }/*, {'name':'...', 'link':'#'} */], type: 'dropdown', link: '#' }, /* {'name':'Bürgerbeteiligung', 'combos':[{'name':'...', 'link':'#'}, {'name':'...', 'link':'#'}], 'type':'dropdown', 'link':'#'}, */{ name: 'Logout', combos: [], type: 'logoutbutton', link: '/logout' }]
+
+const hft_links = [{ url: 'http://www.hft-stuttgart.de/Forschung/M4-Lab/Team/index.html/de', name: 'Kontakt' }, { url: 'http://www.hft-stuttgart.de/Hochschule/Impressum.html/de', name: 'Impressum' }, { url: 'http://www.hft-stuttgart.de/Einrichtungen/Datenschutz/Datenschutz-Homepage', name: 'Datenschutz' }]
+
+const socialmedias = [{ url: 'https://twitter.com/InnolabM4', name: 'fa-twitter' }, { url: 'https://www.facebook.com/HfTStuttgart/', name: 'fa-facebook-square' }, { url: 'https://www.instagram.com/m4_lab/', name: 'fa-instagram' }, { url: 'https://de.linkedin.com/school/hochschule-f%C3%BCr-technik-stuttgart-%E2%80%93-university-of-applied-sciences/', name: 'fa-linkedin' }, { url: 'https://www.youtube.com/channel/UCi0_JfF2qMZbOhOnNH5PyHA', name: 'fa-youtube' }]
+
+const footer_images = [{ src: '/images/demo/Innovative_Hochschule_Initiative_BMBF_GWK_RGB.jpg', alt: 'Innovative Hochschule' }]
+
+function prependChild (parent, child) {
+  parent.insertBefore(child, parent.childNodes[0])
+}
+
+function userAuthenticated () {
+  const params = new URLSearchParams(window.location.search)
+  if (params.get('isAuthenticatedUser')) {
+    return true
+  } else if (document.getElementById('loginswitch')) { // relikt login via OAuth
+    if (document.getElementById('loginswitch').getAttribute('authenticated') == '1') {
+      return true
+    }
+  } else {
+    return false
+  }
+}
+
+function readCookie (cname) {
+  const name = cname + '='
+  const decodedCookie = decodeURIComponent(document.cookie)
+  const ca = decodedCookie.split(';')
+  for (let i = 0; i < ca.length; i++) {
+    let c = ca[i]
+    while (c.charAt(0) == ' ') {
+      c = c.substring(1)
+    }
+    if (c.indexOf(name) == 0) {
+      return c.substring(name.length, c.length)
+    }
+  }
+  return ''
+}
+
+function sendRequest (URL) {
+  console.log(document.cookie)
+  const xhr = new XMLHttpRequest()
+  xhr.open('POST', URL, true)
+  const token = readCookie('XSRF-TOKEN')
+  // Send the proper header information along with the request
+  xhr.setRequestHeader('X-CSRF-TOKEN', token)
+  xhr.send()
+}
+
+/* function head()
+ * creates header and prepends it to the documents body
+ */
+
+function head () {
+  const headerdiv = document.createElement('div')
+  const alertdiv = document.createElement('div')
+  headerdiv.classList.add('wrapper', 'row1')
+  const navheader = document.createElement('header')
+  navheader.id = 'header'
+  navheader.classList.add('clear')
+  const alertbutton = document.createElement('button')
+  alertbutton.type = 'button'
+  alertbutton.classList.add('close')
+  alertbutton.setAttribute('data-dismiss', 'alert')
+  alertbutton.innerHTML = '&times;'
+  alertdiv.innerHTML = '<strong>Disclaimer</strong> This website is under construction and in prototype-phase. It is not for public use.'
+  prependChild(alertdiv, alertbutton)
+  alertdiv.classList.add('alert', 'alert-danger', 'alert-dismissible', 'fade', 'show', 'text-center')
+  // alertdiv.style = "text-align:center;";
+  navheader.appendChild(alertdiv)
+  const navbar = document.createElement('nav')
+  navbar.classList.add('navbar', 'navbar-default')
+  const fluiddiv = document.createElement('div')
+  fluiddiv.classList.add('container-fluid')
+  const navbardiv = document.createElement('div')
+  navbardiv.classList.add('navbar-header')
+  const navelements = document.createElement('ul')
+  navelements.id = 'navelemente'
+  const logos = document.createElement('li')
+  const link_m4lab = document.createElement('a')
+  link_m4lab.href = '/'
+  link_m4lab.innerHTML = "<img src='/images/demo/m4lab_logo.jpg' alt='Logo Innovationslabor M4_LAB'>"
+  logos.appendChild(link_m4lab)
+  navelements.appendChild(logos)
+  for (let j = 0; j < menu.length; j++) {
+    const headitem = document.createElement('li')
+    const itemtype = menu[j].type
+    headitem.classList.add('nav-item')
+    const headlink = document.createElement('a')
+    headlink.href = menu[j].link
+    headlink.id = 'navbarDropdown' + j
+    headlink.classList.add('nav-link')
+    headlink.setAttribute('role', 'button')
+    if (itemtype == 'dropdown') {
+      headitem.classList.add('dropdown')
+      headlink.classList.add('dropdown-toggle')
+      headlink.setAttribute('data-toggle', 'dropdown')
+      headlink.setAttribute('aria-haspopup', 'true')
+      headlink.setAttribute('aria-expanded', 'false')
+    }
+    headlink.innerHTML = menu[j].name
+    if (itemtype == 'dropdown') {
+      const combodiv = document.createElement('div')
+      combodiv.id = headlink.id + '_par'
+      combodiv.setAttribute('aria-labelledby', headlink.id)
+      combodiv.classList.add('dropdown-menu')
+      for (let k = 0; k < menu[j].combos.length; k++) {
+        const combolink = document.createElement('a')
+        combolink.classList.add('dropdown-item')
+        if (userAuthenticated() || typeof user !== 'undefined') { // either logged in the old way or logged in using SAML
+          if (menu[j].combos[k].link.includes('?')) {
+            combolink.href = menu[j].combos[k].link + '&isAuthenticatedUser=true'
+          } else {
+            combolink.href = menu[j].combos[k].link + '?isAuthenticatedUser=true'
+          }
+        } else {
+          combolink.href = menu[j].combos[k].link
+        }
+        combolink.innerHTML = menu[j].combos[k].name
+        combodiv.appendChild(combolink)
+      }
+      headitem.appendChild(combodiv)
+    } else if (itemtype == 'logoutbutton') {
+      /*    if(userAuthenticated()){
+                headlink.innerHTML="Account";
+                headlink.href="/account/";
+            } */
+      headlink.innerHTML = 'Logout'
+      headlink.href = '/logout'
+      headlink.classList.remove('nav-link')
+      headlink.classList.add('btn')
+      headlink.classList.add('btn-outline-danger')
+    }
+    headitem.appendChild(headlink)
+    navelements.appendChild(headitem)
+  }
+  /*    let searchitem = document.createElement('li');
+    searchitem.classList.add("nav-item");
+    let searchinput = document.createElement('input');
+    searchinput.value='Suche...'
+    searchinput.type="text";
+    searchinput.classList.add("nav-item-suchfeld");
+    searchinput.setAttribute('onFocus', "this.value=(this.value=='search...')? '' : this.value");
+    searchitem.appendChild(searchinput);
+    let magnifier = document.createElement('input');
+    magnifier.type="image"
+    magnifier.src="/images/Lupe_grau.png";
+    magnifier.width="25";
+    magnifier.height="25";
+    magnifier.alt="";
+    magnifier.id="sf_submit";
+    magnifier.value="search";
+    searchitem.appendChild(magnifier);
+    navelements.appendChild(searchitem); */
+  navbardiv.appendChild(navelements)
+  fluiddiv.appendChild(navbardiv)
+  navbar.appendChild(fluiddiv)
+  navheader.appendChild(navbar)
+  headerdiv.appendChild(navheader)
+  prependChild(document.body, headerdiv)
+};
+
+/* function foot()
+ * creates footer and appends it to the documents body
+ */
+
+function foot () {
+  const footerdiv = document.createElement('div')
+  footerdiv.id = 'homepage'
+  footerdiv.classList.add('last', 'clear')
+  footerdiv.innerHTML = '<hr>'
+  const containerdiv = document.createElement('div')
+  containerdiv.classList.add('flex-container')
+  const hftlink = document.createElement('a')
+  hftlink.classList.add('col-md-3')
+  hftlink.setAttribute('style', 'flex-basis: 400px;')
+  hftlink.href = 'https://www.hft-stuttgart.de'
+  const hftimage = document.createElement('img')
+  hftimage.src = '/images/demo/hft_logo.jpg'
+  hftimage.alt = 'Logo der Hochschule für Technik Stuttgart'
+  hftimage.height = '75'
+  hftlink.appendChild(hftimage)
+  containerdiv.appendChild(hftlink)
+  const contactdiv = document.createElement('div')
+  contactdiv.classList.add('col-md-3', 'footer-unten')
+  contactdiv.setAttribute('style', 'flex-basis:400px')
+  contactdiv.innerHTML = 'Hochschule für Technik Stuttgart'
+  const rowdiv = document.createElement('div')
+  rowdiv.classList.add('row')
+  for (let i = 0; i < hft_links.length; i++) {
+    const coldiv = document.createElement('div')
+    coldiv.classList.add('contactrow', 'footer-unten')
+    const collink = document.createElement('a')
+    collink.innerHTML = hft_links[i].name
+    collink.classList.add('contact-lower')
+    collink.href = hft_links[i].url
+    coldiv.appendChild(collink)
+    rowdiv.appendChild(coldiv)
+  }
+  contactdiv.appendChild(rowdiv)
+  containerdiv.appendChild(contactdiv)
+  const socialdiv = document.createElement('div')
+  socialdiv.classList.add('col-md-3')
+  socialdiv.setAttribute('style', 'flex-basis: 400px;')
+  const socialrow = document.createElement('div')
+  socialrow.id = 'socialmediabuttons'
+  for (let j = 0; j < socialmedias.length; j++) {
+    const sociallink = document.createElement('a')
+    sociallink.href = socialmedias[j].url
+    const socialcontent = document.createElement('i')
+    socialcontent.classList.add('fab', socialmedias[j].name)
+    sociallink.appendChild(socialcontent)
+    socialrow.appendChild(sociallink)
+    socialrow.innerHTML += '&nbsp;'
+  }
+  socialdiv.appendChild(socialrow)
+  containerdiv.appendChild(socialdiv)
+  const imagediv = document.createElement('div')
+  imagediv.classList.add('col-md-3')
+  imagediv.setAttribute('style', 'flex-basis:400px;')
+  for (let k = 0; k < footer_images.length; k++) {
+    const image = document.createElement('img')
+    image.src = footer_images[k].src
+    image.width = '300'
+    image.height = '73'
+    image.alt = footer_images[k].alt
+    imagediv.appendChild(image)
+  }
+  containerdiv.appendChild(imagediv)
+  footerdiv.appendChild(containerdiv)
+  document.body.appendChild(footerdiv)
+};
+
+head()
+foot()
diff --git a/built/public/js/registration.js b/built/public/js/registration.js
new file mode 100644
index 00000000..c8f6aefe
--- /dev/null
+++ b/built/public/js/registration.js
@@ -0,0 +1,37 @@
+let isEmailValid = false
+let isPasswordValid = false
+
+// check if email already exist
+$('#inputEmail').change(function () {
+  const email = $('#inputEmail').val()
+  $.get('email/' + email, function (data) {
+    $('#emailWarning').empty()
+    isEmailValid = data
+    if (!isEmailValid) {
+      $('#emailWarning').html('Mit dieser E-Mail-Adresse existiert bereits ein Benutzerkonto in unserem Transferportal.')
+    }
+    switchSubmitButton()
+  })
+    .fail(function () {
+      console.log('cannot check email')
+    })
+})
+
+// check password
+$('#inputPassword').on('keyup', function () {
+  isPasswordValid = checkPasswordReq($('#inputPassword').val())
+  $('#passwordWarning').empty()
+  if (!isPasswordValid) {
+    // $('#passwordWarning').html('Must be at least 8 characters')
+    $('#passwordWarning').html('Das Passwort muss mindestens 8 Zeichen haben')
+  }
+  switchSubmitButton()
+})
+
+function switchSubmitButton () {
+  if (isEmailValid && isPasswordValid) {
+    $('#submitBtn').prop('disabled', false)
+  } else {
+    $('#submitBtn').prop('disabled', true)
+  }
+}
diff --git a/built/public/js/security.js b/built/public/js/security.js
new file mode 100644
index 00000000..5d71fb8a
--- /dev/null
+++ b/built/public/js/security.js
@@ -0,0 +1,30 @@
+// check password and password confirmation input fields
+// used in Security and Reset Password
+$('#inputNewPwd, #inputConfirm').on('keyup', function () {
+  let isBest, isMatch
+
+  isBest = checkPasswordReq($('#inputNewPwd').val())
+  $('#recommendation').empty()
+  if (!isBest) {
+    // $('#recommendation').html('Must be at least 8 characters').css('color', 'red');
+    $('#recommendation').html('Das Passwort muss mindestens 8 Zeichen haben').css('color', 'red')
+  }
+
+  // match or not?
+  if ($('#inputNewPwd').val() === $('#inputConfirm').val()) {
+    // $('#message').html('Matching').css('color', 'green');
+    $('#message').html('Ãœbereinstimmend').css('color', 'green')
+    isMatch = true
+  } else {
+    // $('#message').html('Not Matching').css('color', 'red');
+    $('#message').html('Nicht übereinstimmend').css('color', 'red')
+    isMatch = false
+  }
+
+  // enable/disable update button
+  if (isBest && isMatch) {
+    $('#updateBtn').prop('disabled', false)
+  } else {
+    $('#updateBtn').prop('disabled', true)
+  }
+})
diff --git a/built/routes/account.js b/built/routes/account.js
new file mode 100644
index 00000000..6ac96a26
--- /dev/null
+++ b/built/routes/account.js
@@ -0,0 +1,12 @@
+"use strict";function _typeof(a){"@babel/helpers - typeof";return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a},_typeof(a)}var _fs=_interopRequireDefault(require("fs")),_async=_interopRequireDefault(require("async")),_bcryptjs=_interopRequireDefault(require("bcryptjs")),passportSaml=_interopRequireWildcard(require("passport-saml")),_dbconn=require("../config/dbconn"),_dbController=require("../controller/dbController"),_gitlabController=require("../controller/gitlabController"),_const=require("../config/const"),_mailer=require("../config/mailer"),_user=require("../classes/user"),_website=require("../classes/website"),_repo=require("../classes/repo");function _getRequireWildcardCache(a){if("function"!=typeof WeakMap)return null;var b=new WeakMap,c=new WeakMap;return(_getRequireWildcardCache=function(a){return a?c:b})(a)}function _interopRequireWildcard(a,b){if(!b&&a&&a.__esModule)return a;if(null===a||"object"!==_typeof(a)&&"function"!=typeof a)return{default:a};var c=_getRequireWildcardCache(b);if(c&&c.has(a))return c.get(a);var d={},e=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var f in a)if("default"!=f&&Object.prototype.hasOwnProperty.call(a,f)){var g=e?Object.getOwnPropertyDescriptor(a,f):null;g&&(g.get||g.set)?Object.defineProperty(d,f,g):d[f]=a[f]}return d["default"]=a,c&&c.set(a,d),d}function _interopRequireDefault(a){return a&&a.__esModule?a:{default:a}}function _regeneratorRuntime(){"use strict";/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */function a(a,b,c){return Object.defineProperty(a,b,{value:c,enumerable:!0,configurable:!0,writable:!0}),a[b]}function b(a,b,e,f){var g=b&&b.prototype instanceof d?b:d,h=Object.create(g.prototype),j=new l(f||[]);return h._invoke=function(a,b,d){var e="suspendedStart";return function(f,g){if("executing"===e)throw new Error("Generator is already running");if("completed"===e){if("throw"===f)throw g;return n()}for(d.method=f,d.arg=g;;){var h=d.delegate;if(h){var j=i(h,d);if(j){if(j===v)continue;return j}}if("next"===d.method)d.sent=d._sent=d.arg;else if("throw"===d.method){if("suspendedStart"===e)throw e="completed",d.arg;d.dispatchException(d.arg)}else"return"===d.method&&d.abrupt("return",d.arg);e="executing";var k=c(a,b,d);if("normal"===k.type){if(e=d.done?"completed":"suspendedYield",k.arg===v)continue;return{value:k.arg,done:d.done}}"throw"===k.type&&(e="completed",d.method="throw",d.arg=k.arg)}}}(a,e,j),h}function c(a,b,c){try{return{type:"normal",arg:a.call(b,c)}}catch(a){return{type:"throw",arg:a}}}function d(){}function e(){}function f(){}function g(b){["next","throw","return"].forEach(function(c){a(b,c,function(a){return this._invoke(c,a)})})}function h(a,b){function d(e,f,g,h){var i=c(a[e],a,f);if("throw"!==i.type){var j=i.arg,k=j.value;return k&&"object"==_typeof(k)&&q.call(k,"__await")?b.resolve(k.__await).then(function(a){d("next",a,g,h)},function(a){d("throw",a,g,h)}):b.resolve(k).then(function(a){j.value=a,g(j)},function(a){return d("throw",a,g,h)})}h(i.arg)}var e;this._invoke=function(a,c){function f(){return new b(function(b,e){d(a,c,b,e)})}return e=e?e.then(f,f):f()}}function i(a,b){var d=a.iterator[b.method];if(void 0===d){if(b.delegate=null,"throw"===b.method){if(a.iterator["return"]&&(b.method="return",b.arg=void 0,i(a,b),"throw"===b.method))return v;b.method="throw",b.arg=new TypeError("The iterator does not provide a 'throw' method")}return v}var e=c(d,a.iterator,b.arg);if("throw"===e.type)return b.method="throw",b.arg=e.arg,b.delegate=null,v;var f=e.arg;return f?f.done?(b[a.resultName]=f.value,b.next=a.nextLoc,"return"!==b.method&&(b.method="next",b.arg=void 0),b.delegate=null,v):f:(b.method="throw",b.arg=new TypeError("iterator result is not an object"),b.delegate=null,v)}function j(a){var b={tryLoc:a[0]};1 in a&&(b.catchLoc=a[1]),2 in a&&(b.finallyLoc=a[2],b.afterLoc=a[3]),this.tryEntries.push(b)}function k(a){var b=a.completion||{};b.type="normal",delete b.arg,a.completion=b}function l(a){this.tryEntries=[{tryLoc:"root"}],a.forEach(j,this),this.reset(!0)}function m(a){if(a){var b=a[s];if(b)return b.call(a);if("function"==typeof a.next)return a;if(!isNaN(a.length)){var c=-1,d=function b(){for(;++c<a.length;)if(q.call(a,c))return b.value=a[c],b.done=!1,b;return b.value=void 0,b.done=!0,b};return d.next=d}}return{next:n}}function n(){return{value:void 0,done:!0}}_regeneratorRuntime=function(){return o};var o={},p=Object.prototype,q=p.hasOwnProperty,r="function"==typeof Symbol?Symbol:{},s=r.iterator||"@@iterator",t=r.asyncIterator||"@@asyncIterator",u=r.toStringTag||"@@toStringTag";try{a({},"")}catch(b){a=function(a,b,c){return a[b]=c}}o.wrap=b;var v={},w={};a(w,s,function(){return this});var x=Object.getPrototypeOf,y=x&&x(x(m([])));y&&y!==p&&q.call(y,s)&&(w=y);var z=f.prototype=d.prototype=Object.create(w);return e.prototype=f,a(z,"constructor",f),a(f,"constructor",e),e.displayName=a(f,u,"GeneratorFunction"),o.isGeneratorFunction=function(a){var b="function"==typeof a&&a.constructor;return!!b&&(b===e||"GeneratorFunction"===(b.displayName||b.name))},o.mark=function(b){return Object.setPrototypeOf?Object.setPrototypeOf(b,f):(b.__proto__=f,a(b,u,"GeneratorFunction")),b.prototype=Object.create(z),b},o.awrap=function(a){return{__await:a}},g(h.prototype),a(h.prototype,t,function(){return this}),o.AsyncIterator=h,o.async=function(a,c,d,e,f){void 0===f&&(f=Promise);var g=new h(b(a,c,d,e),f);return o.isGeneratorFunction(c)?g:g.next().then(function(a){return a.done?a.value:g.next()})},g(z),a(z,u,"Generator"),a(z,s,function(){return this}),a(z,"toString",function(){return"[object Generator]"}),o.keys=function(a){var b=[];for(var c in a)b.push(c);return b.reverse(),function c(){for(;b.length;){var d=b.pop();if(d in a)return c.value=d,c.done=!1,c}return c.done=!0,c}},o.values=m,l.prototype={constructor:l,reset:function reset(a){if(this.prev=0,this.next=0,this.sent=this._sent=void 0,this.done=!1,this.delegate=null,this.method="next",this.arg=void 0,this.tryEntries.forEach(k),!a)for(var b in this)"t"===b.charAt(0)&&q.call(this,b)&&!isNaN(+b.slice(1))&&(this[b]=void 0)},stop:function stop(){this.done=!0;var a=this.tryEntries[0].completion;if("throw"===a.type)throw a.arg;return this.rval},dispatchException:function dispatchException(a){function b(b,d){return f.type="throw",f.arg=a,c.next=b,d&&(c.method="next",c.arg=void 0),!!d}if(this.done)throw a;for(var c=this,d=this.tryEntries.length-1;0<=d;--d){var e=this.tryEntries[d],f=e.completion;if("root"===e.tryLoc)return b("end");if(e.tryLoc<=this.prev){var g=q.call(e,"catchLoc"),h=q.call(e,"finallyLoc");if(g&&h){if(this.prev<e.catchLoc)return b(e.catchLoc,!0);if(this.prev<e.finallyLoc)return b(e.finallyLoc)}else if(!g){if(!h)throw new Error("try statement without catch or finally");if(this.prev<e.finallyLoc)return b(e.finallyLoc)}else if(this.prev<e.catchLoc)return b(e.catchLoc,!0)}}},abrupt:function abrupt(a,b){for(var c,d=this.tryEntries.length-1;0<=d;--d)if(c=this.tryEntries[d],c.tryLoc<=this.prev&&q.call(c,"finallyLoc")&&this.prev<c.finallyLoc){var e=c;break}e&&("break"===a||"continue"===a)&&e.tryLoc<=b&&b<=e.finallyLoc&&(e=null);var f=e?e.completion:{};return f.type=a,f.arg=b,e?(this.method="next",this.next=e.finallyLoc,v):this.complete(f)},complete:function complete(a,b){if("throw"===a.type)throw a.arg;return"break"===a.type||"continue"===a.type?this.next=a.arg:"return"===a.type?(this.rval=this.arg=a.arg,this.method="return",this.next="end"):"normal"===a.type&&b&&(this.next=b),v},finish:function finish(a){for(var b,c=this.tryEntries.length-1;0<=c;--c)if(b=this.tryEntries[c],b.finallyLoc===a)return this.complete(b.completion,b.afterLoc),k(b),v},catch:function _catch(a){for(var b,c=this.tryEntries.length-1;0<=c;--c)if(b=this.tryEntries[c],b.tryLoc===a){var d=b.completion;if("throw"===d.type){var e=d.arg;k(b)}return e}throw new Error("illegal catch attempt")},delegateYield:function delegateYield(a,b,c){return this.delegate={iterator:m(a),resultName:b,nextLoc:c},"next"===this.method&&(this.arg=void 0),v}},o}function asyncGeneratorStep(a,b,c,d,e,f,g){try{var h=a[f](g),i=h.value}catch(a){return void c(a)}h.done?b(i):Promise.resolve(i).then(d,e)}function _asyncToGenerator(a){return function(){var b=this,c=arguments;return new Promise(function(d,e){function f(a){asyncGeneratorStep(h,d,e,f,g,"next",a)}function g(a){asyncGeneratorStep(h,d,e,f,g,"throw",a)}var h=a.apply(b,c);f(void 0)})}}var SamlStrategy=passportSaml.Strategy,saltRounds=10,salt=64,logoDir="public/upload/",defaultLogo="public/default/logo.png";module.exports=function(a,b,c,d){// ======== APP ROUTES - ACCOUNT ====================
+function e(){return f.apply(this,arguments)}function f(){return f=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function b(a){var c,d,e;return _regeneratorRuntime().wrap(function f(b){for(;1;)switch(b.prev=b.next){case 0:return b.next=2,_dbController.dbController.getUserByEmail(a);case 2:if(c=b.sent,c){b.next=8;break}return console.log("no user found"),b.abrupt("return",null);case 8:return d=new _user.User(c.id,a,c.salutation,c.title,c.firstname,c.lastname,c.industry,c.organisation,c.speciality,c.m4lab_idp,c.verificationStatus),b.next=11,_dbController.dbController.getGitlabId(d.id);case 11:return e=b.sent,e&&d.setGitlabUserId(e),b.abrupt("return",d);case 14:case"end":return b.stop();}},b)})),f.apply(this,arguments)}c.serializeUser(function(a,b){b(null,a)}),c.deserializeUser(function(a,b){b(null,a)});var g=new SamlStrategy({// URL that goes from the Identity Provider -> Service Provider
+callbackUrl:b.passport.saml.path,// Base address to call logout requests
+logoutUrl:b.passport.saml.logoutUrl,entryPoint:b.passport.saml.entryPoint,issuer:b.passport.saml.issuer,identifierFormat:void 0,// Service Provider private key
+decryptionPvk:_fs["default"].readFileSync(__dirname+"/cert/key.pem","utf8"),// Service Provider Certificate
+privateKey:_fs["default"].readFileSync(__dirname+"/cert/key.pem","utf8"),// Identity Provider's public key
+cert:_fs["default"].readFileSync(__dirname+"/cert/cert_idp.pem","utf8"),validateInResponseTo:!1,disableRequestedAuthnContext:!0},function(a,b){return b(null,{id:a.nameID,idFormat:a.nameIDFormat,email:a.email,firstName:a.givenName,lastName:a.sn})});// ============= SAML ==============
+// to generate Service Provider's XML metadata
+// ============= NEW GITLAB PAGES ===========================
+// update a website
+c.use(g),a.post(b.passport.saml.path,c.authenticate(b.passport.strategy,{failureRedirect:"/account/",failureFlash:!0}),function(a,b){b.redirect("/account/")}),a.get("/saml/metadata",function(a,b){b.type("application/xml");var c=g.generateServiceProviderMetadata(_fs["default"].readFileSync(__dirname+"/cert/cert.pem","utf8"));b.status(200).send(c)}),a.get("/",/*#__PURE__*/function(){var a=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function c(a,b){var f;return _regeneratorRuntime().wrap(function g(c){for(;1;)switch(c.prev=c.next){case 0:if(a.isAuthenticated()){c.next=4;break}b.redirect("/login"),c.next=8;break;case 4:return c.next=6,e(a.user.email);case 6:f=c.sent,null==f?(console.error("user data is not found"),b.status(500).render(d+"/500",{error:"Your data is not found. Please try again."})):b.render(d+"/account/home",{user:f});case 8:case"end":return c.stop();}},c)}));return function(b,c){return a.apply(this,arguments)}}()),a.get("/login",c.authenticate(b.passport.strategy,{successRedirect:"/",failureRedirect:"/login"})),a.get("/logout",function(a,b){return null==a.user?b.redirect("/"):(a.user.nameID=a.user.id,a.user.nameIDFormat=a.user.idFormat,g.logout(a,function(c,d){return a.logout(),a.session&&a.session.destroy(function(a){if(a)return console.log(a)}),b.redirect(d)}))}),a.get("/profile",/*#__PURE__*/function(){var a=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function c(a,b){var f;return _regeneratorRuntime().wrap(function g(c){for(;1;)switch(c.prev=c.next){case 0:if(a.isAuthenticated()){c.next=4;break}b.redirect("/login"),c.next=8;break;case 4:return c.next=6,e(a.user.email);case 6:f=c.sent,null==f?b.redirect("/account/"):1===f.getVerificationStatus()?b.render(d+"/account/profile",{user:f}):b.redirect("/account/");case 8:case"end":return c.stop();}},c)}));return function(b,c){return a.apply(this,arguments)}}()),a.get("/services",/*#__PURE__*/function(){var a=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function c(a,b){var f,g,h,i,j,k,l,m,n;return _regeneratorRuntime().wrap(function o(c){for(;1;)switch(c.prev=c.next){case 0:if(a.isAuthenticated()){c.next=4;break}b.redirect("/login"),c.next=45;break;case 4:return c.next=6,e(a.user.email);case 6:if(f=c.sent,null!=f){c.next=11;break}b.redirect("/account/"),c.next=45;break;case 11:if(1===f.getVerificationStatus()){c.next=15;break}b.redirect("/account/"),c.next=45;break;case 15:if(g=[],h=[],!f.getGitlabUserId()){c.next=41;break}return c.next=20,_gitlabController.gitlabController.getUserProjects(f.getGitlabUserId());case 20:if(i=c.sent,!i){c.next=38;break}c.t0=_regeneratorRuntime().keys(i);case 23:if((c.t1=c.t0()).done){c.next=38;break}if(j=c.t1.value,!i[j].tag_list.includes("website")){c.next=34;break}return c.t2=new _website.Website(f.getGitlabUserId(),i[j].name,i[j].description,i[j].id,i[j].avatar_url,i[j].path_with_namespace),c.next=29,_gitlabController.gitlabController.getProjectPipelineLatestStatus(i[j].id);case 29:c.t3=c.sent,k={projectInformation:c.t2,pipelineStatus:c.t3},h.push(k),c.next=36;break;case 34:l=new _repo.Repo(f.getGitlabUserId(),i[j].name,i[j].description,i[j].id,i[j].avatar_url,i[j].path_with_namespace),g.push(l);case 36:c.next=23;break;case 38:b.render(d+"/account/services",{user:f,gitlabRepos:g,gitlabPages:h}),c.next=45;break;case 41:return c.next=43,_gitlabController.gitlabController.getUserByEmail(f.getEmail());case 43:m=c.sent,m?(n={user_id:f.getId(),gitlab_userId:m.id},_dbController.dbController.addGitlabUser(n,function(a){a?b.status(500).render(d+"/500",{error:a}):b.redirect("/account/services")})):b.render(d+"/account/services",{user:f,gitlabRepos:null,gitlabPages:null});case 45:case"end":return c.stop();}},c)}));return function(b,c){return a.apply(this,arguments)}}()),a.get("/security",/*#__PURE__*/function(){var a=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function c(a,b){var f;return _regeneratorRuntime().wrap(function g(c){for(;1;)switch(c.prev=c.next){case 0:if(a.isAuthenticated()){c.next=4;break}b.redirect("/login"),c.next=8;break;case 4:return c.next=6,e(a.user.email);case 6:f=c.sent,null==f?b.redirect("/account/"):1===f.getVerificationStatus()&&1===f.getIdpStatus()?b.render(d+"/account/security",{user:f}):b.redirect("/account/");case 8:case"end":return c.stop();}},c)}));return function(b,c){return a.apply(this,arguments)}}()),a.post("/updateProfile",/*#__PURE__*/function(){var a=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function c(a,b){var d,f,g;return _regeneratorRuntime().wrap(function h(c){for(;1;)switch(c.prev=c.next){case 0:if(a.isAuthenticated()){c.next=4;break}b.redirect("/login"),c.next=17;break;case 4:return c.next=6,e(a.user.email);case 6:if(d=c.sent,null!=d){c.next=11;break}b.redirect("/account/"),c.next=17;break;case 11:return f={salutation:a.body.inputSalutation,title:a.body.inputTitle,firstname:a.body.inputFirstname,lastname:a.body.inputLastname,email:a.body.inputEmail,organisation:a.body.inputOrganisation,industry:a.body.inputIndustry,speciality:a.body.inputSpeciality},c.next=14,_dbController.dbController.updateUserById(d.getId(),f);case 14:g=c.sent,g?(d.updateProfile(f.salutation,f.title,f.firstname,f.lastname,f.email,f.organisation,f.industry,f.speciality),b.flash("success","Ihr Benutzerprofil wurde aktualisiert!")):b.flash("error","Failed"),b.redirect("/account/profile");case 17:case"end":return c.stop();}},c)}));return function(b,c){return a.apply(this,arguments)}}()),a.post("/changePwd",/*#__PURE__*/function(){var a=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function c(a,b){var f,g,h,i;return _regeneratorRuntime().wrap(function j(c){for(;1;)switch(c.prev=c.next){case 0:if(a.isAuthenticated()){c.next=4;break}b.redirect("/login"),c.next=8;break;case 4:return c.next=6,e(a.user.email);case 6:f=c.sent,null==f?b.redirect("/account/"):(g=a.body.inputCurrPwd,h=a.body.inputNewPwd,i=a.body.inputConfirm,_dbconn.dbConnection.user.query("SELECT password FROM credential WHERE user_id="+f.getId(),function(a,c){a&&(console.error(a),b.status(500).render(d+"/500",{error:a}));var e=c[0].password;// check if the password is correct
+_bcryptjs["default"].compare(g,e,function(a,c){a?(console.error(a),b.status(500).render(d+"/500",{error:a})):c?h===i?_bcryptjs["default"].genSalt(saltRounds,function(a,c){_bcryptjs["default"].hash(h,c,/*#__PURE__*/function(){var a=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function d(a,c){var e,g;return _regeneratorRuntime().wrap(function d(a){for(;1;)switch(a.prev=a.next){case 0:return e={password:c,user_id:f.getId()},a.next=3,_dbController.dbController.updateCredential(e);case 3:g=a.sent,g?(b.flash("success","Passwort aktualisiert!"),_mailer.mailer.options.to=f.getEmail(),_mailer.mailer.options.subject=_const.miscConst.updatePasswordMailSubject,_mailer.mailer.options.html=_const.miscConst.updatePasswordMailContent+"<div>"+_const.miscConst.mailSignature+"</div>",_mailer.mailer.transporter.sendMail(_mailer.mailer.options,function(a){a&&console.log(a)})):(console.log("Failed to reset password"),b.flash("error","Datenbankfehler: Passwort kann nicht ge\xE4ndert werden.")),b.redirect("/account/security");case 6:case"end":return a.stop();}},d)}));return function(b,c){return a.apply(this,arguments)}}())}):(b.flash("error","Passw\xF6rter stimmen nicht \xFCberein. Bitte stellen Sie sicher, dass Sie das Passwort beide Male genau gleich eingeben."),b.redirect("/account/security")):(b.flash("error","Das Passwort ist leider falsch. Bitte \xFCberpr\xFCfen Sie Ihre Eingabe."),b.redirect("/account/security"))})}));case 8:case"end":return c.stop();}},c)}));return function(b,c){return a.apply(this,arguments)}}()),a.get("/resendVerificationEmail",/*#__PURE__*/function(){var a=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function d(a,c){var f,g,h,i;return _regeneratorRuntime().wrap(function j(d){for(;1;)switch(d.prev=d.next){case 0:if(a.isAuthenticated){d.next=4;break}c.redirect("/login"),d.next=15;break;case 4:return d.next=6,e(a.user.email);case 6:if(f=d.sent,null!=f){d.next=11;break}c.redirect("/login"),d.next=15;break;case 11:return d.next=13,_dbController.dbController.getVerificationTokenByUserId(f.id);case 13:g=d.sent,g?(h="Bitte best\xE4tigen Sie Ihr M4_LAB Benutzerkonto",i="<div>Lieber Nutzer,<br/><br/><p>vielen Dank f\xFCr Ihre Anmeldung am Transferportal der HFT Stuttgart. <br/>Um Ihre Anmeldung zu best\xE4tigen, klicken Sie bitte diesen Link: "+b.app.host+"/verifyAccount?token="+g+"<br/><br/>Ohne Best\xE4tigung Ihres Kontos m\xFCssen wir Ihr Konto leider nach 7 Tagen l\xF6schen.</p><br/>"+_const.miscConst.mailSignature+"</div>",_mailer.mailer.options.to=f.email,_mailer.mailer.options.subject=h,_mailer.mailer.options.html=i,_mailer.mailer.transport.sendMail(_mailer.mailer.options,function(a){if(a)throw console.log("cannot send email"),a}),c.send(!0)):c.send(!1);case 15:case"end":return d.stop();}},d)}));return function(b,c){return a.apply(this,arguments)}}()),a.get("/newInformation",/*#__PURE__*/function(){var a=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function c(a,b){var f,g;return _regeneratorRuntime().wrap(function h(c){for(;1;)switch(c.prev=c.next){case 0:if(a.isAuthenticated()){c.next=4;break}b.redirect("/login"),c.next=15;break;case 4:return c.next=6,e(a.user.email);case 6:if(f=c.sent,null!=f){c.next=11;break}b.redirect("/login"),c.next=15;break;case 11:return c.next=13,_gitlabController.gitlabController.getUserByEmail(f.getEmail());case 13:g=c.sent,g?b.render(d+"/account/newInformation",{user:f,gitlabUsername:g.username}):b.redirect("/account/services");case 15:case"end":return c.stop();}},c)}));return function(b,c){return a.apply(this,arguments)}}()),a.post("/newInformation",/*#__PURE__*/function(){var a=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function c(a,b){var d,f,g,h,i,j;return _regeneratorRuntime().wrap(function k(c){for(;1;)switch(c.prev=c.next){case 0:if(a.isAuthenticated()){c.next=4;break}b.redirect("/login"),c.next=8;break;case 4:return c.next=6,e(a.user.email);case 6:d=c.sent,null==d?b.redirect("/login"):a.body.name||a.body.description?(f=a.body.name.toLowerCase().replace(/\s/g,"-"),g=a.body.description,h=a.body.template,i=new _website.Website(d.getGitlabUserId(),f,g),j=defaultLogo,a.files&&(j=a.files.logo),_async["default"].waterfall([function(b){a.files?j.mv(logoDir+j.name,function(a){j=logoDir+j.name,b(a,j)}):b(null,j)},/*#__PURE__*/function(){var a=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function c(a){var d;return _regeneratorRuntime().wrap(function e(c){for(;1;)switch(c.prev=c.next){case 0:return c.next=2,_gitlabController.gitlabController.createNewPages(i,a,h);case 2:d=c.sent,d.status?("has already been taken"===d.data.message.name?b.flash("error","Der Projektname '"+i.getName()+"' ist bereits vergeben, bitte w\xE4hlen Sie einen anderen Namen."):b.flash("error","Ein Fehler ist aufgetreten. Bitte versuchen Sie es erneut.\xA0"),b.redirect("/account/newInformation")):(b.flash("success","Ihre Webseite wurde erstellt, aber noch nicht ver\xF6ffentlicht. Um Ihre Webseite endg\xFCltig zu ver\xF6ffentlichen, schlie\xDFen Sie die Einrichtung gem\xE4\xDF unten stehender Anleitung ab."),b.redirect("/account/updateInformation?id="+(d.id+"")));case 4:case"end":return c.stop();}},c)}));return function(b){return a.apply(this,arguments)}}()],function(b){null!=b&&console.log(b),a.files&&_fs["default"].unlink(j,function(a){null!=a&&console.log(a)})})):(b.flash("error","Bitte geben Sie die ben\xF6tigten Daten ein"),b.redirect("/account/newInformation"));case 8:case"end":return c.stop();}},c)}));return function(b,c){return a.apply(this,arguments)}}()),a.get("/updateInformation",/*#__PURE__*/function(){var a=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function c(a,b){var f,g,h;return _regeneratorRuntime().wrap(function i(c){for(;1;)switch(c.prev=c.next){case 0:if(a.isAuthenticated()){c.next=4;break}b.redirect("/login"),c.next=19;break;case 4:return c.next=6,e(a.user.email);case 6:if(f=c.sent,null!=f){c.next=11;break}b.redirect("/login"),c.next=19;break;case 11:if(a.query.id){c.next=15;break}b.redirect("/account/services"),c.next=19;break;case 15:return c.next=17,_gitlabController.gitlabController.getProjectById(a.query.id);case 17:g=c.sent,g?g.owner?g.owner.id===f.getGitlabUserId()?(h=new _website.Website(f.getGitlabUserId(),g.name,g.description,a.query.id,g.avatar_url,g.path_with_namespace),b.render(d+"/account/updateInformation",{user:f,information:h})):(console.log(" ========= Access denied: Not your project"),b.redirect("/account/services")):(console.log(" ========= Project cannot be accessed, since it does not have an owner"),b.redirect("/account/services")):(console.log(" ========= Error or no project found"),b.redirect("/account/services"));case 19:case"end":return c.stop();}},c)}));return function(b,c){return a.apply(this,arguments)}}()),a.post("/updateInformation",/*#__PURE__*/function(){var a=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function c(a,b){var d,f,g,h,i;return _regeneratorRuntime().wrap(function j(c){for(;1;)switch(c.prev=c.next){case 0:if(a.isAuthenticated()){c.next=4;break}b.redirect("/login"),c.next=8;break;case 4:return c.next=6,e(a.user.email);case 6:d=c.sent,null==d?b.redirect("/login"):a.body.name||a.body.description?(f=a.body.name.toLowerCase().replace(/\s/g,"-"),g=a.body.description,h=new _website.Website(d.getGitlabUserId(),f,g,a.query.id),_async["default"].waterfall([function(b){a.files?(i=a.files.logo,i.mv(logoDir+(i.name+""),function(a){i=logoDir+(i.name+""),b(a,i)})):b(null,i)},/*#__PURE__*/function(){var a=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function c(a){var d;return _regeneratorRuntime().wrap(function e(c){for(;1;)switch(c.prev=c.next){case 0:return c.next=2,_gitlabController.gitlabController.updateProject(h,a);case 2:d=c.sent,d.status?"has already been taken"===d.data.message.name?b.flash("error","Der Projektname '"+(f+"' ist bereits vergeben, bitte w\xE4hlen Sie einen anderen Namen.")):b.flash("error","Ein Fehler ist aufgetreten. Bitte versuchen Sie es erneut.\xA0"):(h.setLogo(d.avatar_url),h.setPath(d.path),b.flash("success","Ihre Website wurde aktualisiert")),b.redirect("/account/updateInformation?id="+(h.getId()+""));case 5:case"end":return c.stop();}},c)}));return function(b){return a.apply(this,arguments)}}()],function(a){null!=a&&console.log(a),i&&_fs["default"].unlink(i,function(a){null!=a&&console.log(a)})})):(b.flash("error","Bitte geben Sie die ben\xF6tigten Daten ein"),b.redirect("/account/updateInformation"));case 8:case"end":return c.stop();}},c)}));return function(b,c){return a.apply(this,arguments)}}()),a["delete"]("/deleteProject",/*#__PURE__*/function(){var a=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function c(a,b){var d,f,g,h;return _regeneratorRuntime().wrap(function i(c){for(;1;)switch(c.prev=c.next){case 0:if(a.isAuthenticated()){c.next=4;break}b.redirect("/login"),c.next=33;break;case 4:return c.next=6,e(a.user.email);case 6:if(d=c.sent,null!=d){c.next=11;break}b.redirect("/login"),c.next=33;break;case 11:if(f=a.body.id,!f){c.next=32;break}return c.next=15,_gitlabController.gitlabController.getProjectById(f);case 15:if(g=c.sent,g){c.next=20;break}console.log(" ========= Error or no project found"),c.next=32;break;case 20:if(g.owner){c.next=24;break}console.log(" ========= Project cannot be accessed, since it does not have an owner"),c.next=32;break;case 24:if(g.owner.id===d.getGitlabUserId()){c.next=28;break}console.log(" ========= Access denied: Not your project"),c.next=32;break;case 28:return c.next=30,_gitlabController.gitlabController.deleteProjectById(f);case 30:h=c.sent,h||b.flash("error","Project cannot be deleted. Please try again.");case 32:b.redirect("/account/services");case 33:case"end":return c.stop();}},c)}));return function(b,c){return a.apply(this,arguments)}}())};
\ No newline at end of file
diff --git a/built/routes/cert/cert.pem b/built/routes/cert/cert.pem
new file mode 100644
index 00000000..0a11f4a1
--- /dev/null
+++ b/built/routes/cert/cert.pem
@@ -0,0 +1,33 @@
+-----BEGIN CERTIFICATE-----
+MIIFpDCCA4ygAwIBAgIJAKOpWVnPZyUUMA0GCSqGSIb3DQEBCwUAMGcxCzAJBgNV
+BAYTAkRFMRIwEAYDVQQIDAlTdHV0dGdhcnQxEjAQBgNVBAcMCVN0dXR0Z2FydDEM
+MAoGA1UECgwDSEZUMQ4wDAYDVQQLDAVNNExBQjESMBAGA1UEAwwJU2lob21iaW5n
+MB4XDTE5MTEwODE0MzI0M1oXDTIyMDQyNjE0MzI0M1owZzELMAkGA1UEBhMCREUx
+EjAQBgNVBAgMCVN0dXR0Z2FydDESMBAGA1UEBwwJU3R1dHRnYXJ0MQwwCgYDVQQK
+DANIRlQxDjAMBgNVBAsMBU00TEFCMRIwEAYDVQQDDAlTaWhvbWJpbmcwggIiMA0G
+CSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDmPKgA2gn8KOBe73p3Tsdve90n2itC
+wno8qs3XyTatdk84PZWOJz7iyWElLOgKUThvbQ7Z6yDKSFxmuwX+cMqqdmaJY6Dz
+vKOPOQT0adGWUlRRP0QucTYKvV8euqr+vKBWo6HN73RYXgwSVapOfNCh71s09cmh
+2jkGPvPgQ0ZhoO85fdn4xf328bP0b4pG5oCJu/oOWxesCXlyHcOGx0jrR8H7Nsee
+36vOrOg3CJWM+LNWhemKOC0WBj+3zEyVxiHZgy/3XAIBY2vohnU8osaOdVqT9sBr
+DrW4zkwAbGQiiDoUVfZw0ERS3YkBPbTtY3dkRviEabRn7WGCCsGRXNRIAm9pRl7W
+osddMIu4tmkmNeJvfBFv3fM/aVS6UYuSmUAdd5g5M82U9BFz5IRXZITODbgLO6jM
+dZ5XM3sffadrneC0r/IKnX57XvC6jUvSuAtum6Zct2sr5tEJRrrkZ52ZVLydBQtW
+kvcqD/C+t4sJpLXn+2Dt+FRc5NTy/zu5kNJ4FKBx+aBMdWVk336y40yjlAFcWu82
+dKL0RzTlPGdp7IGsrCRsPozVrawtM/5OPcAMow/Tg8q9Z67wbpeB3OGiG1PmpjNq
+iG/+l/CrU8PSBF+RaSRNg+VfPTw+0lAatV0RstHJzXN4a+fQVGt54rN+mkNE7LrV
+TTgWPqAk9AcPuQIDAQABo1MwUTAdBgNVHQ4EFgQUQXEm5SdEh/kQ5cjAhQxgVkL/
+GQowHwYDVR0jBBgwFoAUQXEm5SdEh/kQ5cjAhQxgVkL/GQowDwYDVR0TAQH/BAUw
+AwEB/zANBgkqhkiG9w0BAQsFAAOCAgEA1yuHFmrzoVMLC0f+puPT7ob9Efhyk17G
+mYHu5IWGzovDjkFv2w0ZzI86XhIBjpyVHgivVQjCFmnnb6FdFHCVJD3eNKHJTRD+
+TBi42mU9AOm+lcK39jL4+Nhnr5rmob+UsOgqhUxx76Y0BSIUm7ax3ezHp7mmbr68
+hxQcPv1YEmrSE0NQvXl1ck5CeK/p8KOsGKGaOnnfvMp7QICTLeCiRnBSCTk0pWgY
+KP3DSAsp4OtuaHXh7xnNKOMrK2mvZJux3U2z6BC2JGWZGnBGjmwHr7xA7P2gg642
+IsSvcYBR9QHoQHJZT8x2904igVIxHUjz4H3oAgL4e8ksTANKkudmtAD/YDW1rLTY
+mpWUyMf5UwVXzd8/VoAkzX7gNh7oTXPmo0gQ1XyWQRKokoUGdkz38bb3J8yOlpwN
+1XojKDyucM/CWB3zUmoXgjQwKlf+oF5AyYv5ElIHoZK3S6WciKjYjJqfZA7RqPml
+LVBbDZNcDZm/e5qtYz7r4TOW75GNJLzXnafGwqeNmbHprgYdvjlNLmtAeojuKr8n
+Pi3Lu89e/8IKbX6+GkuYcv6XjnQc+keTBb4Lo17+HXduixgMyEy+ErIOUx6UMiLs
+8UgrEsOaxhrzEufC5B6tqYGQzMXTBuSW/Mzv6BddX4W3+pnOa9m7B3+JMFlh0lgC
+GobuGUHz6X4=
+-----END CERTIFICATE-----
diff --git a/built/routes/cert/cert_idp.pem b/built/routes/cert/cert_idp.pem
new file mode 100644
index 00000000..a113711b
--- /dev/null
+++ b/built/routes/cert/cert_idp.pem
@@ -0,0 +1 @@
+key-goes-here
\ No newline at end of file
diff --git a/built/routes/cert/key.pem b/built/routes/cert/key.pem
new file mode 100644
index 00000000..735408af
--- /dev/null
+++ b/built/routes/cert/key.pem
@@ -0,0 +1,3 @@
+-----BEGIN PRIVATE KEY-----
+key-goes-here
+-----END PRIVATE KEY-----
diff --git a/built/routes/public.js b/built/routes/public.js
new file mode 100644
index 00000000..5a1bfaa4
--- /dev/null
+++ b/built/routes/public.js
@@ -0,0 +1,7 @@
+"use strict";var _publicController=require("../controller/publicController");function _typeof(a){"@babel/helpers - typeof";return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a},_typeof(a)}function _regeneratorRuntime(){"use strict";/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */function a(a,b,c){return Object.defineProperty(a,b,{value:c,enumerable:!0,configurable:!0,writable:!0}),a[b]}function b(a,b,e,f){var g=b&&b.prototype instanceof d?b:d,h=Object.create(g.prototype),j=new l(f||[]);return h._invoke=function(a,b,d){var e="suspendedStart";return function(f,g){if("executing"===e)throw new Error("Generator is already running");if("completed"===e){if("throw"===f)throw g;return n()}for(d.method=f,d.arg=g;;){var h=d.delegate;if(h){var j=i(h,d);if(j){if(j===v)continue;return j}}if("next"===d.method)d.sent=d._sent=d.arg;else if("throw"===d.method){if("suspendedStart"===e)throw e="completed",d.arg;d.dispatchException(d.arg)}else"return"===d.method&&d.abrupt("return",d.arg);e="executing";var k=c(a,b,d);if("normal"===k.type){if(e=d.done?"completed":"suspendedYield",k.arg===v)continue;return{value:k.arg,done:d.done}}"throw"===k.type&&(e="completed",d.method="throw",d.arg=k.arg)}}}(a,e,j),h}function c(a,b,c){try{return{type:"normal",arg:a.call(b,c)}}catch(a){return{type:"throw",arg:a}}}function d(){}function e(){}function f(){}function g(b){["next","throw","return"].forEach(function(c){a(b,c,function(a){return this._invoke(c,a)})})}function h(a,b){function d(e,f,g,h){var i=c(a[e],a,f);if("throw"!==i.type){var j=i.arg,k=j.value;return k&&"object"==_typeof(k)&&q.call(k,"__await")?b.resolve(k.__await).then(function(a){d("next",a,g,h)},function(a){d("throw",a,g,h)}):b.resolve(k).then(function(a){j.value=a,g(j)},function(a){return d("throw",a,g,h)})}h(i.arg)}var e;this._invoke=function(a,c){function f(){return new b(function(b,e){d(a,c,b,e)})}return e=e?e.then(f,f):f()}}function i(a,b){var d=a.iterator[b.method];if(void 0===d){if(b.delegate=null,"throw"===b.method){if(a.iterator["return"]&&(b.method="return",b.arg=void 0,i(a,b),"throw"===b.method))return v;b.method="throw",b.arg=new TypeError("The iterator does not provide a 'throw' method")}return v}var e=c(d,a.iterator,b.arg);if("throw"===e.type)return b.method="throw",b.arg=e.arg,b.delegate=null,v;var f=e.arg;return f?f.done?(b[a.resultName]=f.value,b.next=a.nextLoc,"return"!==b.method&&(b.method="next",b.arg=void 0),b.delegate=null,v):f:(b.method="throw",b.arg=new TypeError("iterator result is not an object"),b.delegate=null,v)}function j(a){var b={tryLoc:a[0]};1 in a&&(b.catchLoc=a[1]),2 in a&&(b.finallyLoc=a[2],b.afterLoc=a[3]),this.tryEntries.push(b)}function k(a){var b=a.completion||{};b.type="normal",delete b.arg,a.completion=b}function l(a){this.tryEntries=[{tryLoc:"root"}],a.forEach(j,this),this.reset(!0)}function m(a){if(a){var b=a[s];if(b)return b.call(a);if("function"==typeof a.next)return a;if(!isNaN(a.length)){var c=-1,d=function b(){for(;++c<a.length;)if(q.call(a,c))return b.value=a[c],b.done=!1,b;return b.value=void 0,b.done=!0,b};return d.next=d}}return{next:n}}function n(){return{value:void 0,done:!0}}_regeneratorRuntime=function(){return o};var o={},p=Object.prototype,q=p.hasOwnProperty,r="function"==typeof Symbol?Symbol:{},s=r.iterator||"@@iterator",t=r.asyncIterator||"@@asyncIterator",u=r.toStringTag||"@@toStringTag";try{a({},"")}catch(b){a=function(a,b,c){return a[b]=c}}o.wrap=b;var v={},w={};a(w,s,function(){return this});var x=Object.getPrototypeOf,y=x&&x(x(m([])));y&&y!==p&&q.call(y,s)&&(w=y);var z=f.prototype=d.prototype=Object.create(w);return e.prototype=f,a(z,"constructor",f),a(f,"constructor",e),e.displayName=a(f,u,"GeneratorFunction"),o.isGeneratorFunction=function(a){var b="function"==typeof a&&a.constructor;return!!b&&(b===e||"GeneratorFunction"===(b.displayName||b.name))},o.mark=function(b){return Object.setPrototypeOf?Object.setPrototypeOf(b,f):(b.__proto__=f,a(b,u,"GeneratorFunction")),b.prototype=Object.create(z),b},o.awrap=function(a){return{__await:a}},g(h.prototype),a(h.prototype,t,function(){return this}),o.AsyncIterator=h,o.async=function(a,c,d,e,f){void 0===f&&(f=Promise);var g=new h(b(a,c,d,e),f);return o.isGeneratorFunction(c)?g:g.next().then(function(a){return a.done?a.value:g.next()})},g(z),a(z,u,"Generator"),a(z,s,function(){return this}),a(z,"toString",function(){return"[object Generator]"}),o.keys=function(a){var b=[];for(var c in a)b.push(c);return b.reverse(),function c(){for(;b.length;){var d=b.pop();if(d in a)return c.value=d,c.done=!1,c}return c.done=!0,c}},o.values=m,l.prototype={constructor:l,reset:function reset(a){if(this.prev=0,this.next=0,this.sent=this._sent=void 0,this.done=!1,this.delegate=null,this.method="next",this.arg=void 0,this.tryEntries.forEach(k),!a)for(var b in this)"t"===b.charAt(0)&&q.call(this,b)&&!isNaN(+b.slice(1))&&(this[b]=void 0)},stop:function stop(){this.done=!0;var a=this.tryEntries[0].completion;if("throw"===a.type)throw a.arg;return this.rval},dispatchException:function dispatchException(a){function b(b,d){return f.type="throw",f.arg=a,c.next=b,d&&(c.method="next",c.arg=void 0),!!d}if(this.done)throw a;for(var c=this,d=this.tryEntries.length-1;0<=d;--d){var e=this.tryEntries[d],f=e.completion;if("root"===e.tryLoc)return b("end");if(e.tryLoc<=this.prev){var g=q.call(e,"catchLoc"),h=q.call(e,"finallyLoc");if(g&&h){if(this.prev<e.catchLoc)return b(e.catchLoc,!0);if(this.prev<e.finallyLoc)return b(e.finallyLoc)}else if(!g){if(!h)throw new Error("try statement without catch or finally");if(this.prev<e.finallyLoc)return b(e.finallyLoc)}else if(this.prev<e.catchLoc)return b(e.catchLoc,!0)}}},abrupt:function abrupt(a,b){for(var c,d=this.tryEntries.length-1;0<=d;--d)if(c=this.tryEntries[d],c.tryLoc<=this.prev&&q.call(c,"finallyLoc")&&this.prev<c.finallyLoc){var e=c;break}e&&("break"===a||"continue"===a)&&e.tryLoc<=b&&b<=e.finallyLoc&&(e=null);var f=e?e.completion:{};return f.type=a,f.arg=b,e?(this.method="next",this.next=e.finallyLoc,v):this.complete(f)},complete:function complete(a,b){if("throw"===a.type)throw a.arg;return"break"===a.type||"continue"===a.type?this.next=a.arg:"return"===a.type?(this.rval=this.arg=a.arg,this.method="return",this.next="end"):"normal"===a.type&&b&&(this.next=b),v},finish:function finish(a){for(var b,c=this.tryEntries.length-1;0<=c;--c)if(b=this.tryEntries[c],b.finallyLoc===a)return this.complete(b.completion,b.afterLoc),k(b),v},catch:function _catch(a){for(var b,c=this.tryEntries.length-1;0<=c;--c)if(b=this.tryEntries[c],b.tryLoc===a){var d=b.completion;if("throw"===d.type){var e=d.arg;k(b)}return e}throw new Error("illegal catch attempt")},delegateYield:function delegateYield(a,b,c){return this.delegate={iterator:m(a),resultName:b,nextLoc:c},"next"===this.method&&(this.arg=void 0),v}},o}function asyncGeneratorStep(a,b,c,d,e,f,g){try{var h=a[f](g),i=h.value}catch(a){return void c(a)}h.done?b(i):Promise.resolve(i).then(d,e)}function _asyncToGenerator(a){return function(){var b=this,c=arguments;return new Promise(function(d,e){function f(a){asyncGeneratorStep(h,d,e,f,g,"next",a)}function g(a){asyncGeneratorStep(h,d,e,f,g,"throw",a)}var h=a.apply(b,c);f(void 0)})}}module.exports=function(a,b,c){// ================== NEW USERS REGISTRATION ======================
+// to check whether or not an account is already exist
+// =================== USERS VERIFICATION =========================
+// ==================== FORGOT PASSWORD ===========================
+// reset
+// ======================= CONTACT FORM ===========================
+a.get("/registration",function(a,b){_publicController.publicController.showRegistrationPage(b,c)}),a.post("/registration",function(a,c){_publicController.publicController.registerUser(a,c,b)}),a.get("/email/:email",/*#__PURE__*/function(){var a=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function c(a,b){return _regeneratorRuntime().wrap(function d(c){for(;1;)switch(c.prev=c.next){case 0:_publicController.publicController.checkUserEmail(a,b);case 1:case"end":return c.stop();}},c)}));return function(b,c){return a.apply(this,arguments)}}()),a.get("/verifyAccount",/*#__PURE__*/function(){var a=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function d(a,b){return _regeneratorRuntime().wrap(function e(d){for(;1;)switch(d.prev=d.next){case 0:_publicController.publicController.verifyAccount(a,b,c);case 1:case"end":return d.stop();}},d)}));return function(b,c){return a.apply(this,arguments)}}()),a.get("/forgotPwd",function(a,b){_publicController.publicController.showForgotPwdPage(a,b,c)}),a.post("/forgotPwd",function(a,c){_publicController.publicController.generateNewToken(a,c,b)}),a.get("/reset/:token",/*#__PURE__*/function(){var a=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function d(a,b){return _regeneratorRuntime().wrap(function e(d){for(;1;)switch(d.prev=d.next){case 0:_publicController.publicController.showResetPassword(a,b,c);case 1:case"end":return d.stop();}},d)}));return function(b,c){return a.apply(this,arguments)}}()),a.post("/reset/:token",/*#__PURE__*/function(){var a=_asyncToGenerator(/*#__PURE__*/_regeneratorRuntime().mark(function c(a,b){return _regeneratorRuntime().wrap(function d(c){for(;1;)switch(c.prev=c.next){case 0:_publicController.publicController.resetPassword(a,b);case 1:case"end":return c.stop();}},c)}));return function(b,c){return a.apply(this,arguments)}}()),a.get("/contact",function(a,b){_publicController.publicController.showContactPage(a,b,c)}),a.post("/contact",function(a,b){_publicController.publicController.sendContactMessage(a,b)})};
\ No newline at end of file
diff --git a/built/views/DE/404.pug b/built/views/DE/404.pug
new file mode 100644
index 00000000..29a3cd86
--- /dev/null
+++ b/built/views/DE/404.pug
@@ -0,0 +1,30 @@
+doctype html
+html(lang="de")
+  head
+    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="/css/bootstrap.min.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="/")
+          img(src="/images/demo/m4lab_logo.jpg", class="img-responsive center-block", width="185", height="192")
+        br
+        br
+        p(class="h5") 404. The requested URL was not found.
+    // 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
diff --git a/built/views/DE/500.pug b/built/views/DE/500.pug
new file mode 100644
index 00000000..20dbfa9d
--- /dev/null
+++ b/built/views/DE/500.pug
@@ -0,0 +1,31 @@
+doctype html
+html(lang="de")
+  head
+    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="/css/bootstrap.min.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="/")
+          img(src="/images/demo/m4lab_logo.jpg", class="img-responsive center-block", width="185", height="192")
+        br
+        br
+        p(class="h5") 500. Unexpected Error :(
+        p #{ error }
+    // 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
diff --git a/built/views/DE/account/contact.pug b/built/views/DE/account/contact.pug
new file mode 100644
index 00000000..d25a801d
--- /dev/null
+++ b/built/views/DE/account/contact.pug
@@ -0,0 +1,56 @@
+doctype html
+html(lang="de")
+  head
+    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="/css/bootstrap.min.css")
+    link(rel="stylesheet", type="text/css", href="/css/m4lab.css")
+    link(rel="stylesheet", type="text/css", href="/css/m4lab-mobile.css")
+    link(rel="stylesheet", type="text/css", href="/css/Contact-Form-Clean.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")
+        div(class="row")
+            div(class="col-md-12 margin_bottom_40")
+                img(class="mx-auto" src="/img/Kontakt.jpg" width="100%")
+    div(class="contact-clean background_eaeaea")
+        if flash.success
+            div.alert.alert-success.alert-dismissible #{flash.success}
+                a(class="close", href="#", data-dismiss="alert", aria-label="close") &times;
+        if flash.error
+            div.alert.alert-danger.alert-dismissible.fade.show #{flash.error}
+                a(class="close", href="#", data-dismiss="alert", aria-label="close") &times;
+        form(method="POST")
+            h2(class="text_center") Kontaktieren Sie uns
+            div(class="form-group")
+                input#name(class="form-control" type="text" name="name" placeholder="Name")
+            div(class="form-group")
+                input#inputEmail(name="inputEmail", type="email", class="form-control", placeholder="E-Mail-Adresse*", maxlength="45" required)
+            div(class="form-group")
+                textarea#message(class="form-control" name="message" placeholder="Nachricht" rows="14")
+            div(class="form-group")
+                input#submitBtn(class="btn btn-primary" type="submit" value="SENDEN")
+    div(class="contact-clean contact_footer")
+        form
+            p(class="m_top_25") <strong>Hochschule für Technik Stuttgart</strong><br/>Institut für Angewandte Forschung<br/>Innovative Hochschule - Projekt M4_LAB<br/>Schellingstr. 24<br/>70174 Stuttgart<br/>Deutschland<br/><br/><a href="mailto:support-transfer@hft-stuttgart.de">support-transfer@hft-stuttgart.de</a><br/><br/><a href="https://www.hft-stuttgart.de/">www.hft-stuttgart.de</a> / <a href="https://www.hft-stuttgart.de/M4LAB">www.hft-stuttgart.de/M4LAB</a><br/>
+    div(class="background_8a348b")
+        div(class="container")
+            div(class="row")
+                div(class="col-md-4 col-lg-2")
+                div(class="col-md-4 col-lg-8")
+                    div(class="contact_foot_message")
+                        img(class="d-flex d-lg-flex justify-content-center justify-content-lg-center align-items-lg-start mx-auto p_bottom_35" src="/img/Logo_TV1.png" width="100px")
+                        h2(class="text-center color_8a348b") <strong>Transferportal</strong>
+                        p(class="text-center") Das Transferportal entsteht in einem Teilprojekt der Innovativen <a href="https://www.hft-stuttgart.de">Hochschule für Technik Stuttgart</a>. Im <a href="https://www.hft-stuttgart.de/forschung/innovative-hochschule-m4-lab">Innovationslabor M4_LAB</a> wird das Transferportal als eine Webpräsenz entwickelt, welches Wissen, Lösungen und Dienste für HFT-Mitglieder, externe Partner und die allgemeine Öffentlichkeit bereitstellt.<br/><br/>Es ergänzt die Informationen der allgemeinen HFT-Webseite durch konkrete Ergebnisse aus Forschung und Entwicklung, verfügbar in verschiedenster Form wie beispielsweise Daten, Dokumentationen und Software-Code.<br/><br/>Zudem stellt es Kollaborationsmittel für Projektpartner und später auch Partizipationsmöglichkeiten für die breite Öffentlichkeit bereit.
+                div(class="col-md-4 col-lg-2")
+
+
+    // 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")
+    // 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")
+    script(src="/js/mobile.js")
diff --git a/built/views/DE/account/forgotPwd.pug b/built/views/DE/account/forgotPwd.pug
new file mode 100644
index 00000000..4827e727
--- /dev/null
+++ b/built/views/DE/account/forgotPwd.pug
@@ -0,0 +1,36 @@
+doctype html
+html(lang="de")
+  head
+    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="/css/bootstrap.min.css")
+    link(rel="stylesheet", type="text/css", href="/css/m4lab.css")
+    link(rel="stylesheet", type="text/css", href="/css/m4lab-mobile.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")
+  body
+    div(class="container-fluid")
+        div(class="row")
+            div(class="col-md-6 offset-md-3")
+                if flash.success
+                    div.alert.alert-success.alert-dismissible #{flash.success}
+                        a(class="close", href="#", data-dismiss="alert", aria-label="close") &times;
+                if flash.error
+                    div.alert.alert-danger.alert-dismissible.fade.show #{flash.error}
+                        a(class="close", href="#", data-dismiss="alert", aria-label="close") &times;
+                form#forgotForm(class="form-signin", method="POST")
+                    img(src="https://transfer.hft-stuttgart.de/img/M4_LAB_LOGO.png", class="img-responsive center-block", width="185", height="192")
+                    div(class="form-row")
+                        input#inputEmail(name="inputEmail", type="email", class="form-control", placeholder="E-Mail-Adresse" required)                  
+                    br
+                    input(type="submit", class="btn btn-outline-dark btn-block", value="Passwort zurücksetzen")
+
+    // 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")
+    // 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")
+    script(src="/js/mobile.js")
diff --git a/built/views/DE/account/home.pug b/built/views/DE/account/home.pug
new file mode 100644
index 00000000..ff4409e9
--- /dev/null
+++ b/built/views/DE/account/home.pug
@@ -0,0 +1,75 @@
+doctype html
+html(lang="de")
+  head
+    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="/css/bootstrap.min.css")
+    link(rel="stylesheet", type="text/css", href="/css/m4lab.css")
+    link(rel="stylesheet", type="text/css", href="/css/m4lab-mobile.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")
+        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 display_none", role="status")
+        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 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
+                                if user.is_m4lab_idp
+                                    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 color_red" 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>
+                
+    // 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")
+    // 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")
+    script(src="/js/mobile.js")
+    script.
+        // call verifyAccount
+        function verify() {
+            $(".spinner-border").show()
+            $.get( "/resendVerificationEmail", function( 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/built/views/DE/account/newInformation.pug b/built/views/DE/account/newInformation.pug
new file mode 100644
index 00000000..4d82fe0d
--- /dev/null
+++ b/built/views/DE/account/newInformation.pug
@@ -0,0 +1,123 @@
+doctype html
+html(lang="de")
+  head
+    title= "Setup a new website"
+    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="/css/bootstrap.min.css")
+    link(rel="stylesheet", type="text/css", href="/css/m4lab.css")
+    link(rel="stylesheet", type="text/css", href="/css/m4lab-mobile.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")
+        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="/account/")
+                                    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
+                            if user.is_m4lab_idp
+                                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;")
+                                    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" 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")
+                nav(aria-label="breadcrumb")
+                    ol(class="breadcrumb")
+                        li(class="breadcrumb-item")
+                            a(href="/account/") Konto
+                        li(class="breadcrumb-item")
+                            a(href="/account/services") Projekte und Dienste
+                        li(class="breadcrumb-item active" aria-current="page") Neue Projektinformation
+
+                if flash.success
+                    div.alert.alert-success.alert-dismissible #{flash.success}
+                        a(class="close", href="#", data-dismiss="alert", aria-label="close") &times;
+                if flash.error
+                    div.alert.alert-danger.alert-dismissible.fade.show #{flash.error}
+                        a(class="close", href="#", data-dismiss="alert", aria-label="close") &times;
+
+                h3(class="pb-2") Neue Projektinformation
+                div(class="mx-4")
+                    h4(class="pb-1") Schritt 1: Setup
+                    p Bitte füllen Sie alle Felder aus
+                    form(method="POST", encType="multipart/form-data")
+                        div(class='form-group row')
+                            label(for="template", class="col-sm-2") Template
+                            div(class="col-sm-8")
+                                select#templateSelector(name="template", class="form-control")
+                                    option(value="generic") generic
+                                    option(value="simple_raw") simple_raw
+                                    option(value="simple_thesis") simple_thesis
+                                | <span id="templateExample" class="font-italic font-weight-light"><small>See the demo: <a href="https://transfer.hft-stuttgart.de/pages/athanasios.koukofikis/mygeneric/home/" target="_blank">generic</a>, <a href="https://transfer.hft-stuttgart.de/pages/athanasios.koukofikis/myraw/home/" target="_blank">simple_raw</a>, <a href="https://transfer.hft-stuttgart.de/pages/athanasios.koukofikis/mythesis/home/" target="_blank">simple_thesis</a></small></span>
+                        div(class='form-group row')
+                            label(for="name", class="col-sm-2") Name
+                            div(class="col-sm-8")
+                                input#name(name="name", type="text", class="form-control", placeholder="Name", maxlength="75" required)
+                                p(id="nameInfo" class="font-italic font-weight-light") <small>Ihre Webseite wird unter folgender URL veröffentlicht: <strong>https://transfer.hft-stuttgart.de/pages/#{gitlabUsername}/<span id="websiteName"></span></strong></small>
+                        div(class="form-group row")
+                            label(for="description", class="col-sm-2") Beschreibung
+                            div(class="col-sm-8")
+                                textarea#description(name="description", type="text", class="form-control", placeholder="Beschreibung", maxlength="500" required)
+                        div(class="form-group row")
+                            label(for="logo", class="col-sm-2") Projektlogo
+                            div(class="col-sm-8")
+                                div(class="form-group row px-4")
+                                    - let defaultLogo = "/img/footer/M4_LAB_LOGO_Graustufen.png"
+                                    img(src=defaultLogo, width="100" height="100")
+                                div(class="form-group row px-3")
+                                    input#logo(name="logo", class="form-control-file", type="file")
+                                p <small>(Max file size is 80 KB.)</small>
+                        input(type="submit", class="btn btn-primary", value="Senden")
+                hr
+                div(class="mx-4", style="color: gray;")
+                    h4(class="pb-1") Schritt 2: Dateneingabe
+                    p Bitte stellen Sie sicher in GitLab, dass sie Folgendes abgeschlossen haben, bevor Sie Ihre Webseite veröffentlichen:
+                    ol
+                        li Bearbeiten Sie ihre <i>index.html</i>
+                        li Anpassen der Einstellungen in <i>settings.js</i>
+
+    // 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")
+    // jquery-loading-overlay
+    script(src="https://cdn.jsdelivr.net/npm/gasparesganga-jquery-loading-overlay@2.1.7/dist/loadingoverlay.min.js")
+    // 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")
+    script(src="/js/mobile.js")
+    script.
+        // website URL
+        function showWebsiteURL() {
+            if ($("#name").val()) {
+                $("#nameInfo").show()
+                let webName = $("#name").val().toLowerCase().replace(/\s/g, '-')
+                document.getElementById("websiteName").innerText = webName+"/home/"
+            }
+            else {
+                $("#nameInfo").hide()
+            }
+        }
+        $('#name').on('input',function(e){
+            showWebsiteURL()
+        })
+        showWebsiteURL()
+
+        $("form").submit(function(){
+            $.LoadingOverlay("show")
+        }); 
\ No newline at end of file
diff --git a/built/views/DE/account/profile.pug b/built/views/DE/account/profile.pug
new file mode 100644
index 00000000..42ee4f9f
--- /dev/null
+++ b/built/views/DE/account/profile.pug
@@ -0,0 +1,112 @@
+doctype html
+html(lang="de")
+  head
+    title= "Benutzerprofil"
+    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="/css/bootstrap.min.css")
+    link(rel="stylesheet", type="text/css", href="/css/m4lab.css")
+    link(rel="stylesheet", type="text/css", href="/css/m4lab-mobile.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")
+        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="/account/")
+                                    span(class="font-weight-bold color_black") #{user.firstName} #{user.lastName}
+                            li(class="nav-item")
+                                a(class="nav-link pl-0" href="#")
+                                    i(class="fa fa-user fa-fw color_black")
+                                    span(class="d-none d-md-inline color_black") Benutzerprofil
+                            if user.is_m4lab_idp
+                                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 color_red" 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")
+                nav(aria-label="breadcrumb")
+                    ol(class="breadcrumb")
+                        li(class="breadcrumb-item")
+                            a(href="/account/") Konto
+                        li(class="breadcrumb-item active" aria-current="page") Benutzerprofil
+
+                if flash.success
+                    div.alert.alert-success.alert-dismissible #{flash.success}
+                        a(class="close", href="#", data-dismiss="alert", aria-label="close") &times;
+                if flash.error
+                    div.alert.alert-danger.alert-dismissible.fade.show #{flash.error}
+                        a(class="close", href="#", data-dismiss="alert", aria-label="close") &times;
+
+                h3(class="pb-2") Mein Profil
+                form#profileForm(method="POST", action="/account/updateProfile")
+                    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)
+                                option(value="") - Anrede -
+                                option(value="Herr") Herr
+                                option(value="Frau") Frau
+                                option(value="Divers") Divers
+                                script.
+                                    var salutationOptions = document.getElementById('inputSalutation').options;
+                                    for (i=0; i < salutationOptions.length; i++) {
+                                        if (salutationOptions[i].value == '#{user.salutation}')
+                                            salutationOptions[i].selected = true;
+                                    }
+                        div(class='form-group col-md-2')
+                            label(for="title") Titel
+                            select#inputTitle(name="inputTitle", class="form-control", value=user.title)
+                                option(value="") - Titel -
+                                option(value="Prof.") Prof.
+                                option(value="Dr.") Dr.
+                                option(value="Dipl.-Ing.") Dipl.-Ing.
+                                script.
+                                    var titleOptions = document.getElementById('inputTitle').options;
+                                    for (i=0; i < titleOptions.length; i++) {
+                                        if (titleOptions[i].value == '#{user.title}')
+                                            titleOptions[i].selected = true;
+                                    }
+                        div(class='form-group col-md-2')
+                            label(for="firstname") Vorname
+                            input#inputFirstname(name="inputFirstname", type="text", class="form-control", placeholder="Vorname", value=user.firstName, maxlength="45" required)
+                        div(class='form-group col-md-2')
+                            label(for="lastname") Nachname
+                            input#inputLastname(name="inputLastname", type="text", class="form-control", placeholder="Nachname", value=user.lastName, maxlength="45" required)
+                    div(class="form-row")
+                        div(class='form-group col-md-8')
+                            label(for="email") E-mail Adresse
+                            input#inputEmail(name="inputEmail", type="email", class="form-control", placeholder="Email", value=user.email, maxlength="45" required)
+                    div(class="form-row")
+                        div(class='form-group col-md-8')
+                            label(for="organisation") Unternehmen
+                            input#inputOrganisation(name="inputOrganisation", type="text", class="form-control", placeholder="Unternehmen", value=user.organisation, maxlength="45")
+                    div(class="form-row")
+                        div(class='form-group col-md-8')
+                            label(for="industry") Branche
+                            input#inputIndustry(name="inputIndustry", type="text", class="form-control", placeholder="Branche", value=user.industry, maxlength="45")
+                    div(class="form-row")
+                        div(class='form-group col-md-8')
+                            label(for="speciality") Fachgebiete
+                            input#inputSpeciality(name="inputSpeciality", type="text", class="form-control", placeholder="Fachgebiete", value=user.speciality, maxlength="100")                    
+                    input(type="submit", class="btn btn-primary", value="Speichern")
+
+    // 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")
+    // 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")
+    script(src="/js/mobile.js")
diff --git a/built/views/DE/account/registration.pug b/built/views/DE/account/registration.pug
new file mode 100644
index 00000000..df4a3905
--- /dev/null
+++ b/built/views/DE/account/registration.pug
@@ -0,0 +1,85 @@
+doctype html
+html(lang="de")
+  head
+    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="/css/bootstrap.min.css")
+    link(rel="stylesheet", type="text/css", href="/css/m4lab.css")
+    link(rel="stylesheet", type="text/css", href="/css/m4lab-mobile.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 {
+            color: red;
+            font-size: 11px;
+        }
+  body
+    div(class="container-fluid")
+        div(class="row")
+            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 flash.success
+                    div.alert.alert-success.alert-dismissible #{flash.success}
+                        a(class="close", href="#", data-dismiss="alert", aria-label="close") &times;
+                if flash.error
+                    div.alert.alert-danger.alert-dismissible.fade.show #{flash.error}
+                        a(class="close", href="#", data-dismiss="alert", aria-label="close") &times;
+                form(method="POST")
+                    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)
+                            span#emailWarning(class='warning')
+                        div(class="form-group col-md-6")
+                            input#inputPassword(name="inputPassword", type="password", class="form-control", data-toggle="password", placeholder="Passwort*", maxlength="45" required)
+                            span#passwordWarning(class='warning')
+                    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")
+                                option(value="") - Anrede -
+                                option(value="Herr") Herr
+                                option(value="Frau") Frau
+                                option(value="Divers") Divers
+                        div(class='form-group col-md-2')
+                            select#inputTitle(name="inputTitle", class="form-control")
+                                option(value="") - Titel -
+                                option(value="Prof.") Prof.
+                                option(value="Dr.") Dr.
+                                option(value="Dipl.-Ing.") Dipl.-Ing.
+                        div(class='form-group col-md-4')
+                            input#inputFirstname(name="inputFirstname", type="text", class="form-control", placeholder="Vorname*", maxlength="45" required)
+                        div(class='form-group col-md-4')
+                            input#inputLastname(name="inputLastname", type="text", class="form-control", placeholder="Nachname*", maxlength="45" required)
+                    div(class="form-group")
+                        input#inputOrganisation(name="inputOrganisation", type="text", class="form-control", placeholder="Unternehmen", maxlength="45")
+                    div(class="form-group")
+                        input#inputIndustry(name="inputIndustry", type="text", class="form-control", placeholder="Branche", maxlength="45")
+                    div(class="form-group")
+                        input#inputSpeciality(name="inputSpeciality", type="text", class="form-control", placeholder="Fachgebiete", maxlength="100")
+                    div(class="pt-2 mb-3 form-check")
+                        input(class="form-check-input" type="checkbox" id="privacyPolicy" name="privacyPolicy" required)
+                        label(class="form-check-label" for="privacyPolicy")
+                            | Ich akzeptiere die <a href="/datenschutz.html" target="_blank">Datenschutzerklärung</a>. *
+                    p <em><small>* Pflichtfeld</small></em>
+                    input#submitBtn(type="submit", class="btn btn-outline-dark btn-block", value="Senden" disabled)
+                br
+                p(class="text-center") Sie haben bereits ein Benutzerkonto? <a href="/account/">Melden Sie sich hier an</a>.
+                    
+
+    // 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")
+    // Bootstrap
+    script(src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous")
+    // toggle password
+    script(src='https://unpkg.com/bootstrap-show-password@1.2.1/dist/bootstrap-show-password.min.js')
+    // M4_LAB
+    script(src="/js/generalFunction.js")
+    script(src="/js/registration.js")
+    script(src="/js/headfoot.js")
+    script(src="/js/mobile.js")
diff --git a/built/views/DE/account/reset.pug b/built/views/DE/account/reset.pug
new file mode 100644
index 00000000..e81e1166
--- /dev/null
+++ b/built/views/DE/account/reset.pug
@@ -0,0 +1,42 @@
+doctype html
+html(lang="de")
+  head
+    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="/css/bootstrap.min.css")
+    link(rel="stylesheet", type="text/css", href="/css/m4lab.css")
+    link(rel="stylesheet", type="text/css", href="/css/m4lab-mobile.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")
+  body
+    div(class="container-fluid")
+        div(class="row")
+            div(class="col-md-6 offset-md-3")
+                if successes
+                    for success in successes
+                        div.alert.alert-success.alert-dismissible #{ success }
+                            a(class="close", href="#", data-dismiss="alert", aria-label="close") &times;
+                if errors
+                    for error, i in errors
+                        div.alert.alert-danger.alert-dismissible.fade.show #{ error }
+                            a(class="close", href="#", data-dismiss="alert", aria-label="close") &times;
+                form#forgotForm(method="POST", class="form-signin")
+                    img(src="https://transfer.hft-stuttgart.de/img/M4_LAB_LOGO.png", class="img-responsive center-block", width="185", height="192")
+                    div(class="form-row")
+                        input#inputNewPwd(name="inputNewPwd", type="password", class="form-control", placeholder="Neues Passwort" required)
+                        span#recommendation(class='warning')
+                        input#inputConfirm(name="inputConfirm", type="password", class="form-control", placeholder="Passwort bestätigen" required)
+                        span#message(class='warning')
+                    input#updateBtn(type="submit", class="btn btn-outline-dark btn-block", 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")
+    // 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/security.js")
+    script(src="/js/generalFunction.js")
+    script(src="/js/headfoot.js")
+    script(src="/js/mobile.js")
\ No newline at end of file
diff --git a/built/views/DE/account/security.pug b/built/views/DE/account/security.pug
new file mode 100644
index 00000000..0ebfc3b2
--- /dev/null
+++ b/built/views/DE/account/security.pug
@@ -0,0 +1,94 @@
+doctype html
+html(lang="de")
+  head
+    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="/css/bootstrap.min.css")
+    link(rel="stylesheet", type="text/css", href="/css/m4lab.css")
+    link(rel="stylesheet", type="text/css", href="/css/m4lab-mobile.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 {
+            font-size: 11px;
+        }
+  body
+    div(class="container")
+        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="/account/")
+                                    span(class="font-weight-bold 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="#")
+                                    i(class="fa fa-lock fa-fw color_black")
+                                    span(class="d-none d-md-inline color_black") 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 color_red" 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")
+                if flash.success
+                    div.alert.alert-success.alert-dismissible #{flash.success}
+                        a(class="close", href="#", data-dismiss="alert", aria-label="close") &times;
+                if flash.error
+                    div.alert.alert-danger.alert-dismissible.fade.show #{flash.error}
+                        a(class="close", href="#", data-dismiss="alert", aria-label="close") &times;
+                form(class="needs-validation", method="post", action="/account/changePwd" novalidate)
+                    div(class="form-row")
+                        div(class='form-group col-md-8')
+                            label(for="currPwd") Aktuelles Passwort
+                            input(id="inputCurrPwd", name="inputCurrPwd", type="password", class="form-control" required)
+                            div(class="invalid-feedback") Bitte füllen Sie dieses Feld aus.
+                    div(class="form-row")
+                        div(class='form-group col-md-8')
+                            label(for="newPwd") Neues Passwort
+                            input#inputNewPwd(name="inputNewPwd", type="password", class="form-control" required)
+                            span#recommendation
+                            div(class="invalid-feedback") Bitte füllen Sie dieses Feld aus.
+                    div(class="form-row")
+                        div(class='form-group col-md-8')
+                            label(for="confirm") Bestätigen Sie das neue Passwort
+                            input#inputConfirm(name="inputConfirm", type="password", class="form-control" required)
+                            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")
+    // 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/security.js")
+    script(src="/js/generalFunction.js")
+    script(src="/js/headfoot.js")
+    script(src="/js/mobile.js")
+    script.
+        // check input fields
+        'use strict';
+        window.addEventListener('load', function() {
+            // Fetch all the forms we want to apply custom Bootstrap validation styles to
+            var forms = document.getElementsByClassName('needs-validation');
+            // Loop over them and prevent submission
+            var validation = Array.prototype.filter.call(forms, function(form) {
+                form.addEventListener('submit', function(event) {
+                    if (form.checkValidity() === false) {
+                        event.preventDefault();
+                        event.stopPropagation();
+                    }
+                    form.classList.add('was-validated');
+                }, false);
+            });
+        }, false);
diff --git a/built/views/DE/account/services.pug b/built/views/DE/account/services.pug
new file mode 100644
index 00000000..5d0df5d8
--- /dev/null
+++ b/built/views/DE/account/services.pug
@@ -0,0 +1,101 @@
+doctype html
+html(lang="de")
+  head
+    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="/css/bootstrap.min.css")
+    link(rel="stylesheet", type="text/css", href="/css/m4lab.css")
+    link(rel="stylesheet", type="text/css", href="/css/m4lab-mobile.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")
+        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 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
+                            if user.is_m4lab_idp
+                                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="#")
+                                    i(class="fa fa-tasks fa-fw color_black")
+                                    span(class="d-none d-md-inline color_black") Projekte und Dienste
+                            li(class="nav-item")
+                                a(class="nav-link pl-0 color_red" 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")
+                nav(aria-label="breadcrumb")
+                    ol(class="breadcrumb")
+                        li(class="breadcrumb-item")
+                            a(href="/account/") Konto
+                        li(class="breadcrumb-item active" aria-current="page") Projekte und Dienste
+
+                div(class="container")
+                    h3(class="pb-2") Dienste
+                    div(class="col-sm-12")
+                        //p Auf dieser Seite werden in Zukunft Funktionen bereitgestellt, um Ihre Beteiligung an Projekten und Aktivierung von Diensten zu organisieren. Diese Funktionen stehen zurzeit aber noch nicht zur Verfügung.
+                        p Auf dieser Seite werden in Zukunft Funktionen bereitgestellt, um Ihre Aktivierung von Diensten zu organisieren. Diese Funktionen stehen zurzeit aber noch nicht zur Verfügung.
+                hr
+                div(class="container")
+                    h3(class="pb-2") Projekte
+                    div(class="col-sm-12")
+                        if user.gitlabUserId
+                            div(class="container")
+                                div(class="row py-2 bg-light")
+                                    div(class="col font-weight-bold") Projektinformationen
+                                    div(class="col text-right")
+                                        a(href="/account/newInformation" class="btn btn-sm btn-success" role="button") Neue Projektinformation
+                            table(class="table")
+                                if gitlabPages.length == 0
+                                    tr
+                                        td Currently you have no project information
+                                else
+                                    for item in gitlabPages
+                                        - let editNewPageLink = "/account/updateInformation?id="+item.projectInformation.id
+                                        - let websiteURL = "https://transfer.hft-stuttgart.de/pages/"+item.projectInformation.path+"/home/"
+                                        tr
+                                            td
+                                                img(src=item.projectInformation.logo, width="45", height="45")
+                                            td 
+                                                a(href=editNewPageLink class="link-dark") #{item.projectInformation.name}
+                                            td
+                                                a(href=websiteURL class="link-dark" target="_blank") visit website
+                            div(class="container")
+                                div(class="row py-2 bg-light")
+                                    div(class="col font-weight-bold") Projektcode und -daten
+                                    div(class="col text-right")
+                                        button(type="button", class="btn btn-sm btn-success" disabled) Neuer Projektdatensatz
+                            table(class="table")
+                                if gitlabRepos.length == 0
+                                    tr
+                                        td Currently you have no project codes/data
+                                for item in gitlabRepos
+                                    - let img = item.logo
+                                    tr
+                                        td
+                                            img(src=img, width="45", height="45")
+                                        td #{item.name}
+                        else
+                            p 
+                                | Bitte <a href="https://transfer.hft-stuttgart.de/gitlab" target="_blank">melden Sie sich an der Gitlab-Instanz an</a>, um Ihren Zugang zu aktivieren, und aktualisieren Sie diese Seite.
+
+    // 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")
+    // 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")
+    script(src="/js/mobile.js")
diff --git a/built/views/DE/account/updateInformation.pug b/built/views/DE/account/updateInformation.pug
new file mode 100644
index 00000000..130dd95e
--- /dev/null
+++ b/built/views/DE/account/updateInformation.pug
@@ -0,0 +1,156 @@
+doctype html
+html(lang="de")
+  head
+    title= "Update a website"
+    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="/css/bootstrap.min.css")
+    link(rel="stylesheet", type="text/css", href="/css/m4lab.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")
+        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="/account/")
+                                    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
+                            if user.is_m4lab_idp
+                                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;")
+                                    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" 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")
+                nav(aria-label="breadcrumb")
+                    ol(class="breadcrumb")
+                        li(class="breadcrumb-item")
+                            a(href="/account/") Konto
+                        li(class="breadcrumb-item")
+                            a(href="/account/services") Projekte und Dienste
+                        li(class="breadcrumb-item active" aria-current="page") Information aktualisieren
+
+                if flash.success
+                    div.alert.alert-success.alert-dismissible #{flash.success}
+                        a(class="close", href="#", data-dismiss="alert", aria-label="close") &times;
+                if flash.error
+                    div.alert.alert-danger.alert-dismissible.fade.show #{flash.error}
+                        a(class="close", href="#", data-dismiss="alert", aria-label="close") &times;
+                h3(class="pb-2") Information aktualisieren
+                div(class="mx-4")
+                    form(method="POST", encType="multipart/form-data")
+                        div(class='form-group row')
+                            label(for="name", class="col-sm-2") Name
+                            div(class="col-sm-8")
+                                input#name(name="name", type="text", class="form-control", value=information.name, placeholder="Name", maxlength="75" required)
+                        div(class="form-group row")
+                            label(for="description", class="col-sm-2") Beschreibung
+                            div(class="col-sm-8")
+                                textarea#description(name="description", type="text", class="form-control", placeholder="Beschreibung", maxlength="500" required) #{information.desc}
+                        div(class="form-group row")    
+                            label(for="logo", class="col-sm-2") Projektlogo
+                            div(class="col-sm-8")
+                                div(class="form-group row")
+                                    img(src=information.logo, width="100" height="100")
+                                div(class="form-group row")
+                                    input#logo(name="logo", class="form-control-file", type="file")
+                                p <small>(Max file size is 80 KB.)</small>
+                        input(type="submit", class="btn btn-primary", value="Speichern")
+                hr
+                div(class="mx-4") 
+                    p <b><i>[ANMERKUNG]</b></i> Bitte stellen Sie sicher in GitLab, dass sie Folgendes abgeschlossen haben, bevor Sie Ihre Webseite veröffentlichen:
+                    div(class="help")
+                        div(class="card")
+                            - let indexLink = "https://transfer.hft-stuttgart.de/gitlab/"+information.path+"/-/edit/master/public/home/index.html"
+                            - let settingLink = "https://transfer.hft-stuttgart.de/gitlab/"+information.path+"/-/edit/master/public/settings.js"
+                            div(class="card-header")
+                                div(class="card-title")
+                                    | <a class="collapsed" data-toggle="collapse" href="#collapse-index" aria-expanded="false" aria-controls="collapse-index">
+                                    | 1. Bearbeiten Sie ihre <i>index.html</i></a>
+                            div(id="collapse-index" class="card-body collapse")
+                                ol
+                                    li Klicken Sie <a href=#{indexLink} target="_blank"><i>hier</i></a>, um Ihre <i>index.html</i> in GitLab zu öffnen.
+                                    li Bearbeiten Sie ihre Datei.
+                                    li Um die Änderungen zu speichern und auf ihrer Seite sofort zu übernehmen, klicken Sie auf <i>Commit changes</i>
+                                        img(src="/img/help/save_file.png", class="img-fluid", style="border: 1px solid gray;", alt="index.html")
+                                    li Sobald Sie Änderungen an Ihrer <i>index.html</i> vornehmen, wird Ihre Website veröffentlicht.
+                            div(class="card-header")
+                                div(class="card-title")
+                                    | <a class="collapsed" data-toggle="collapse" href="#collapse-setting" aria-expanded="false" aria-controls="collapse-setting">2. Anpassen der Einstellungen in <i>settings.js</i></a>
+                            div(id="collapse-setting" class="card-body collapse")
+                                ol
+                                    li Klicken Sie <a href=#{settingLink} target="_blank"><i>settings.js</i></a>, um Ihre <i>settings.js</i> in GitLab zu öffnen.
+                                    li Bearbeiten Sie ihre Datei.
+                                    li Hier sehen Sie die Standardwerde für Soziale Netzwerke und persönliche Webseiten eines Teilnehmers sowie den Standardavatar. Es wird empfohlen, diese Werte nicht zu ändern, aber Sie können weitere Soziale Netzwerke hinzufügen.
+                                    img(src="/img/help/default_settings.png", class="img-fluid", style="border: 1px solid gray;")
+                                    li Diese Schalter kontrollieren, welche Teile der gitlab-Seite angezeigt werden sollen. Wenn Sie also beispielsweise nur eine einzige Seite haben, benötigen Sie kein Menü und können den Wert für 'menu' auf OFF stellen.
+                                    img(src="/img/help/switches.png", class="img-fluid", style="border: 1px solid gray;")
+                                    li Hier ändern Sie das Projektlogo. Das Logo wird am oberen Rand der Seite mittig angezeigt. Wenn der Schalter für 'project logo' auf OFF steht, wird es nicht angezeigt.
+                                    img(src="/img/help/pr_logo.png", class="img-fluid", style="border: 1px solid gray;")
+                                    li Hier ändern Sie das Menü Ihrer gitlab-Seite. Ein Menü kann entweder auf einen Unterordner/ template verweisen oder aber auf einen externen Link, z.B. eine Demo. Sie können Menüeinträge hinzufügen oder entfernen. Das Menü wird mit dem Schalter 'OFF' verborgen. Vergessen Sie nicht den Schrägstrich am Ende eines Menülinks, wenn dieser auf einen Ordner zeigt.
+                                    img(src="/img/help/menu.png", class="img-fluid", style="border: 1px solid gray;")
+                                    li Hier ändern Sie die Teilnehmenden. Sie können die Standardwerte für Soziale Netzwerke (diese beinhalten die HFT-Kanäle) oder Ihr eigenen Profile verwenden. Sie können auf Ihre persönliche Webseite verlinken. Sie können soziale Netzwerke hinzufügen oder entfernen. Sie können auch einen persönlichen Avatar oder den Standard-Avatar (DEFAULT.avatar) verwenden.
+                                    img(src="/img/help/partic.png", class="img-fluid", style="border: 1px solid gray;")
+                                    li Hier ist ein Beispiel mit zwei Teilnehmenden:
+                                    img(src="/img/help/partic2.png", class="img-fluid", style="border: 1px solid gray;")
+                                    li Hier ändern Sie die Fußzeilenlogos z.B. zu denen von Projektpartnern. Wenn Sie das Logo nicht mit einer externen Webseite verlinken wollen, verwenden Sie EMPTY_LINK als Wert für href. Der Titel title wird bei Mouse-Hover über dem Logo erscheinen.
+                                    img(src="/img/help/f_logos.png", class="img-fluid", style="border: 1px solid gray;")
+                                    li Klicken Sie anschließend auf <i>Commit changes</i>, um die Änderungen zu speichern.
+                                    img(src="/img/help/edit_settings_generic.png", class="img-fluid", style="border: 1px solid gray;")
+
+                hr
+                div(class="mx-4")
+                    div(class="alert alert-danger" role="alert") <h5><strong>Webseite löschen</strong></h5>
+                        p Dies wird <strong><em>#{information.name}</em></strong> sofort endgültig löschen, inklusive ihrer Repositorien und aller zugehöriger Ressourcen.
+                        p Sind Sie WIRKLICH SICHER, dass Sie diese Webseite löschen wollen? 
+                        button(type="button" class="btn btn-danger" data-toggle="modal" data-target="#deleteWebsiteConfirmation") Löschen
+
+    // Modal
+    div(class="modal" id="deleteWebsiteConfirmation" tabindex="-1" role="dialog" aria-labelledby="modalLabel" aria-hidden="true")
+        div(class="modal-dialog" role="document")
+            div(class="modal-content")
+                div(class="modal-header")
+                    h5(class="modal-title" id="modalLabel") Sind Sie WIRKLICH SICHER?
+                    button(type="button" class="close" data-dismiss="modal" aria-label="Close")
+                        span(aria-hidden="true") &times;
+                div(class="modal-body")
+                    | <p>Sie sind dabei, diese Webseite, ihr Repositorium und alle zugehörigen Ressourcen, inklusive aller Inhalte, Bilder etc. endgültig zu löschen.</p>
+                    | <p>Sobald eine Webseite endgültig gelöscht ist, kann sie nicht wiederhergestellt werden. <strong>Diese Aktion kann nicht rückgängig gemacht werden.</strong></p>
+                div(class="modal-footer")
+                    form(method="POST", action="/account/deleteProject?_method=DELETE", encType="multipart/form-data")
+                        input(name="id", value=information.id, type="hidden")
+                        button(type="button" class="btn btn-primary mx-2" data-dismiss="modal") Abbrechen, Webseite behalten
+                        button(type="submit" class="btn btn-danger") Ja, Webseite löschen
+
+    // 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")
+    // jquery-loading-overlay
+    script(src="https://cdn.jsdelivr.net/npm/gasparesganga-jquery-loading-overlay@2.1.7/dist/loadingoverlay.min.js")
+    // 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")
+    script.
+        function sendPublishRequest() {
+            $.post("/sendPublishRequest", {projectName: $("#name").val()}, function(resp){
+                alert(resp)
+            })
+        }
+
+         $("form").submit(function(){
+            $.LoadingOverlay("show")
+        }); 
\ No newline at end of file
diff --git a/built/views/DE/account/verification.pug b/built/views/DE/account/verification.pug
new file mode 100644
index 00000000..805cceb5
--- /dev/null
+++ b/built/views/DE/account/verification.pug
@@ -0,0 +1,36 @@
+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="/css/bootstrap.min.css")
+    link(rel="stylesheet", type="text/css", href="/css/m4lab.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://transfer.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://transfer.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 wurde 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
diff --git a/built/views/DE/project/updateProjectOverview.pug b/built/views/DE/project/updateProjectOverview.pug
new file mode 100644
index 00000000..e69de29b
diff --git a/built/views/EN/404.pug b/built/views/EN/404.pug
new file mode 100644
index 00000000..dc9e0a8c
--- /dev/null
+++ b/built/views/EN/404.pug
@@ -0,0 +1,4 @@
+extends error
+
+block content
+  h2 Cannot find #{url}
\ No newline at end of file
diff --git a/built/views/EN/500.pug b/built/views/EN/500.pug
new file mode 100644
index 00000000..cbc47e79
--- /dev/null
+++ b/built/views/EN/500.pug
@@ -0,0 +1,8 @@
+extends error
+
+block content
+  h1 Error: #{error.message}
+  if settings['verbose errors']
+    pre= error.stack
+  else
+    p An error ocurred!
\ No newline at end of file
diff --git a/built/views/EN/account/forgotPwd.pug b/built/views/EN/account/forgotPwd.pug
new file mode 100644
index 00000000..7688a512
--- /dev/null
+++ b/built/views/EN/account/forgotPwd.pug
@@ -0,0 +1,56 @@
+doctype html
+html(lang="en")
+  head
+    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="/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 {
+            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;
+        }
+  body
+    div(class="container-fluid")
+        div(class="row")
+            div(class="col-md-6 offset-md-3")
+                if successes
+                    for success in successes
+                        div.alert.alert-success.alert-dismissible #{ success }
+                            a(class="close", href="#", data-dismiss="alert", aria-label="close") &times;
+                if errors
+                    for error, i in errors
+                        div.alert.alert-danger.alert-dismissible.fade.show #{ error }
+                            a(class="close", href="#", data-dismiss="alert", aria-label="close") &times;
+                form#forgotForm(class="form-signin", method="POST")
+                    img(src="https://transfer.hft-stuttgart.de/images/demo/m4lab_logo.jpg", class="img-responsive center-block", width="185", height="192")
+                    div(class="form-row")
+                        input#inputEmail(name="inputEmail", type="email", class="form-control", placeholder="Email" required)                  
+                    br
+                    input(type="submit", class="btn btn-outline-dark btn-block", value="Reset Password")
+
+    // 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")
+    // 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")
diff --git a/built/views/EN/account/home.pug b/built/views/EN/account/home.pug
new file mode 100644
index 00000000..df71fe18
--- /dev/null
+++ b/built/views/EN/account/home.pug
@@ -0,0 +1,49 @@
+doctype html
+html(lang="en")
+  head
+    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="/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 {
+            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;
+        }
+  body
+    div(class="container-fluid")
+        div(class="row")
+            div(class="col-3")
+                h5
+                    span #{user.firstname} #{user.lastname}
+                div(class="nav flex-column nav-pills", id="v-pills-tab", role="tablist", aria-orientation="vertical")
+                    a(class="nav-link" href="/profile" aria-selected="true") Profile
+                    a(class="nav-link" href="/security" aria-selected="false") Security
+                    a(class="nav-link" href="/services" aria-selected="false") Services
+            div(class="col-sm-9")
+                p content goes here
+                
+    // 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")
+    // 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/headfootLogout.js")
\ No newline at end of file
diff --git a/built/views/EN/account/profile.pug b/built/views/EN/account/profile.pug
new file mode 100644
index 00000000..60788795
--- /dev/null
+++ b/built/views/EN/account/profile.pug
@@ -0,0 +1,95 @@
+doctype html
+html(lang="en")
+  head
+    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="/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 {
+            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;
+        }
+  body
+    div(class="container-fluid")
+        div(class="row")
+            div(class="col-3")
+                h5
+                    span #{user.firstname} #{user.lastname}
+                div(class="nav flex-column nav-pills", id="v-pills-tab", role="tablist", aria-orientation="vertical")
+                    a(class="nav-link" href="#" aria-selected="true") Profile
+                    a(class="nav-link" href="/security" aria-selected="false") Security
+                    a(class="nav-link" href="/services" aria-selected="false") Services
+            div(class="col-sm-9")
+                if successes
+                    for success in successes
+                        div.alert.alert-success.alert-dismissible #{ success }
+                            a(class="close", href="#", data-dismiss="alert", aria-label="close") &times;
+                if errors
+                    for error, i in errors
+                        div.alert.alert-danger.alert-dismissible.fade.show #{ error }
+                            a(class="close", href="#", data-dismiss="alert", aria-label="close") &times;
+                form#profileForm(method="POST", action="/updateProfile")
+                    div(class="form-row")
+                        div(class='form-group col-md-2')
+                            label(for="title") Title
+                            select#inputTitle(name="inputTitle", class="form-control", value=user.title)
+                                option(value="Frau/Herr") Frau/Herr
+                                option(value="Frau") Frau
+                                option(value="Herr") Herr
+                                option(value="Dr.") Dr.
+                                option(value="Prof. Dr.") Prof. Dr.
+                                script.
+                                    var titleOptions = document.getElementById('inputTitle').options;
+                                    for (i=0; i < titleOptions.length; i++) {
+                                        if (titleOptions[i].value == '#{user.title}')
+                                            titleOptions[i].selected = true;
+                                    }
+                        div(class='form-group col-md-3')
+                            label(for="firstname") Vorname
+                            input#inputFirstname(name="inputFirstname", type="text", class="form-control", placeholder="Vorname", value=user.firstname required)
+                        div(class='form-group col-md-3')
+                            label(for="lastname") Nachname
+                            input#inputLastname(name="inputLastname", type="text", class="form-control", placeholder="Nachname", value=user.lastname required)
+                    div(class="form-row")
+                        div(class='form-group col-md-8')
+                            label(for="email") Email
+                            input#inputEmail(name="inputEmail", type="email", class="form-control", placeholder="Email", value=email required)
+                    div(class="form-row")
+                        div(class='form-group col-md-8')
+                            label(for="organisation") Unternehmen
+                            input#inputOrganisation(name="inputOrganisation", type="text", class="form-control", placeholder="Unternehmen", value=user.organisation)
+                    div(class="form-row")
+                        div(class='form-group col-md-8')
+                            label(for="industry") Branche
+                            input#inputIndustry(name="inputIndustry", type="text", class="form-control", placeholder="Branche", value=user.industry)
+                    div(class="form-row")
+                        div(class='form-group col-md-8')
+                            label(for="speciality") Fachgebiete
+                            input#inputSpeciality(name="inputSpeciality", type="text", class="form-control", placeholder="Fachgebiete", value=user.speciality)                    
+                    input(type="submit", class="btn btn-primary", value="Update")
+
+    // 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")
+    // 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/headfootLogout.js")
\ No newline at end of file
diff --git a/built/views/EN/account/registration.pug b/built/views/EN/account/registration.pug
new file mode 100644
index 00000000..25096b15
--- /dev/null
+++ b/built/views/EN/account/registration.pug
@@ -0,0 +1,92 @@
+doctype html
+html(lang="en")
+  head
+    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="/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 {
+            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;
+        }
+  body
+    div(class="container-fluid")
+        div(class="row")
+            div(class="col-md-6 offset-md-2")
+                h3(class="mb-3 font-weight-bold") Create New Account
+            div(class="col-md-6 offset-md-3")
+                if successes
+                    for success in successes
+                        div.alert.alert-success.alert-dismissible #{ success }
+                            a(class="close", href="#", data-dismiss="alert", aria-label="close") &times;
+                if errors
+                    for error, i in errors
+                        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") Login Data
+                    div(class='form-row')
+                        div(class='form-group col-md-6')
+                            input#inputEmail(name="inputEmail", type="email", class="form-control", placeholder="Email*" required)
+                            span#emailWarning(class='warning')
+                        div(class="form-group col-md-6")
+                            input#inputPassword(name="inputPassword", type="password", class="form-control", data-toggle="password", placeholder="Password*" required)
+                            span#passwordWarning(class='warning')
+                    h5(class="mb-3 font-weight-bold") Profile Data
+                    div(class="form-row")
+                        div(class='form-group col-md-4')
+                            select#inputTitle(name="inputTitle", class="form-control")
+                                option(value="Frau/Herr") Frau/Herr
+                                option(value="Frau") Frau
+                                option(value="Herr") Herr
+                                option(value="Dr.") Dr.
+                                option(value="Prof. Dr.") Prof. Dr.
+                        div(class='form-group col-md-4')
+                            input#inputFirstname(name="inputFirstname", type="text", class="form-control", placeholder="Vorname*" required)
+                        div(class='form-group col-md-4')
+                            input#inputLastname(name="inputLastname", type="text", class="form-control", placeholder="Nachname*" required)
+                    div(class="form-group")
+                        input#inputOrganisation(name="inputOrganisation", type="text", class="form-control", placeholder="Unternehmen")
+                    div(class="form-group")
+                        input#inputIndustry(name="inputIndustry", type="text", class="form-control", placeholder="Branche")
+                    div(class="form-group")
+                        input#inputSpeciality(name="inputSpeciality", type="text", class="form-control", placeholder="Fachgebiete")
+                    p <em><small>* Mandatory</small></em>
+                    input#submitBtn(type="submit", class="btn btn-outline-dark btn-block", value="Submit" disabled)
+                br
+                p(class="text-center") Already have an account? <a href="/">Login</a>.
+                    
+
+    // 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")
+    // Bootstrap
+    script(src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous")
+    // toggle password
+    script(src='https://unpkg.com/bootstrap-show-password@1.2.1/dist/bootstrap-show-password.min.js')
+    // M4_LAB
+    script(src="/js/generalFunction.js")
+    script(src="/js/registration.js")
+    script(src="/js/headfoot.js")
\ No newline at end of file
diff --git a/built/views/EN/account/reset.pug b/built/views/EN/account/reset.pug
new file mode 100644
index 00000000..610a914e
--- /dev/null
+++ b/built/views/EN/account/reset.pug
@@ -0,0 +1,60 @@
+doctype html
+html(lang="en")
+  head
+    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="/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 {
+            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;
+        }
+  body
+    div(class="container-fluid")
+        div(class="row")
+            div(class="col-md-6 offset-md-3")
+                if successes
+                    for success in successes
+                        div.alert.alert-success.alert-dismissible #{ success }
+                            a(class="close", href="#", data-dismiss="alert", aria-label="close") &times;
+                if errors
+                    for error, i in errors
+                        div.alert.alert-danger.alert-dismissible.fade.show #{ error }
+                            a(class="close", href="#", data-dismiss="alert", aria-label="close") &times;
+                form#forgotForm(method="POST", class="form-signin")
+                    img(src="https://transfer.hft-stuttgart.de/images/demo/m4lab_logo.jpg", class="img-responsive center-block", width="185", height="192")
+                    div(class="form-row")
+                        input#inputNewPwd(name="inputNewPwd", type="password", class="form-control", placeholder="New Password" required)
+                        span#recommendation(class='warning')
+                        input#inputConfirm(name="inputConfirm", type="password", class="form-control", placeholder="Confirm Password" required)
+                        span#message(class='warning')
+                    input#updateBtn(type="submit", class="btn btn-outline-dark btn-block", value="Update Password" 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")
+    // 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/security.js")
+    script(src="/js/generalFunction.js")
+    script(src="/js/headfoot.js")
diff --git a/built/views/EN/account/security.pug b/built/views/EN/account/security.pug
new file mode 100644
index 00000000..c2c997b0
--- /dev/null
+++ b/built/views/EN/account/security.pug
@@ -0,0 +1,94 @@
+doctype html
+html(lang="en")
+  head
+    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="/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 {
+            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 {
+            font-size: 11px;
+        }
+  body
+    div(class="container-fluid")
+        div(class="row")
+            div(class="col-3")
+                h5
+                    span #{user.firstName} #{user.lastName}
+                div(class="nav flex-column nav-pills", id="v-pills-tab", role="tablist", aria-orientation="vertical")
+                    a(class="nav-link" href="/profile" aria-selected="true") Profile
+                    a(class="nav-link" href="#" aria-selected="false") Security
+                    a(class="nav-link" href="/services" aria-selected="false") Services
+            div(class="col-sm-9")
+                if successes
+                    for success in successes
+                        div.alert.alert-success.alert-dismissible #{ success }
+                            a(class="close", href="#", data-dismiss="alert", aria-label="close") &times;
+                if errors
+                    for error, i in errors
+                        div.alert.alert-danger.alert-dismissible.fade.show #{ error }
+                            a(class="close", href="#", data-dismiss="alert", aria-label="close") &times;
+                form(class="needs-validation", method="post", action="/account/changePwd" novalidate)
+                    div(class="form-group row")
+                        label(for="currPwd") Current Password
+                        input(id="inputCurrPwd", name="inputCurrPwd", type="password", class="form-control" required)
+                        div(class="invalid-feedback") Please fill in this field.
+                    div(class="form-group row")
+                        label(for="newPwd") New Password
+                        input#inputNewPwd(name="inputNewPwd", type="password", class="form-control" required)
+                        span#recommendation
+                        div(class="invalid-feedback") Please fill in this field.
+                    div(class="form-group row")
+                        label(for="confirm") Confirm New Password
+                        input#inputConfirm(name="inputConfirm", type="password", class="form-control" required)
+                        span#message
+                        div(class="invalid-feedback") Please fill in this field.
+                    input#updateBtn(type="submit", class="btn btn-primary", value="Update Password" 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")
+    // 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/security.js")
+    script(src="/js/generalFunction.js")
+    script(src="/js/headfootLogout.js")
+    script.
+        // check input fields
+        'use strict';
+        window.addEventListener('load', function() {
+            // Fetch all the forms we want to apply custom Bootstrap validation styles to
+            var forms = document.getElementsByClassName('needs-validation');
+            // Loop over them and prevent submission
+            var validation = Array.prototype.filter.call(forms, function(form) {
+                form.addEventListener('submit', function(event) {
+                    if (form.checkValidity() === false) {
+                        event.preventDefault();
+                        event.stopPropagation();
+                    }
+                    form.classList.add('was-validated');
+                }, false);
+            });
+        }, false);
diff --git a/built/views/EN/account/services.pug b/built/views/EN/account/services.pug
new file mode 100644
index 00000000..c70d729f
--- /dev/null
+++ b/built/views/EN/account/services.pug
@@ -0,0 +1,77 @@
+doctype html
+html(lang="en")
+  head
+    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="/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 {
+            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;
+        }
+  body
+    div(class="container-fluid")
+        div(class="row")
+            div(class="col-3")
+                h5
+                    span #{user.firstName} #{user.lastName}
+                div(class="nav flex-column nav-pills", id="v-pills-tab", role="tablist", aria-orientation="vertical")
+                    a(class="nav-link" href="/profile" aria-selected="true") Profile
+                    a(class="nav-link" href="/security" aria-selected="false") Security
+                    a(class="nav-link" href="#" aria-selected="false") Services
+            div(class="col-sm-9")
+                if successes
+                    for success in successes
+                        div.alert.alert-success.alert-dismissible #{ success }
+                            a(class="close", href="#", data-dismiss="alert", aria-label="close") &times;
+                if errors
+                    for error, i in errors
+                        div.alert.alert-danger.alert-dismissible.fade.show #{ error }
+                            a(class="close", href="#", data-dismiss="alert", aria-label="close") &times;
+                table
+                    for item in project
+                        tr
+                            td <strong>#{item.title}</strong>
+                            if item.userStatus
+                                td
+                                    button(type="button", class="btn btn-secondary", onclick="unsubscribe()") Unsubscribe
+                            else
+                                td
+                                    button(type="button", class="btn btn-success", onclick="subscribe()") Subscribe
+                        tr
+                            td(colspan="2") #{item.summary}
+                        tr
+                            td(colspan="2") <i>Contact Person: #{item.cp}</i>
+                    
+    // 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")
+    // 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/headfootLogout.js")
+    script.
+        function subscribe() {
+            alert("To be implemented: Send a request to join/participate/have access to the page of the requested service")
+        }
+        function unsubscribe() {
+            alert("To be implemented: Send a request to withdraw access")
+        }
\ No newline at end of file
-- 
GitLab