mirror of
https://github.com/ansible/awx.git
synced 2026-02-02 01:58:09 -03:30
97 lines
3.3 KiB
JavaScript
97 lines
3.3 KiB
JavaScript
/*********************************************
|
|
* Copyright (c) 2013 AnsibleWorks, Inc.
|
|
*
|
|
* User authentication functions
|
|
*
|
|
*/
|
|
|
|
angular.module('AuthService', ['ngCookies'])
|
|
.factory('Authorization', ['$http', '$rootScope', '$location', '$cookieStore', function($http, $rootScope, $location, $cookieStore) {
|
|
return {
|
|
setToken: function(token) {
|
|
// set the session cookie
|
|
var today = new Date();
|
|
today.setTime(today.getTime() + ($AnsibleConfig.session_timeout * 1000));
|
|
$cookieStore.remove('token');
|
|
$cookieStore.remove('token_expire');
|
|
$cookieStore.put('token', token);
|
|
$cookieStore.put('token_expire', today.getTime());
|
|
$rootScope.userLoggedIn = true;
|
|
},
|
|
|
|
isTokenValid: function() {
|
|
// check if token exists and is not expired
|
|
var response = false;
|
|
if ( $cookieStore.get('token') && $cookieStore.get('token_expire') ) {
|
|
var token = $cookieStore.get('token');
|
|
var exp = new Date($cookieStore.get('token_expire'));
|
|
var today = new Date();
|
|
if (today < exp) {
|
|
this.setToken(token); //push expiration into the future while user is active
|
|
response = true;
|
|
}
|
|
}
|
|
return response;
|
|
},
|
|
|
|
didSessionExpire: function() {
|
|
// use only to test why user was sent to login page.
|
|
var response = false;
|
|
if ($cookieStore.get('token_expire')) {
|
|
var exp = new Date($cookieStore.get('token_expire'));
|
|
var today = new Date();
|
|
if (exp < today) {
|
|
response = true;
|
|
}
|
|
}
|
|
return response;
|
|
},
|
|
|
|
getToken: function() {
|
|
if ( this.isTokenValid() ) {
|
|
return $cookieStore.get('token');
|
|
}
|
|
else {
|
|
return null;
|
|
}
|
|
},
|
|
|
|
retrieveToken: function(username, password) {
|
|
return $http({ method: 'POST', url: '/api/v1/authtoken/',
|
|
data: {"username": username, "password": password} });
|
|
},
|
|
|
|
logout: function() {
|
|
$rootScope.current_user = {};
|
|
$cookieStore.remove('token');
|
|
$cookieStore.remove('token_expire');
|
|
$cookieStore.remove('current_user');
|
|
$rootScope.userLoggedIn = false;
|
|
},
|
|
|
|
getUser: function() {
|
|
return $http({
|
|
method: 'GET',
|
|
url: '/api/v1/me/',
|
|
headers: { 'Authorization': 'Token ' + this.getToken() },
|
|
});
|
|
},
|
|
|
|
setUserInfo: function(response) {
|
|
// store the response values in $rootScope so we can get to them later
|
|
$rootScope.current_user = response.results[0];
|
|
$cookieStore.put('current_user', response.results[0]); //keep in session cookie incase user hits refresh
|
|
},
|
|
|
|
restoreUserInfo: function() {
|
|
$rootScope.current_user = $cookieStore.get('current_user');
|
|
},
|
|
|
|
getUserInfo: function(key) {
|
|
// Access values returned from the Me API call
|
|
return ($rootScope.current_user[key]) ? $rootScope.current_user[key] : null;
|
|
}
|
|
}
|
|
}]);
|
|
|