UNPKG

joola.io.engine

Version:
203 lines (181 loc) 5.39 kB
/** * 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); }); } };