Advertisement
Guest User

Untitled

a guest
Jun 17th, 2019
129
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.31 KB | None | 0 0
  1. router.post('/register', (req, res, next) => {
  2. passport.authenticate('register', (err, user, info) => {
  3. if(err){
  4. console.log(err)
  5. }
  6. if(info !== undefined){
  7. console.log(info.message)
  8. res.status(403).send(info.message)
  9. }else{
  10. req.logIn(user, err => {
  11. const data = {
  12. username: req.body.username.trim(),
  13. password: req.body.password.trim(),
  14. email: req.body.email.trim()
  15. }
  16. console.log(data);
  17. User.forge({
  18. username: data.username
  19. }).fetch().then( (user) => {
  20.  
  21. console.log('user creatd in db');
  22. res.status(200).send({
  23. message:'user created'
  24. })
  25. })
  26. })
  27. }
  28. })(req, res, next);
  29. });
  30.  
  31. import passport from 'passport';
  32. import LocalStrategy from 'passport-local';
  33. import User from '../models/User';
  34. import bcrypt from 'bcrypt';
  35. import JWTstrag from 'passport-jwt';
  36. import ExtracJWT from 'passport-jwt';
  37.  
  38. const JWTstrategy = JWTstrag.Strategy
  39. const ExtractJWT = ExtracJWT.ExtractJwt
  40. const Local = LocalStrategy.Strategy
  41.  
  42.  
  43. const opts = {
  44. jwtFromRequest: ExtractJWT.fromAuthHeaderWithScheme('JWT'),
  45. secretOrKey: process.env.JWT_SECRET,
  46. };
  47.  
  48.  
  49.  
  50. passport.use('jwt', new JWTstrategy(opts, (jwt_payload, done) => {
  51. try{
  52. User.forge({username: jwt_payload._id})
  53. .fetch()
  54. .then( (user) => {
  55. if(user){
  56. console.log('user found in db in passport');
  57. done(null, user)
  58. }else{
  59. console.log('user not found in db');
  60. done(null, false)
  61. }
  62. })
  63. } catch(err){
  64. done(err)
  65. }
  66.  
  67. }))
  68.  
  69.  
  70. passport.use(
  71. 'register',
  72. new Local(
  73. {
  74. usernameField: 'username',
  75. passwordField: 'password',
  76. // passReqToCallback: true,
  77. session: false,
  78. },
  79. (req, username, password, done) => {
  80. try {
  81. User.forge({username: username}, {email: req.body.email}).fetch().then(user => {
  82. if (user != null) {
  83. console.log('username or email already taken');
  84. return done(null, false, {
  85. message: 'username or email already taken',
  86. });
  87. } else {
  88. bcrypt.hash(password, 12).then(hashedPassword => {
  89. const user = new User({
  90. username: req.body.username,
  91. password: hashedPassword,
  92. email: req.body.email
  93. })
  94. user.save().then( () => {
  95. res.status(200).send('user created')
  96. return done(null, user);
  97. })
  98. });
  99. }
  100. });
  101. } catch (err) {
  102. return done(err);
  103. }
  104. },
  105. ),
  106. );
  107.  
  108. // passport.use(new Local ( (username, password, done) => {
  109. // User.findOne({username: username} , (err, user) =>{
  110. // if(err){
  111. // return done(err)
  112. // }
  113. // if(!user){
  114. // return done(null, false, {message: "Incorrect username."})
  115. // }
  116.  
  117. // if(!user.validPassword(password)){
  118. // return done(null, false, {message: 'Incorrect password'})
  119. // }
  120.  
  121. // return done (null, user)
  122. // })
  123. // }))
  124.  
  125.  
  126. passport.serializeUser(function(user, done) {
  127. done(null, user.id);
  128. });
  129.  
  130. passport.deserializeUser(function(user, done) {
  131. User
  132. .forge({id: user})
  133. .fetch()
  134. .then((usr) => {
  135. done(null, usr);
  136. })
  137. .catch((err) => {
  138. done(err);
  139. });
  140. });
  141.  
  142. import 'dotenv/config';
  143. import cors from 'cors';
  144. import express from 'express';
  145. import logger from 'morgan';
  146. import path from 'path';
  147. import bodyParser from 'body-parser';
  148. import cookieParser from 'cookie-parser';
  149. import userRoute from './routes/users';
  150. import passport from 'passport';
  151. import session from 'express-session';
  152. import './config/passport';
  153.  
  154. const app = express();
  155.  
  156. app.use(cors());
  157. app.use(logger('dev'));
  158. // For React Stuff if need be
  159. // app.use(express.static(path.join(__dirname, 'public')));
  160. app.use(express.static(path.join(__dirname, 'build')));
  161. app.use(cookieParser());
  162. app.use(bodyParser.json());
  163. // you need body parser urlencoded so passport will not give a Missing Credentials error
  164. app.use(bodyParser.urlencoded({ extended:false}));
  165.  
  166. app.use(session({
  167. saveUninitialized: false,
  168. resave:false,
  169. cookie: { maxAge: 30 * 24 * 60 * 60 * 1000 }, // 30 days
  170. secret : process.env.JWT_SECRET,
  171.  
  172. }));
  173.  
  174. app.use(passport.initialize());
  175. app.use(passport.session());
  176.  
  177. app.get('/', (req, res) => {
  178. res.send('Hello World!');
  179. });
  180. app.use('/users', userRoute);
  181.  
  182. app.use(() => (req, res, next) =>{
  183. res.locals.user = req.user; // This is the important line
  184. // req.session.user = user
  185. console.log(res.locals.user);
  186. next();
  187. });
  188.  
  189.  
  190. //build mode
  191. // app.get('*', (req, res) => {
  192. // res.sendFile(path.join(__dirname+'/client/public/index.html'));
  193. // })
  194.  
  195.  
  196. // module.parent prevents the
  197. // Node / Express: EADDRINUSE, Address already in use error when unit testing
  198. if(!module.parent){
  199. app.listen(process.env.PORT, () =>
  200. console.log(`Example app listening on port ${process.env.PORT}!`),
  201. );
  202. }
  203.  
  204. export default app;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement