Advertisement
Guest User

Untitled

a guest
Sep 21st, 2019
141
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.95 KB | None | 0 0
  1. const express = require("express");
  2. const router = express.Router();
  3. const gravatar = require("gravatar");
  4. const bcrypt = require("bcrypt");
  5. const jwt = require("jsonwebtoken");
  6. const keys = require("../../config/keys"); // sada smo pristupili tajni
  7. const passport = require("passport");
  8.  
  9. // ucitaj validaciju inputa
  10. const validateRegisterInput = require("../../validation/register");
  11.  
  12. const User = require("../../models/User");
  13.  
  14. router.get("/test", (req, res) => res.json({ poruka: "Korisnici nam rade!"}));
  15.  
  16. router.post("/register", (req, res) => {
  17. const { errors, isValid } = validateRegisterInput(req.body);
  18. // ovde validujemo sva polja
  19. if(!isValid) {
  20. return res.status(400).json(errors);
  21. }
  22.  
  23. User.findOne({ email: req.body.email })
  24.  
  25. .then(user => {
  26. if (user) {
  27. return res.status(400).json({ email: "e-mail postoji!"});
  28. } else {
  29.  
  30. const avatar = gravatar.url(req.body.email, {
  31. s: "200", // velicina
  32. r: "pg", // rating
  33. d: "mm" // default
  34. });
  35.  
  36. const newUser = new User({
  37. name: req.body.name,
  38. email: req.body.email,
  39. avatar,
  40. password: req.body.password
  41. });
  42.  
  43. bcrypt.genSalt(10, (err, salt) => {
  44. bcrypt.hash(newUser.password, salt, (err, hash) => {
  45. if(err) throw err;
  46. newUser.password = hash;
  47. newUser.save().then(user => res.json(user))
  48. .catch(err => console.log(err));
  49. });
  50. });
  51. }
  52. });
  53. });
  54. // login korisnika
  55. router.post('/login', (req, res) => {
  56. const email = req.body.email;
  57. const password = req.body.password;
  58.  
  59. User.findOne({ email }).then(user => {
  60. if(!user) {
  61. return res.status(404).json({ email: "Korisnik nije nadjen!" });
  62. }
  63. bcrypt.compare(password, user.password).then(isMatch => {
  64. if(isMatch){
  65. // res.json({ Poruka: "Uspesno logovanje!" });
  66. // Sada cemo da poredimo korisnika
  67. const payload = { id: user.id, name: user.name, avatar: user.avatar };
  68. // Sada cemo da potpisemo token
  69. jwt.sign(payload, keys.secretOrKey, { expiresIn: 3600 }, (err, token) => {
  70. res.json({ success: true, token: "Bearer " + token });
  71. });
  72. } else {
  73. return res.status(400).json({ Poruka: "Password nije tacan!" });
  74. }
  75. });
  76. });
  77. });
  78.  
  79. // zasticena, privatna ruta korisnika
  80. router.get("/current",
  81. passport.authenticate("jwt", { session: false }),
  82. (req, res) => {
  83. res.json({
  84. id: req.user.id,
  85. name: req.user.name,
  86. email: req.user.email
  87. });
  88. });
  89.  
  90. module.exports = router;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement