Commit 6fd3edac authored by Wolfgang Knopki's avatar Wolfgang Knopki
Browse files

Merge branch 'prepare_prod' into 'master'

Prepare prod

See merge request !107
parents c6e26739 0caa343c
Pipeline #4793 failed with stage
in 1 second
Showing with 1415 additions and 829 deletions
+1415 -829
...@@ -17,15 +17,23 @@ deploy-testing: ...@@ -17,15 +17,23 @@ deploy-testing:
deploy-master: deploy-master:
stage: deploy stage: deploy
script: script:
- cat $configfileprod > ./config/config.js - npm run clean
- cat $cert > ./routes/cert/cert.pem - npm run build
- cat $certidp > ./routes/cert/cert_idp.pem - rm -rf ./built/public/default
- cat $key > ./routes/cert/key.pem - rm -rf ./built/routes/cert
- npm install - rm -rf ./built/views
- cp -R ./public/default ./built/public
- cp -R ./routes/cert ./built/routes
- cp -R ./views ./built
- cat $configfileprod > ./built/config/config.js
- cat $cert > ./built/routes/cert/cert.pem
- cat $certidp > ./built/routes/cert/cert_idp.pem
- cat $key > ./built/routes/cert/key.pem
- "pm2 delete --silent account || :" - "pm2 delete --silent account || :"
- pm2 start ./app.js --name=account - pm2 start ./built/app.js --name=account
- pm2 save - pm2 save
tags: tags:
- production - production
only: only:
- master - master
\ No newline at end of file
const mysql = require('mysql') import mysql from 'mysql2'
var env = process.env.NODE_ENV || 'testing'; var env = process.env.NODE_ENV || 'testing'
const config = require('./config')[env] const config = require('./config')[env]
// ==== USER ACOOUNT DB CONNECTION ==== // ==== USER ACOOUNT DB CONNECTION ====
...@@ -14,7 +14,7 @@ var userConnection = mysql.createConnection({ ...@@ -14,7 +14,7 @@ var userConnection = mysql.createConnection({
}) })
userConnection.connect(function(err) { userConnection.connect(function(err) {
if (err) throw err; if (err) throw err
}) })
userConnection.query('USE '+config.database.dbUser) userConnection.query('USE '+config.database.dbUser)
...@@ -52,7 +52,7 @@ var projectConnection = mysql.createConnection({ ...@@ -52,7 +52,7 @@ var projectConnection = mysql.createConnection({
}) })
projectConnection.connect(function(err) { projectConnection.connect(function(err) {
if (err) throw err; if (err) throw err
}) })
projectConnection.query('USE '+config.database.dbProject) projectConnection.query('USE '+config.database.dbProject)
...@@ -61,4 +61,4 @@ var connection = { ...@@ -61,4 +61,4 @@ var connection = {
project: projectConnection project: projectConnection
} }
module.exports = connection export = connection
\ No newline at end of file \ No newline at end of file
const mysql = require('mysql2')
var env = process.env.NODE_ENV || 'testing';
const config = require('./config')[env]
// ==== USER ACOOUNT DB CONNECTION ====
var userConnection = mysql.createConnection({
host: config.database.host,
user: config.database.user,
password: config.database.password,
port: config.database.port,
database: config.database.dbUser,
multipleStatements: true
})
userConnection.connect(function(err) {
if (err) throw err;
})
userConnection.query('USE '+config.database.dbUser)
// ALTERNATIVE approach: close db connection manually after every query
/*
var dbconn = function dbconn(query, values, next) {
var connection = mysql.createConnection({
host: config.database.host,
user: config.database.user,
password: config.database.password,
port: config.database.port,
database: config.database.db
})
connection.connect(function(err) {
if (err) throw err;
})
connection.query(query, values, function(err) {
connection.end(); // close the connection
if (err) {
throw err;
}
// Execute the callback
next.apply(this, arguments);
});
}
*/
// ==== PROJECT DB CONNECTION ====
var projectConnection = mysql.createConnection({
host: config.database.host_project,
user: config.database.user,
password: config.database.password,
port: config.database.port,
database: config.database.dbProject
})
projectConnection.connect(function(err) {
if (err) throw err;
})
projectConnection.query('USE '+config.database.dbProject)
var connection = {
user: userConnection,
project: projectConnection
}
module.exports = connection
\ No newline at end of file
const dbconn_OBSOLETE = require('../config/dbconn') // DO NOT USE THIS FOR NEW FUNCTIONS import dbconn = require('../config/dbconn')
const dbconn = require('../config/dbconn2')
var methods = { var methods = {
// ===================== user db ===================== // ===================== user db =====================
registerNewUser: function(data, callback) { registerNewUser: function(data:any, callback:any) {
dbconn_OBSOLETE.user.beginTransaction(function(err) { // START TRANSACTION dbconn.user.beginTransaction(function(err:any) { // START TRANSACTION
if (err) { if (err) { throw err }
throw err
}
// insert profile // insert profile
dbconn_OBSOLETE.user.query('INSERT INTO user SET ?', data.profile, function (err, results, fields) { dbconn.user.query('INSERT INTO user SET ?', data.profile, function (err:any, results:any, fields:any) {
if (err) { if (err) {
return dbconn_OBSOLETE.user.rollback(function() { return dbconn.user.rollback(function() {
throw err throw err
}); });
} }
var newUserId = results.insertId let newUserId:number = results.insertId
// set password // set password
var credentialData = { var credentialData:any = {
user_id: newUserId, user_id: newUserId,
password: data.password password: data.password
} }
dbconn_OBSOLETE.user.query('INSERT INTO credential SET ?', credentialData, function (err, results, fields) { dbconn.user.query('INSERT INTO credential SET ?', credentialData, function (err:any, results:any, fields:any) {
if (err) { if (err) {
return dbconn_OBSOLETE.user.rollback(function() { return dbconn.user.rollback(function() {
throw err throw err
}); });
} }
// set default user-project-role // set default user-project-role
var projectRoleData = { var projectRoleData:any = {
project_id: 1, //M4_LAB project_id: 1, //M4_LAB
role_id: 2, // USER role_id: 2, // USER
user_id: newUserId user_id: newUserId
} }
dbconn_OBSOLETE.user.query('INSERT INTO user_project_role SET ?', projectRoleData, function (err, results, fields) { dbconn.user.query('INSERT INTO user_project_role SET ?', projectRoleData, function (err:any, results:any, fields:any) {
if (err) { if (err) {
return dbconn_OBSOLETE.user.rollback(function() { return dbconn.user.rollback(function() {
throw err throw err
}); });
} }
// MLAB-129: INSERT verification token // MLAB-129: INSERT verification token
let verificationData = { let verificationData:any = {
user_id: newUserId, user_id: newUserId,
token: data.verificationToken token: data.verificationToken
} }
dbconn_OBSOLETE.user.query('INSERT INTO verification SET ?', verificationData, function (err, results, fields) { dbconn.user.query('INSERT INTO verification SET ?', verificationData, function (err:any, results:any, fields:any) {
if (err) { if (err) {
return dbconn_OBSOLETE.user.rollback(function() { return dbconn.user.rollback(function() {
throw err throw err
}); });
} }
// COMMIT // COMMIT
dbconn_OBSOLETE.user.commit(function(err) { dbconn.user.commit(function(err:any) {
if (err) { if (err) {
return dbconn_OBSOLETE.user.rollback(function() { return dbconn.user.rollback(function() {
throw err throw err
}) })
} }
...@@ -65,9 +62,9 @@ var methods = { ...@@ -65,9 +62,9 @@ var methods = {
callback(err) callback(err)
}) })
}, },
getUserByEmail: async function(email) { getUserByEmail: async function(email:any) {
try { try {
let rows = await dbconn.user.promise().query('SELECT id, verificationStatus, salutation, title, firstname, lastname, industry, organisation, speciality, m4lab_idp FROM user WHERE email = "' +email+'"') let rows:any = await dbconn.user.promise().query('SELECT id, verificationStatus, salutation, title, firstname, lastname, industry, organisation, speciality, m4lab_idp FROM user WHERE email = "' +email+'"')
if (rows[0][0]) { if (rows[0][0]) {
return rows[0][0] return rows[0][0]
} }
...@@ -77,9 +74,9 @@ var methods = { ...@@ -77,9 +74,9 @@ var methods = {
} }
return null return null
}, },
getUserEmailById: async function(userId) { getUserEmailById: async function(userId:number) {
try { try {
let rows = await dbconn.user.promise().query('SELECT email FROM user WHERE id = ' +userId) let rows:any = await dbconn.user.promise().query('SELECT email FROM user WHERE id = ' +userId)
if (rows[0][0]) { if (rows[0][0]) {
return rows[0][0].email return rows[0][0].email
} }
...@@ -89,9 +86,9 @@ var methods = { ...@@ -89,9 +86,9 @@ var methods = {
} }
return null return null
}, },
checkUserEmail: async function(email) { checkUserEmail: async function(email:any) {
try { try {
let rows = await dbconn.user.promise().query('SELECT id, email FROM user WHERE email = "' +email+'"') let rows:any = await dbconn.user.promise().query('SELECT id, email FROM user WHERE email = "' +email+'"')
if (rows[0][0]) { if (rows[0][0]) {
return rows[0][0] return rows[0][0]
} }
...@@ -101,9 +98,9 @@ var methods = { ...@@ -101,9 +98,9 @@ var methods = {
} }
return null return null
}, },
getUserByToken: async function(token) { getUserByToken: async function(token:any) {
try { try {
let rows = await dbconn.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 = "' let rows:any = await dbconn.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 = "'
+token+'" and resetPasswordExpires > '+Date.now()) +token+'" and resetPasswordExpires > '+Date.now())
if (rows[0][0]) { if (rows[0][0]) {
return rows[0][0] return rows[0][0]
...@@ -114,47 +111,33 @@ var methods = { ...@@ -114,47 +111,33 @@ var methods = {
} }
return null return null
}, },
updateUserById: function(userData, callback) { updateUserById: async function(userId:number, userData:any) {
dbconn_OBSOLETE.user.query('UPDATE user SET ? WHERE id = ' +userData.id, userData, function (err, rows, fields) { try {
if (err) throw err let result:any = await dbconn.user.promise().query('UPDATE user SET ? WHERE id = ' +userId, userData)
callback(err) return result
}) } catch (err) {
}, console.error(err)
updateCredential: function(data, callback) { }
dbconn_OBSOLETE.user.query('UPDATE credential SET ? WHERE user_id = ' +data.user_id, data, function (err, rows, fields) { return null
if (err) throw err
callback(err)
})
},
getUserIdByEmail_OBSOLETE: function(email, callback) {
let userId
dbconn_OBSOLETE.user.query('SELECT id FROM user WHERE email = "' +email+'"', function (err, rows, fields) {
if (err) {
throw err
}
else {
if ( rows.length > 0) {
userId = rows[0].id
}
}
callback(userId, err)
});
}, },
getUserProjectRole_OBSOLETE: function(userId, callback) { updateCredential: async function(data:any) {
dbconn_OBSOLETE.user.query('SELECT project_id, role_id FROM user_project_role WHERE user_id = "' +userId+'"', function (err, rows, fields) { try {
if (err) throw err let result:any = await dbconn.user.promise().query('UPDATE credential SET ? WHERE user_id = ' +data.user_id, data)
callback(rows, err) return result
}); } catch (err) {
console.error(err)
}
return null
}, },
addUserProjectRole: function(data, callback) { addUserProjectRole_OBSOLETE: function(data:any, callback:any) {
dbconn_OBSOLETE.user.query('INSERT INTO user_project_role SET ?', data, function (err, results, fields){ dbconn.user.query('INSERT INTO user_project_role SET ?', data, function (err:any){
if (err) throw err if (err) throw err
callback(err) callback(err)
}) })
}, },
getVerificationTokenByUserId: async function(userId) { getVerificationTokenByUserId: async function(userId:number) {
try { try {
let rows = await dbconn.user.promise().query('SELECT token FROM verification WHERE user_id = "' +userId+'"') let rows:any = await dbconn.user.promise().query('SELECT token FROM verification WHERE user_id = "' +userId+'"')
if (rows[0][0]) { if (rows[0][0]) {
return rows[0][0].token return rows[0][0].token
} }
...@@ -164,9 +147,9 @@ var methods = { ...@@ -164,9 +147,9 @@ var methods = {
} }
return null return null
}, },
getUserIdByVerificationToken: async function(token) { getUserIdByVerificationToken: async function(token:any) {
try { try {
let rows = await dbconn.user.promise().query('SELECT user_id FROM verification WHERE token = "' +token+'"') let rows:any = await dbconn.user.promise().query('SELECT user_id FROM verification WHERE token = "' +token+'"')
if (rows[0][0]) { if (rows[0][0]) {
return rows[0][0].user_id return rows[0][0].user_id
} }
...@@ -178,23 +161,23 @@ var methods = { ...@@ -178,23 +161,23 @@ var methods = {
} }
return null return null
}, },
verifyUserAccount: function(userData, callback) { verifyUserAccount: function(userData:any, callback:any) {
dbconn_OBSOLETE.user.beginTransaction(function(err) { // START TRANSACTION dbconn.user.beginTransaction(function(err:any) { // START TRANSACTION
if (err) { throw err } if (err) { throw err }
// update user status // update user status
dbconn_OBSOLETE.user.query('UPDATE user SET ? WHERE id =' +userData.id, userData, function (err, rows, fields) { dbconn.user.query('UPDATE user SET ? WHERE id =' +userData.id, userData, function (err:any, rows:any, fields:any) {
if (err) { if (err) {
return dbconn_OBSOLETE.user.rollback(function() { throw err }) return dbconn.user.rollback(function() { throw err })
} }
// delete verification token // delete verification token
dbconn_OBSOLETE.user.query('DELETE FROM verification WHERE user_id = '+userData.id, function (err, rows, fields) { dbconn.user.query('DELETE FROM verification WHERE user_id = '+userData.id, function (err:any, rows:any, fields:any) {
if (err) { if (err) {
return dbconn_OBSOLETE.user.rollback(function() { throw err }) return dbconn.user.rollback(function() { throw err })
} }
// COMMIT // COMMIT
dbconn_OBSOLETE.user.commit(function(err) { dbconn.user.commit(function(err:any) {
if (err) { if (err) {
return dbconn_OBSOLETE.user.rollback(function() { throw err }) return dbconn.user.rollback(function() { throw err })
} }
}) })
}) })
...@@ -203,9 +186,9 @@ var methods = { ...@@ -203,9 +186,9 @@ var methods = {
}) })
}, },
/* ===== GitLab ===== */ /* ===== GitLab ===== */
getGitlabId: async function(userId) { getGitlabId: async function(userId:number) {
try { try {
let rows = await dbconn.user.promise().query('SELECT gu.gitlab_userId FROM user_gitlab gu, user u WHERE u.id = "' +userId+'" and gu.user_id = u.id') let rows:any = await dbconn.user.promise().query('SELECT gu.gitlab_userId FROM user_gitlab gu, user u WHERE u.id = "' +userId+'" and gu.user_id = u.id')
if (rows[0][0]) { if (rows[0][0]) {
return rows[0][0].gitlab_userId return rows[0][0].gitlab_userId
} else { } else {
...@@ -217,12 +200,12 @@ var methods = { ...@@ -217,12 +200,12 @@ var methods = {
return err return err
} }
}, },
addGitlabUser: function(data, callback){ addGitlabUser: function(data:any, callback:any){
dbconn_OBSOLETE.user.query('INSERT INTO user_gitlab SET ?', data, function (err) { dbconn.user.query('INSERT INTO user_gitlab SET ?', data, function (err:any) {
if (err) throw err if (err) throw err
callback(err) callback(err)
}) })
} }
}; };
module.exports = methods; export = methods
\ No newline at end of file \ No newline at end of file
This diff is collapsed.
...@@ -39,7 +39,6 @@ ...@@ -39,7 +39,6 @@
"jest": "^26.6.3", "jest": "^26.6.3",
"method-override": "^3.0.0", "method-override": "^3.0.0",
"morgan": "^1.9.1", "morgan": "^1.9.1",
"mysql": "^2.17.1",
"mysql2": "^2.2.5", "mysql2": "^2.2.5",
"nodemailer": "^6.3.1", "nodemailer": "^6.3.1",
"nodemailer-ntlm-auth": "^1.0.1", "nodemailer-ntlm-auth": "^1.0.1",
......
This diff is collapsed.
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment