(function () { 'use strict'; angular .module('hyperion') .factory('AuthenticationService', ['$rootScope', '$http', '$sessionStorage', 'jwtHelper', 'CONFIG', 'sysClock', function($rootScope, $http, $sessionStorage, jwtHelper, CONFIG, sysClock) { var Login = function(email, password, callback) { var request = {"query": "mutation{auth(email: \"" + email + "\", password: \"" + password + "\")}"}; $http({ method: 'POST', url: CONFIG.APP_API, data: request, headers: {"Content-Type": "application/json", 'Accept': 'application/json'} }).then( function(response){ // resolve if(response.data.errors) { callback(1); } else { var decodedToken = jwtHelper.decodeToken(response.data.data.auth.accessToken); $sessionStorage.currentUser = { auth_token_str: response.data.data.auth.accessToken, auth_token_iat: response.data.data.auth.expiresAt, auth_token_exp: decodedToken.exp, refr_token_str: response.data.data.auth.refreshToken, session: decodedToken.session, email: decodedToken.user_email, user_id: decodedToken.sub, company_id: decodedToken.user_company_id, company_name: decodedToken.user_company_name, title: decodedToken.user_title, first_name: decodedToken.user_fname, last_name: decodedToken.user_lname, mobile_number: decodedToken.user_mobile_number, mobile_dial: decodedToken.user_mobile_dial, last_signin: decodedToken.user_last_signin, project: decodedToken.project, ismanager: decodedToken.ismanager, issuper: decodedToken.issuper, smallMenu: false, temperature: decodedToken.temperature, timerange: CONFIG.TIMERANGE, locale: decodedToken.locale, wshost: decodedToken.wshost }; ///////////////////////////////////////////////// // set primary project ID $rootScope.project = decodedToken.project; // add jwt token to auth header for all requests made by the $http service $http.defaults.headers.common.Authorization = 'Bearer ' + response.data.data.auth.accessToken; // set user timezone sysClock.setTimeZone(moment.tz.guess()); // set user clock sysClock.setClock('12h'); // set authentication flag $sessionStorage.isAuthenticated = true; // execute callback with true to indicate successful login callback(0); // success } },function() { // failure callback(500); // server in trouble... }); }; var Logout = function(callback) { // remove user from local storage and clear http auth header $sessionStorage.isAuthenticated = false; delete $sessionStorage.currentUser; $http.defaults.headers.common.Authorization = ''; if(callback && typeof callback === 'function'){ callback(true); } }; return { isAuthenticated: function () { return $sessionStorage.isAuthenticated&&(parseInt(moment.utc().unix())