(function(window, angular){
	
	angular.module('sn.$sp').decorator('glideUserSession', function($delegate, $q, urlTools, $http){
		
		var loadCurrentUser = $delegate.loadCurrentUser;

		function loadCurrentUserWithGuest() {
			var deferred = $q.defer();
			var src = urlTools.getURL('get_user');
			$http.get(src).then(function(response) {
				loadCurrentUser().then(function(user){
					deferred.resolve(user);
				});
			}, function(){
				deferred.resolve(new GlideUser({
					firstName: 'guest',
					lastName: 'guest',
					userName: 'guest',
					roles: [],
					email: 'guest@guest.com'
				}));
			});			 

			return deferred.promise;
		}

		$delegate.loadCurrentUser = loadCurrentUserWithGuest;

		return $delegate;
	});

})(window, angular);