| 'use strict'; |
| angular.module('Authentication', []); |
| var app = angular.module('bmcApp', [ |
| 'ngCookies', |
| 'ngAnimate', |
| 'ngSanitize', |
| 'ui.bootstrap', |
| 'ui.router', |
| 'ngWebSocket', |
| 'Authentication', |
| 'ui.router.modal', |
| 'smart-table', |
| ]); |
| |
| 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', 'AuthenticationService', '$http', |
| '$templateCache', |
| function($rootScope, $cookieStore, $state, 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'); |
| } |
| }); |
| |
| } |
| ]); |
| |
| app.config([ |
| '$stateProvider', '$urlRouterProvider', |
| function($stateProvider, $urlRouterProvider) { |
| |
| $urlRouterProvider.otherwise('/systeminfo'); |
| |
| $stateProvider |
| .state('login', { |
| url : '/login', |
| templateUrl : 'static/partial-login.html', |
| controller : 'LoginController', |
| }) |
| .state('systeminfo', { |
| url : '/systeminfo', |
| templateUrl : 'static/partial-systeminfo.html' |
| }) |
| .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'}) |
| |
| .state('sensor', |
| {url : '/sensor', templateUrl : 'static/partial-sensor.html'}) |
| |
| .state( |
| 'fwupdate', |
| {url : '/fwupdate', templateUrl : 'static/partial-fwupdate.html'}) |
| // nested list with custom controller |
| .state('fwupdate.confirm', { |
| url : '/confirm', |
| templateUrl : 'static/partial-fwupdateconfirm.html', |
| modal : true |
| }) |
| // 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.directive('fileread', [ function() { |
| return { |
| scope: {fileread : '='}, |
| link: function(scope, element, attributes) { |
| element.bind('change', function(changeEvent) { |
| scope.$apply(function() { |
| scope.fileread = changeEvent.target.files[0]; |
| // or all selected files: |
| // scope.fileread = changeEvent.target.files; |
| }); |
| }); |
| } |
| } |
| } ]); |
| |
| 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', '$log', '$http', |
| function($cookieStore, $rootScope, $timeout, $log, $http) { |
| var service = {}; |
| |
| service.Login = function(username, password) { |
| var user = {'username' : username, 'password' : password}; |
| return $http.post('/login', user); |
| }; |
| |
| 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.IsLoggedIn = function() { |
| if ($rootScope.globals['currentUser']) { |
| return true; |
| } else { |
| return false; |
| } |
| }; |
| |
| service.logoutreason = ''; |
| return service; |
| } |
| ]); |