Advertisement
Guest User

Untitled

a guest
Jul 20th, 2019
169
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.78 KB | None | 0 0
  1. import express from 'express';
  2. import passport from 'passport';
  3. import bcrypt from 'bcrypt';
  4. import jwt from 'jsonwebtoken';
  5. import { Strategy as LocalStrategy } from 'passport-local';
  6. import { ExtractJwt, Strategy as JwtStrategy } from 'passport-jwt';
  7.  
  8. import connexion from './conf';
  9.  
  10. const router = express.Router();
  11.  
  12. passport.use('local', new LocalStrategy({
  13. usernameField: 'login',
  14. passwordField: 'password',
  15. session: false,
  16. }, (login, password, done) => {
  17. try {
  18. connexion.query('select login, password from users where login = ?', [login], (err, results) => {
  19. if (err) {
  20. return done(err, false);
  21. } else if (results.lenght === 0) {
  22. return done(null, false);
  23. } else if (bcrypt.compareSync(password, results[0].password)) {
  24. const user = {
  25. login: results[0].login,
  26. };
  27. return done(null, user);
  28. }
  29. return done(null, false);
  30. });
  31. } catch (e) {
  32. console.error(e);
  33. }
  34. }));
  35.  
  36. // Jason Web Token
  37. passport.use(new JwtStrategy({
  38. jwtFromRequest: ExtractJwt.fromAuthHeaderAsBearerToken(),
  39. secretOrKey: 'lc_passport',
  40. }, (jwtPayload, cb) => cb(null, jwtPayload)));
  41.  
  42. router.post('/signup', (req, res) => {
  43. const user = {
  44. ...req.body,
  45. password: bcrypt.hashSync(req.body.password, 10),
  46. };
  47. connexion.query('INSERT INTO users SET ?', user, (err) => {
  48. if (err) {
  49. console.error(err);
  50. res.sendStatus(500);
  51. } else {
  52. res.sendStatus(201);
  53. }
  54. });
  55. });
  56.  
  57. router.post('/signin', (req, res) => {
  58. passport.authenticate('local', (err, user) => {
  59. if (err) {
  60. console.error(err);
  61. res.sendStatus(500);
  62. }
  63. if (!user) {
  64. return res.sendStatus(401);
  65. }
  66. const token = jwt.sign(user, 'lc_passport');
  67. return res.json({ token });
  68. })(req, res);
  69. });
  70.  
  71. module.exports = router;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement