Estou com uma dúvida referente a $resource do AngularJS. Vou tentar explicar o fluxo:
Fiz um mecanismo em meu backEnd de geração de Token e RefreshToken. Sendo que o Token expira a cada 1 hora, porém se o client possuir o refreshToken no momento da requisição que devolve 401 poderá enviar o refrehToken e capturar um novo token para mais uma hora de consumo.
Consegui fazer todos os mecanismos, só não estou conseguindo no momento da requisição em que ela devolve 401 eu chamar meu minha API de Refresh token e novamente chamar a primeira requisição (a mesma que gerou o erro 401). Segue o código:
factoryResource.GET = function (parametros, callback) {
var acao = resourceAux.get(parametros);
return processPromise(acao, callback);
};
var processPromise = function (call, callback) {
var callOriginal = angular.copy(call);
//SUCESSO GLOBAL DE UMA AÇÃO.
function SUCESSO(result){
if (result.hasOwnProperty("messages")) {
mensagensFactory.generateMessages(result.messages);
}
if (!angular.isUndefined(callback) &&
result.hasOwnProperty("data")
) {
callback(result.data);
}
};
//ERRO SEM REFRESH
function ERROR(result){
if(result.status === 401){
refresh();
processPromise(callOriginal, callback);
} else {
if (result.data) {
if (result.data.hasOwnProperty("messages")) {
mensagensFactory.generateMessages(result.data.messages);
}
if (result.data.hasOwnProperty("data")) {
if (callback) {
callback(result.data.data);
}
}
}
}
};
//DEFINIÇÃO DE PROMISSE.
call.$promise
.then(SUCESSO)
.catch(ERROR);
return call.$promise;
};
function refresh() {
// Colocar aqui implementação de refresh Token.
}
O código está meio bagunçado, por que eu estou testando vários métodos.
Alguém poderia me ajudar?