diff --git a/routes/methods.js b/routes/methods.js index 91b75af3914ac3003c770446014828594c1c518e..857454827af004a3d40b18d8679fd6d2db9acb1b 100644 --- a/routes/methods.js +++ b/routes/methods.js @@ -69,7 +69,7 @@ var methods = { }) }, getUserByEmail: function(email, callback) { - dbconn.user.query('SELECT verificationStatus, salutation, title, firstname, lastname, industry, organisation, speciality, m4lab_idp FROM user WHERE email = "' +email+'"', function (err, rows, fields) { + dbconn.user.query('SELECT id, verificationStatus, salutation, title, firstname, lastname, industry, organisation, speciality, m4lab_idp FROM user WHERE email = "' +email+'"', function (err, rows, fields) { if (err) { throw err; } @@ -212,6 +212,25 @@ var methods = { }) callback(err) }) + }, + /* ===== GitLab ===== */ + getGitlabId: function(userId, callback){ + let gitlabUserId + dbconn.user.query('SELECT gu.gitlab_userId FROM user_gitlab gu, user u WHERE u.id = "' +userId+'" and gu.user_id = u.id', function (err, rows) { + if (err) { + throw err + } + else if(rows[0]) { + gitlabUserId = rows[0].gitlab_userId + } + callback(gitlabUserId, err) + }) + }, + addGitlabUser: function(data, callback){ + dbconn.user.query('INSERT INTO user_gitlab SET ?', data, function (err) { + if (err) throw err + callback(err) + }) } }; diff --git a/routes/routes-account.js b/routes/routes-account.js index 5e6292c184384c7be83f5a244d5972b665fe23ce..1f20a7801451773bc40a5e74c40de09f0133a607 100644 --- a/routes/routes-account.js +++ b/routes/routes-account.js @@ -10,6 +10,7 @@ const salt = 64; // salt length const async = require('async') const crypto = require('crypto') const mailer = require('./mailer') +const superagent = require('superagent') module.exports = function (app, config, passport, i18n) { @@ -180,6 +181,34 @@ module.exports = function (app, config, passport, i18n) { methods.getUserByEmail(req.user.email, function(data, err){ if (!err) { if (data.verificationStatus == 1) { + // start =============== RS: MLAB-183 + let userId = data.id + methods.getGitlabId(userId, function(data, err){ + if (!err) { + if (data) { + console.log("TODO: GitLab is already activated for this user. Allow project creation.") + } + else { + superagent.get('https://transfer.hft-stuttgart.de/gitlab/api/v4/users?private_token='+config.gitlab.token_readWriteProjects+'&search='+req.user.email) + .then(res => { + if (res.body.length > 0) { + let gitlabActivationData = { + user_id: userId, + gitlab_userId: res.body[0].id + } + methods.addGitlabUser(gitlabActivationData, function(err){}) + } + else { + console.log('TODO: Show gitlab activation button: transfer.hft-stuttgart.de/gitlab') + } + }) + .catch(err => { + console.log(err.message) + }); + } + } + }) + // end =============== RS: MLAB-183 res.render(lang+'/account/services', { user: data });