From 9b8cdb72e6cb4e8291954c2737be08e9f34d0c1a Mon Sep 17 00:00:00 2001 From: Rosanny <rosanny.sihombing@hft-stuttgart.de> Date: Thu, 29 Oct 2020 18:46:07 +0100 Subject: [PATCH] gitlab activation: the skeleton --- routes/methods.js | 21 ++++++++++++++++++++- routes/routes-account.js | 29 +++++++++++++++++++++++++++++ 2 files changed, 49 insertions(+), 1 deletion(-) diff --git a/routes/methods.js b/routes/methods.js index 91b75af3..85745482 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 5e6292c1..1f20a780 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 }); -- GitLab