Advertisement
Guest User

Untitled

a guest
Dec 1st, 2015
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.36 KB | None | 0 0
  1.  
  2. var bcrypt = require('bcrypt-nodejs');
  3. var express = require('express');
  4. var User = require('./models/user');
  5. var Room = require('./models/room');
  6. var jwt = require('jsonwebtoken'); // used to create, sign, and verify tokens
  7. var cookieParser = require('cookie-parser') // get cookie
  8. mongoose = require('mongoose');
  9. ObjectId = mongoose.Types.ObjectId;
  10. //API---------------------------
  11. module.exports = function(app){
  12. var apiRoutes = express.Router();
  13.  
  14. app.get('/', function(req, res) {
  15. console.log('TELA DE LOGIN ');
  16. res.sendfile('./public/views/login/index.html');
  17. });
  18.  
  19. app.post('/user/cadastrar', function(req, res) {
  20. var user = req.body;
  21. user.password = bcrypt.hashSync(user.password);
  22. User.create(user,function(err,user){
  23. if(err)
  24. res.send(err);
  25. User.find(user,function(err,user){
  26. res.json(user);
  27. })
  28. });
  29. });
  30.  
  31. app.get('/dashboard',isAuthenticated, function(req, res) {
  32. console.log(req.decoded.name+' ACESSOU DASHBOARD');
  33. res.sendfile('./public/views/dashboard/index.html');
  34. });
  35.  
  36. app.get('/views/*',function(req, res) {
  37. res.redirect('/');
  38. });
  39.  
  40.  
  41. // todas as rotas aqui são iniciadas com /api
  42. //===========================================================================================================
  43. function isAuthenticated(req, res, next) {
  44. console.log(req.originalUrl+': VERIFICANDO LOGIN');
  45. // Verifica se existe o token
  46. var token = req.body.token || req.query.token || req.headers['x-access-token'] || req.cookies.scopeToken;
  47. if (token) {
  48. // verifies secret and checks exp
  49. jwt.verify(token, app.get('superSecret'), function(err, decoded) {
  50. if (err) {
  51. console.log('VERIFICAÇÃO NEGADA - TOKEN FALSO');
  52. return res.json({ success: false, message: 'Failed to authenticate token.' });
  53. } else {
  54. console.log('USUARIO ACEITO!')
  55. // if everything is good, save to request for use in other routes
  56. req.decoded = decoded;
  57.  
  58. next();
  59. }
  60. });
  61. } else {
  62. console.log('VERIFICAÇÃO NEGADA - SEM TOKEN');
  63. res.redirect('/');
  64. }
  65. };
  66.  
  67. //Gera um token de autenticação apra um usuario
  68. apiRoutes.post('/auth', function(req, res) {
  69. console.log('Criando token...');
  70. console.log(req.body)
  71. // find the user
  72. User.findOne({
  73. login: req.body.login
  74. }, function(err, user) {
  75. if (err){
  76. resp.json(err);
  77. }
  78.  
  79. if (!user) {
  80. res.json({ success: false, message: 'Authentication failed. User not found.' });
  81. console.log('Token nao gerado! -- usuario inexistente');
  82. } else if (user) {
  83. // check if password matches
  84. if(!bcrypt.compareSync(req.body.password, user.password)){
  85. console.log('Token nao gerado!');
  86. res.json({ success: false, message: 'Authentication failed. Wrong password.' });
  87. } else {
  88. //if user is found and password is right
  89. // create a token
  90. var token = jwt.sign(user, app.get('superSecret'), {
  91. expiresIn: 1440 // expires in 24 hours
  92. });
  93. console.log('Token gerado!');
  94. // return the information including token as JSON
  95. res.json({
  96. success: true,
  97. message: 'Enjoy your token!',
  98. token: token
  99. });
  100. }
  101. }
  102. });
  103. });
  104.  
  105.  
  106. //Obtem informações do usuário
  107. apiRoutes.get('/me',isAuthenticated, function(req, res) {
  108. console.log('## API/ME ###')
  109. res.json({user:req.decoded})
  110. });
  111.  
  112.  
  113. //Obtem todas as salas do aplicativo
  114. apiRoutes.get('/rooms',isAuthenticated,function(req,res){
  115. var query = Room.find({});
  116. query.exec(function(err, rooms){
  117. if(err)
  118. res.send(err);
  119.  
  120. // If no errors are found, it responds with a JSON of all users
  121. res.json(rooms);
  122. });
  123. });
  124.  
  125. //Cadastra uma sala no aplicativo
  126. apiRoutes.post('/room',isAuthenticated,function(req,res){
  127.  
  128. var sala = req.body;
  129. // Recebo um Json desta forma, preciso transformar as informações
  130. // {
  131. // "title":"title",
  132. // "lat":"lat"
  133. // "lng":"lng"
  134. // }
  135.  
  136. var newSala = {
  137. "title": sala.title,
  138. "location": {
  139. "type": "Point",
  140. coordinates: [sala.lat,sala.lng]
  141. }
  142. }
  143.  
  144. Room.create(newSala,function(err,room){
  145. if(err)
  146. res.send(err);
  147. Room.find(room,function(err,room){
  148. res.json(room);
  149. })
  150. });
  151. });
  152.  
  153. apiRoutes.get('/room',isAuthenticated,function(req,res){
  154. id = req.query.id;
  155. console.log(id);
  156.  
  157. Room.findOne(
  158. {"_id": ObjectId.fromString(id)}
  159. ,function(err,room){
  160.  
  161. if(err)
  162. {
  163. res.json(err.message)
  164. }else{
  165. console.log('sala encontrada');
  166. console.log(room);
  167. res.json(room)
  168. }
  169. });
  170.  
  171. })
  172.  
  173.  
  174. app.use('/api', apiRoutes);
  175. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement