Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- const express = require("express");
- const router = express.Router();
- const gravatar = require("gravatar");
- const bcrypt = require("bcrypt");
- const jwt = require("jsonwebtoken");
- const keys = require("../../config/keys"); // sada smo pristupili tajni
- const passport = require("passport");
- // ucitaj validaciju inputa
- const validateRegisterInput = require("../../validation/register");
- const User = require("../../models/User");
- router.get("/test", (req, res) => res.json({ poruka: "Korisnici nam rade!"}));
- router.post("/register", (req, res) => {
- const { errors, isValid } = validateRegisterInput(req.body);
- // ovde validujemo sva polja
- if(!isValid) {
- return res.status(400).json(errors);
- }
- User.findOne({ email: req.body.email })
- .then(user => {
- if (user) {
- return res.status(400).json({ email: "e-mail postoji!"});
- } else {
- const avatar = gravatar.url(req.body.email, {
- s: "200", // velicina
- r: "pg", // rating
- d: "mm" // default
- });
- const newUser = new User({
- name: req.body.name,
- email: req.body.email,
- avatar,
- password: req.body.password
- });
- bcrypt.genSalt(10, (err, salt) => {
- bcrypt.hash(newUser.password, salt, (err, hash) => {
- if(err) throw err;
- newUser.password = hash;
- newUser.save().then(user => res.json(user))
- .catch(err => console.log(err));
- });
- });
- }
- });
- });
- // login korisnika
- router.post('/login', (req, res) => {
- const email = req.body.email;
- const password = req.body.password;
- User.findOne({ email }).then(user => {
- if(!user) {
- return res.status(404).json({ email: "Korisnik nije nadjen!" });
- }
- bcrypt.compare(password, user.password).then(isMatch => {
- if(isMatch){
- // res.json({ Poruka: "Uspesno logovanje!" });
- // Sada cemo da poredimo korisnika
- const payload = { id: user.id, name: user.name, avatar: user.avatar };
- // Sada cemo da potpisemo token
- jwt.sign(payload, keys.secretOrKey, { expiresIn: 3600 }, (err, token) => {
- res.json({ success: true, token: "Bearer " + token });
- });
- } else {
- return res.status(400).json({ Poruka: "Password nije tacan!" });
- }
- });
- });
- });
- // zasticena, privatna ruta korisnika
- router.get("/current",
- passport.authenticate("jwt", { session: false }),
- (req, res) => {
- res.json({
- id: req.user.id,
- name: req.user.name,
- email: req.user.email
- });
- });
- module.exports = router;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement