/*
- *
+ *
* Copyright 2016 RIFT.IO Inc
*
* Licensed under the Apache License, Version 2.0 (the "License");
var _ = require('lodash');
var base64 = require('base-64');
var APIVersion = '/v2';
+var configurationAPI = require('./configuration');
-function logAndReject(mesg, reject) {
+function logAndReject(mesg, reject, errCode) {
res.errorMessage = {
error: mesg
}
+ res.statusCode = errCode || constants.HTTP_RESPONSE_CODES.ERROR.BAD_REQUEST;
console.log(mesg);
reject(res);
}
function logAndRedirectToLogin(mesg, res, req) {
+ var api_server = req.query['api_server'] || (req.protocol + '://' + configurationAPI.globalConfiguration.get().api_server);
+ var upload_server = req.protocol + '://' + (configurationAPI.globalConfiguration.get().upload_server || req.hostname);
console.log(mesg);
- res.redirect('login.html?api_server=' + req.query['api_server']);
+ res.redirect('login.html?api_server=' + api_server + '&upload_server=' + upload_server + '&referer=' + encodeURIComponent(req.headers.referer));
res.end();
}
} else {
// go through projects and get list of projects that this user belongs to.
// pick first one as default project?
-
+ var isLCM = false;
var projects = JSON.parse(results[1].body).collection['rw-project:project'];
projects && projects.map(function(project) {
project['project-config'] &&
project['project-config']['user'] &&
project['project-config']['user'].map(function(user) {
if (user['user-name'] == username) {
- project_list_for_user.push(project.name);
+ project_list_for_user.push(project);
+ user.role.map(function(role) {
+ if(role.role.indexOf('rw-project-mano:lcm') > -1) {
+ isLCM = true;
+ }
+ })
}
});
});
-
- req.session.projectId = (project_list_for_user.length > 0) && project_list_for_user.sort() && project_list_for_user[0];
+ if (project_list_for_user.length > 0) {
+ req.session.projectId = project_list_for_user.sort() && project_list_for_user[0].name;
+ req.session.isLCM = isLCM;
+ }
}
req.session.authorization = authorization_header_string;
req.session.loggedIn = true;
-
- var successMsg = 'User =>' + username + ' successfully logged in.';
- successMsg += req.session.projectId ? 'Project =>' + req.session.projectId + ' set as default.' : '';
+ req.session.userdata = {
+ username: username,
+ // project: req.session.projectId
+ };
+ req.session.redirect = true;
+ var successMsg = 'User => ' + username + ' successfully logged in.';
+ successMsg += req.session.projectId ? 'Project => ' + req.session.projectId + ' set as default.' : '';
console.log(successMsg);
status: successMsg
})
};
+
+ req.session.save(function(err) {
+ if (err) {
+ console.log('Error saving session to store', err);
+ }
+ })
+
resolve(response);
}).catch(function(error) {
return new Promise(function(resolve, reject) {
if (req.session && req.session.loggedIn == true) {
req.session.projectId = req.params.projectId;
- var successMsg = 'Added project' + projectId + ' to session' + req.sessionID;
- console.log(successMsg);
+ req.session.save(function(err) {
+ if (err) {
+ console.log('Error saving session to store', err);
+ }
+ var successMsg = 'Added project ' + req.session.projectId + ' to session ' + req.sessionID;
+ console.log(successMsg);
+
+ return resolve ({
+ statusCode: constants.HTTP_RESPONSE_CODES.SUCCESS.OK,
+ data: JSON.stringify({
+ status: successMsg
+ })
+ });
- return resolve ({
- statusCode: constants.HTTP_RESPONSE_CODES.SUCCESS.OK,
- data: JSON.stringify({
- status: successMsg
- })
+ var errorMsg = 'Session does not exist or not logged in';
+ logAndReject(errorMsg, reject, constants.HTTP_RESPONSE_CODES.ERROR.NOT_FOUND);
});
}
-
- var errorMsg = 'Session does not exist or not logged in';
- logAndReject(errorMsg, reject);
});
}
var api_server = req.query["api_server"];
var uri = utils.confdPort(api_server);
var url = uri + '/api/logout';
+ req.returnTo = req.headers.referer;
return new Promise(function(resolve, reject) {
Promise.all([
rp({