This will :
- intercept all the requests done in the app before your user logs in
- broadcasts a message upon reception of a 401 response
- after login is confirmed, will receive a broadcast and retry the previously pending requests
- allows you to configure $http for the next requests in your app (for example, you can add a header, like a token for your API)
Register this module in your app :
var app = angular.module('app', [ 'HttpAuthInterceptor' ]);
And then in your user service :
app.service('UserService', [ '$http', '$cookies', 'AuthInterceptorService', 'ConstantsService',
function($rootScope, $http, $cookies, AuthInterceptorService, ConstantsService) {
var service = {
(...)
/*
* Call this function when the user enters his login and password
*/
checkLoginAndPassword : function(login, password, rememberMe) {
$http.post('/user/login', {
'login' : login,
'password' : password,
'rememberMe' : rememberMe
}).success(function(data, status, headers, config) {
if (data.success) {
var xAuthorization = data.xAuthorization;
AuthInterceptorService.loginConfirmed('success', function(config) {
config.headers["X-Authorization"] = xAuthorization;
return config;
});
}
}
}