function()

in web-app/app/controllers/mainControllers.js [11:113]


   function($scope, $rootScope, $window, $location, $http, Auth) {

    $scope.mainData = {
    	loggedIn: true, // NOTE change to false to begin enabling login
    	user: {userName: '', password: '', authToken: ''},
    };
    
    $scope.isLoggedIn = () => {
    	
    	let authInfo = $window.sessionStorage.getItem("auth");
    	if ( null == authInfo || "false" === authInfo ) {
    		return false;
    	}
    	else {
            
    		$scope.mainData.loggedIn = true;
    		$scope.mainData.user.userName = $window.sessionStorage.getItem("userName");
    		$scope.mainData.user.authToken = $window.sessionStorage.getItem("authToken");
    		return true
    	}
    }
    
    $scope.setIsLoggedIn = (isTrue, securityLevel) => {
    	
    	let sIsTrue = isTrue ? "true" : "false";
    	$window.sessionStorage.setItem("auth", sIsTrue);
    	let curName = isTrue ? $scope.mainData.user.userName : "";
    	$window.sessionStorage.setItem("userName", curName);
       	let authToken = isTrue ? $scope.mainData.user.authToken : "";
    	$window.sessionStorage.setItem("authToken", authToken);
    	
    	// set security level
    	// set a common "Authorization" header for all HTTP requests
    	// (NOTE:  the app.js run function has a case to handle page refreshes, any changes
    	// made here should also be made to that function)
    	if ( isTrue ) {
    		$window.sessionStorage.setItem("securityLevel", securityLevel);
    		$http.defaults.headers.common['Authorization'] = 'Bearer ' + $scope.mainData.user.authToken;
    	}
    }
    
    // check for login every time this page is launched
    $scope.isLoggedIn();
	  
    // click handler for login button
    $scope.login = () => {
    	
    	// NOTE:  if there are any kind of username and password format limits, validate here.
    	if ( $scope.mainData.user.userName === '' || $scope.mainData.user.password === '' ) {
    		$scope.loginError = true;
    		return;
    	}
    	
		Auth.user.authUser($scope.mainData.user, function(data) {
			
			$scope.loginError = false;
			$scope.mainData.user.authToken = data.token;
			$scope.setIsLoggedIn(true, data.securityLevel);
	    	$scope.mainData.loggedIn = true;
			
		}, function(e) { 
			
			$scope.loginError = true;
			$scope.setIsLoggedIn(false, null);
	    	$scope.mainData.loggedIn = false; 
		} );
 
    };
    
    // click handler for directory selection table
    $scope.setToolType = (event) => {
    	
    	let typeValue = event.currentTarget.attributes.id.nodeValue;
  
        if ( typeValue === "search" ) {
    		$window.sessionStorage.setItem("toolType", "search");
            $location.path('/search');
    	}
     	else {
    		// expand for new pages
    	}
    }
    
    // click handler for logout button
	$scope.logOut = () => {
		
		$scope.setIsLoggedIn(false, null);
		$location.path('/');
	}
	
    $scope.hasSufficientSecurityLevel = (requiredLevel) => {
    	
    	let actualSecurityLevel = $window.sessionStorage.getItem("securityLevel");
    	if ( null == actualSecurityLevel || parseInt(actualSecurityLevel) < requiredLevel ) {
    		alert("You do not have sufficient security permissions to proceed.");
    		return false;
    	}
    	
    	return true;
    }
    

  }]);