mainApp.factory('Identity',[ '$http', function($http){ /* Create profile structure to store informations * about current session */ var profile={}; profile.username=null; profile.projectname=null; profile.token=null; /** * * @param {string} response The response to parse * @param {boolean} to check if the request is send or not * @returns {requestParserResult} Formated data */ var parseLoginAnswer=function(response, failedToSendRequest){ var requestParserResult={}; requestParserResult.status=1; requestParserResult.failReason=null; if (typeof response.data.token !== 'undefined') { requestParserResult.status=0; profile.token=response.data.token; } else if(failedToSendRequest){ requestParserResult.failReason="Failed to send request"; } else{ requestParserResult.failReason="Please check your username, password and project name !"; } return requestParserResult; }; /** * Function to connect to OpenStack * * @param {object} $http Angular $http service * @param {string} username The user name * @param {string} password The user password * @param {string} projectname The user project name * @param {function} function to call when data is avalaible */ var login=function(username, password,projectname, callback){ // Set profile information (early) profile.username=username; profile.projectname=projectname; var result=$http.post('../server/index.php', $.param({"task" : "Authenticate", "user" : username, "password" : password, "project" : projectname})); // Wait and handle the response result.then(function (response){ callback(parseLoginAnswer(response), false); },function(response){ callback(parseLoginAnswer(response), true) }); }; // Return services objects return { login: login, profile: profile }; }]);