diff --git a/functions/methods.ts b/functions/methods.ts index cebfcb2179d5dcd9dc70e591708c6bd69300523c..f6a4eb5972d88f3102a138a05660dc477e6cd473 100644 --- a/functions/methods.ts +++ b/functions/methods.ts @@ -3,62 +3,64 @@ import dbconn = require('../config/dbconn') var methods = { // ===================== user db ===================== registerNewUser: function(data:any, callback:any) { - dbconn.user.beginTransaction(function(err:any) { // START TRANSACTION - if (err) { throw err } - // insert profile - dbconn.user.query('INSERT INTO user SET ?', data.profile, function (err:any, results:any, fields:any) { - if (err) { - return dbconn.user.rollback(function() { - throw err - }); - } - let newUserId:number = results.insertId - // set password - var credentialData:any = { - user_id: newUserId, - password: data.password - } - dbconn.user.query('INSERT INTO credential SET ?', credentialData, function (err:any, results:any, fields:any) { + dbconn.user.getConnection(function(err:any, thisconn){ + thisconn.beginTransaction(function(err:any) { // START TRANSACTION + if (err) { throw err } + // insert profile + thisconn.query('INSERT INTO user SET ?', data.profile, function (err:any, results:any, fields:any) { if (err) { - return dbconn.user.rollback(function() { - throw err - }); + return thisconn.rollback(function() { + throw err + }); } - // set default user-project-role - var projectRoleData:any = { - project_id: 1, //M4_LAB - role_id: 2, // USER - user_id: newUserId + let newUserId:number = results.insertId + // set password + var credentialData:any = { + user_id: newUserId, + password: data.password } - dbconn.user.query('INSERT INTO user_project_role SET ?', projectRoleData, function (err:any, results:any, fields:any) { + thisconn.query('INSERT INTO credential SET ?', credentialData, function (err:any, results:any, fields:any) { if (err) { - return dbconn.user.rollback(function() { + return thisconn.rollback(function() { throw err }); } - // MLAB-129: INSERT verification token - let verificationData:any = { - user_id: newUserId, - token: data.verificationToken + // set default user-project-role + var projectRoleData:any = { + project_id: 1, //M4_LAB + role_id: 2, // USER + user_id: newUserId } - dbconn.user.query('INSERT INTO verification SET ?', verificationData, function (err:any, results:any, fields:any) { + thisconn.query('INSERT INTO user_project_role SET ?', projectRoleData, function (err:any, results:any, fields:any) { if (err) { - return dbconn.user.rollback(function() { + return thisconn.rollback(function() { throw err }); } - // COMMIT - dbconn.user.commit(function(err:any) { + // MLAB-129: INSERT verification token + let verificationData:any = { + user_id: newUserId, + token: data.verificationToken + } + thisconn.query('INSERT INTO verification SET ?', verificationData, function (err:any, results:any, fields:any) { if (err) { - return dbconn.user.rollback(function() { + return thisconn.rollback(function() { throw err - }) + }); } + // COMMIT + thisconn.commit(function(err:any) { + if (err) { + return thisconn.rollback(function() { + throw err + }) + } + }) }) }) - }) + }); }); - }); + }); callback(err) }) }, @@ -162,27 +164,29 @@ var methods = { return null }, verifyUserAccount: function(userData:any, callback:any) { - dbconn.user.beginTransaction(function(err:any) { // START TRANSACTION - if (err) { throw err } - // update user status - dbconn.user.query('UPDATE user SET ? WHERE id =' +userData.id, userData, function (err:any, rows:any, fields:any) { - if (err) { - return dbconn.user.rollback(function() { throw err }) - } - // delete verification token - dbconn.user.query('DELETE FROM verification WHERE user_id = '+userData.id, function (err:any, rows:any, fields:any) { + dbconn.user.getConnection(function(err:any, thisconn){ + thisconn.beginTransaction(function(err:any) { // START TRANSACTION + if (err) { throw err } + // update user status + thisconn.query('UPDATE user SET ? WHERE id =' +userData.id, userData, function (err:any, rows:any, fields:any) { if (err) { - return dbconn.user.rollback(function() { throw err }) + return thisconn.rollback(function() { throw err }) } - // COMMIT - dbconn.user.commit(function(err:any) { + // delete verification token + thisconn.query('DELETE FROM verification WHERE user_id = '+userData.id, function (err:any, rows:any, fields:any) { if (err) { - return dbconn.user.rollback(function() { throw err }) + return thisconn.rollback(function() { throw err }) } + // COMMIT + thisconn.commit(function(err:any) { + if (err) { + return thisconn.rollback(function() { throw err }) + } + }) }) }) }) - callback(err) + callback(err) }) }, /* ===== GitLab ===== */ @@ -208,4 +212,4 @@ var methods = { } }; -export = methods \ No newline at end of file +export = methods diff --git a/routes/account.ts b/routes/account.ts index 68c3ca613a942c9b1d8f75e072b07d0f4377d7c8..ce921c566f399a42066788af923c28e8b935c798 100644 --- a/routes/account.ts +++ b/routes/account.ts @@ -106,10 +106,14 @@ export = function (app:any, config:any, passport:any, lang:string) { res.redirect('/login') } else { let loggedInUser = await getLoggedInUserData(req.user.email) - - res.render(lang+'/account/home', { - user: loggedInUser - }); + if (!loggedInUser) { + console.error("user data is not found") + res.status(500).render(lang+'/500', { error: "Your data is not found. Please try again." }) + } else { + res.render(lang+'/account/home', { + user: loggedInUser + }); + } } });