blob: 7d31cc2071007858970fd0f231e6b7eee27acb3e [file] [log] [blame]
'use strict';
angular.module('Authentication', []);
var app = angular.module('bmcApp', [
'Authentication',
'ngCookies',
'ui.bootstrap',
'ui.router',
'ngSanitize',
'ngWebSocket',
'ngResource'
]);
app.controller('MainCtrl', ['$scope', function($scope) {
}]);
app.service('loginInterceptor', ["$injector",
function($injector) {
var service = this;
service.responseError = function(response) {
var $state = $injector.get('$state');
var AuthenticationService = $injector.get('AuthenticationService');
if (response.status == 401){
console.log("Login required... ");
var invalidate_reason = "Your user was logged out.";
// if we're attempting to log in, we need to
// continue the promise chain to make sure the user is informed
if ($state.current.name === "login") {
invalidate_reason = "Your username and password was incorrect";
} else {
$state.after_login_state = $state.current.name;
$state.go('login');
}
AuthenticationService.ClearCredentials(invalidate_reason);
}
return response;
};
}])
app.config(['$httpProvider', function ($httpProvider) {
$httpProvider.interceptors.push('loginInterceptor');
}]);
app.directive('windowSize', ['$window', function ($window) {
return function (scope, element) {
var w = angular.element($window);
scope.getWindowDimensions = function () {
return {
'h': w.height(),
'w': w.width()
};
};
scope.$watch(scope.getWindowDimensions, function (newValue, oldValue) {
scope.windowHeight = newValue.h;
scope.windowWidth = newValue.w;
scope.style = function () {
return {
'height': (newValue.h - 100) + 'px',
'width': (newValue.w - 100) + 'px'
};
};
}, true);
w.bind('resize', function () {
scope.$apply();
});
}
}]);
app.run(['$rootScope', '$cookieStore', '$state', '$resource', 'AuthenticationService', '$http', '$templateCache',
function($rootScope, $cookieStore, $state, $resource, AuthenticationService, $http, $templateCache) {
if ($rootScope.globals == undefined){
$rootScope.globals = {};
}
// keep user logged in after page refresh
AuthenticationService.RestoreCredientials();
$rootScope.$on(
'$stateChangeStart',
function(event, toState, toParams, fromState, fromParams, options) {
// redirect to login page if not logged in
// unless we're already trying to go to the login page (prevent a loop)
if (!$rootScope.globals.currentUser && toState.name !== 'login') {
// If logged out and transitioning to a logged in page:
event.preventDefault();
$state.go('login');
}
});
$http.get('static/partial-kvm.html', { cache: $templateCache });
}
]);
app.config(['$stateProvider', '$urlRouterProvider',
function($stateProvider, $urlRouterProvider) {
$urlRouterProvider.otherwise('/systeminfo');
$stateProvider
// nested list with just some random string data
.state('login', {
url: '/login',
templateUrl: 'static/partial-login.html',
controller: 'LoginController',
})
// systeminfo view ========================================
.state(
'systeminfo',
{url: '/systeminfo', templateUrl: 'static/partial-systeminfo.html'})
// HOME STATES AND NESTED VIEWS ========================================
.state(
'eventlog', {url: '/eventlog', templateUrl: 'static/partial-eventlog.html'})
.state(
'kvm', {url: '/kvm', templateUrl: 'static/partial-kvm.html'})
.state(
'ipmi', {url: '/ipmi', templateUrl: 'static/partial-ipmi.html'})
// ABOUT PAGE AND MULTIPLE NAMED VIEWS =================================
.state('about', {url: '/about', templateUrl: 'static/partial-fruinfo.html'})
// nested list with custom controller
.state('about.list', {
url: '/list',
templateUrl: 'static/partial-home-list.html',
controller: function($scope) {
$scope.dogs = ['Bernese', 'Husky', 'Goldendoodle'];
}
})
}]);
app.controller('PaginationDemoCtrl', ['$scope', '$log', function($scope, $log) {
$scope.totalItems = 64;
$scope.currentPage = 4;
$scope.setPage = function(pageNo) { $scope.currentPage = pageNo; };
$scope.pageChanged = function() {
$log.log('Page changed to: ' + $scope.currentPage);
};
$scope.maxSize = 5;
$scope.bigTotalItems = 175;
$scope.bigCurrentPage = 1;
}]);
angular.module('Authentication').factory(
'AuthenticationService',
['$cookieStore', '$rootScope', '$timeout', '$resource', '$log', '$http',
function($cookieStore, $rootScope, $timeout, $resource, $log, $http) {
var service = {};
service.Login = function(username, password, success_callback, fail_callback) {
var user = {"username": username, "password": password};
var UserLogin = $resource("/login");
var this_login = new UserLogin();
this_login.data = {"username": username, "password": password};
UserLogin.save(user, success_callback, fail_callback);
};
service.SetCredentials = function(username, token) {
$rootScope.globals["currentUser"] = {username: username, authdata: token};
$http.defaults.headers.common['Authorization'] = 'Token ' + token;
$cookieStore.put('globals', $rootScope.globals);
};
service.ClearCredentials = function(reason) {
$rootScope.globals["currentUser"] = null;
if (reason !== null) {
service.logoutreason = reason;
}
$cookieStore.remove('globals');
$http.defaults.headers.common['Authorization'] = '';
};
service.RestoreCredientials = function() {
var globals = $cookieStore.get('globals') || {};
if (globals.currentUser) {
service.SetCredentials(
globals.currentUser.username, globals.currentUser.authdata);
}
};
service.logoutreason = "";
return service;
}
]);