joola.io.engine
Version:
joola.io's Framework Engine
203 lines (181 loc) • 5.39 kB
JavaScript
/**
* joola.io
*
* Copyright Joola Smart Solutions, Ltd. <info@joo.la>
*
* Licensed under GNU General Public License 3.0 or later.
* Some rights reserved. See LICENSE, AUTHORS.
*
* @license GPL-3.0+ <http://spdx.org/licenses/GPL-3.0+>
*/
var
auth = require('../lib/auth/manager'),
router = require('./index'),
utils = require('../lib/shared/utils');
exports.login = {
name: "auth/login",
description: "Login",
inputs: {
"required": ["authToken", "username", "password"],
"optional": ["redirect"]
},
blockedConnectionTypes: [],
outputExample: {},
permission: ['access_system'],
run: function (req, res) {
var response = {};
response.auth = false;
auth.login(req.params.authToken, req.connection.remoteAddress, req.params.username, req.params.password, function (err, user, token) {
if (err)
return router.responseError(new router.AuthErrorTemplate('Failed to authenticate request'), req, res);
if (user) {
response.auth = true;
response.user = utils.cleanObject(user);
response['joola-token'] = token;
return router.responseSuccess(response, req, res);
}
else {
//connection.error = 'Failed to authenticate request.';
//connection.rawConnection.responseHttpCode = 401;
return router.responseError(new router.AuthErrorTemplate('Failed to authenticate request'), req, res);
}
});
}
};
exports.loginSSO = {
name: "loginSSO",
description: "SSO Login to Joola Analytics",
inputs: {
"required": ["authToken", "username"],
"optional": [ "password"]
},
blockedConnectionTypes: [],
outputExample: {},
permission: ['access_system'],
run: function (req, res) {
var response = {};
response.auth = false;
//TODO: Chceck correct remoteIP prop name
auth.login(req.params.authToken, req.connection.remoteAddress, req.params.username, req.params.password, function (err, user, token) {
if (err)
return router.responseError(new router.AuthErrorTemplate('Failed to authenticate request'), req, res);
if (user) {
response.auth = true;
response.user = utils.cleanObject(user);
response['joola-token'] = token;
return router.responseSuccess(response, req, res);
}
else {
//connection.error = 'Failed to authenticate request.';
//connection.rawConnection.responseHttpCode = 401;
return router.responseError(new router.AuthErrorTemplate('Failed to authenticate request'), req, res);
}
});
}
};
exports.loginNeeded = {
name: "loginNeeded",
description: "Does the instance of Joola Analytics require login.",
inputs: {
"required": [],
"optional": []
},
blockedConnectionTypes: [],
outputExample: {},
permission: ['access_system'],
run: function (req, res) {
var response = {};
response.needed = joola.config.auth.store != 'none';
router.responseSuccess(response, req, res);
}
};
exports.getUser = {
name: "auth.getUser",
description: "Get the current user assosciated with the session/connection.",
inputs: {
"required": [],
"optional": []
},
blockedConnectionTypes: [],
outputExample: {},
permission: ['access_system'],
run: function (req, res) {
var response = {};
response.user = null;
var user = req.user;
if (user)
response.user = utils.cleanObject(user);
router.responseSuccess(response, req, res);
}
};
exports.logout = {
name: "logout",
description: "Logout from Joola Analytics",
inputs: {
"required": [],
"optional": []
},
blockedConnectionTypes: [],
outputExample: {},
permission: ['access_system'],
run: function (req, res) {
/*auth.logout(connection, function () {
});*/
router.responseSuccess(null, req, res);
}
};
exports.checkLogin = {
name: "checkLogin",
description: "Check if the session is authenticated.",
inputs: {
required: [],
optional: []
},
blockedConnectionTypes: [],
permission: ['access_system'],
outputExample: {},
run: function (req, res) {
var response = {};
response.authenticated = false;
auth.checkLoggedIn(connection, function (session, success) {
if (success) {
response.authenticated = true;
response.session = session;
}
router.responseSuccess(response, req, res);
});
}
};
exports.checkToken = {
name: "auth/checkToken",
description: "Check if the token is valid.",
inputs: {
required: ['token'],
optional: []
},
blockedConnectionTypes: [],
permission: ['access_system'],
outputExample: {},
run: function (req, res) {
joola.logger.error('[checkToken] ' + req.params.token);
var response = {};
response.authenticated = false;
if (joola.config.auth.store == 'none') {
response.authenticated = true;
response.user = {
id: 1,
displayName: 'Anonymous User',
_roles: ['admin', 'user']
};
return router.responseSuccess(response, req, res);
}
auth.checkTokenExist(req.params.token, function (err, token, user) {
joola.logger.error('[checkToken] Result for token [' + req.params.token + '], ' + token);
if (token) {
response.authenticated = true;
response.user = user;
}
router.responseSuccess(response, req, res);
});
}
};