Minha aplicação está recebendo o token tudo certinho, faz login e etc, mas quando o angular vai acessar a rota para listar as fotos do back-end a api.lista no arquivo api/foto.js entra no .then mas não realiza o res.json(fotos) . Alguém poderia me ajudar ?
- app/routes/auth.js
module.exports = function(app){
api = app.api.auth;
app.post('/autenticar', api.autenticar);
app.use("/*", api.verificaToken);
}
- app/api/auth.js
var mongoose = require("mongoose");
var jwt = require("jsonwebtoken");
module.exports = function(app){
var api = {};
var model = mongoose.model('Usuario');
api.autenticar = function(req, res){
model.findOne({
login : req.body.login,
senha : req.body.senha
})
.then(function(usuario){
if(!usuario){
console.log("Usuario e senha inválidos");
res.sendStatus(401);
}else{
var token = jwt.sign( {login : usuario.login} , app.get("secret"),{
expiresIn : 86400 // valor em segundo, aqui temos um total de 24 horas
});
res.set('x-access-token', token); // adicionando token no cabeçalho de resposta
res.end(); // enviando a resposta
console.log("Autenticação adicionada a resposta");
}
});
}
api.verificaToken = function(req, res, next){
var token = req.headers["x-access-token"]; // busca o token no header da requisição
console.log("token " + token);
if(token){
console.log("Token recebido, decodificando");
jwt.verify(token, app.get("secret"), function(err, decoded){
if(err){
console.log("token rejeitado");
return res.sendStatus(401);
}
console.log("token aceito");
// guardou o valor decodificado do token na requisição. No caso, o login do usuário.
req.usuario = decoded;
console.log("vai pra controller foto")
next();
});
}else{
console.log("Token não enviado");
return res.sendStatus(401);
}
}
return api;
};
- app/api/foto.js
var mongoose = require("mongoose");
module.exports = function(app){
var api = {};
// solicitando o modelo 'Foto'
var model = mongoose.model('Foto');
api.lista = function(req, res){
console.log("------------- chegou no controller next funcionou -----------------");
console.log(req.headers);
model.find()
.then(function(fotos){
console.log("------------- enviando resposta -----------------");
res.json(fotos);
console.log(res.json(fotos));
console.log("------------- resposta enviada -----------------");
}, function(error){
console.log(error);
res.sendStatus(500);
});
};
api.buscaPorId = function(req, res){
var id = req.params.id;
model.findById(id)
.then(function(foto){
if (!foto) throw new Error('Foto não encontrada');
res.json(foto);
}, function(error){
console.log(error);
res.sendStatus(500);
});
};
api.removePorId = function(req, res){
var id = req.params.id;
model.remove({_id : id})
.then(function(foto){
res.sendStatus(204);
}, function(error){
console.log(error);
res.sendStatus(404);
});
};
api.adiciona = function(req, res){
var foto = req.body;
model.create(req.body)
.then(function(foto){
res.json(foto);
}, function(error){
console.log(error);
res.sendStatus(500);
});
}
api.altera = function(req, res){
model.findByIdAndUpdate(req.params.id, req.body)
.then(function(foto){
res.json(foto);
}, function(error){
console.log(error);
res.sendStatus(500);
});
};
return api;
Repositório: https://gitlab.com/cleber.carvalho/mean-stack