Advertisement
Guest User

Untitled

a guest
Aug 18th, 2017
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.14 KB | None | 0 0
  1. var express = require('express');
  2. var router = express.Router();
  3. var passport = require('passport');
  4. var User = require('../models/user');
  5. var Verify = require('./verify');
  6.  
  7. /* GET users listing. */
  8. router.get('/', function(req, res, next) {
  9. res.send('respond with a resource');
  10. });
  11.  
  12. router.post('/register', function(req, res) {
  13. User.register(new User({ username : req.body.username,email: req.body.email, phone:req.body.phone }),req.body.password,
  14. function(err, user) {
  15. if (err) {
  16. return res.status(500).json({err: err});
  17. }
  18. passport.authenticate('local')(req, res, function () {
  19. return res.status(200).json({status: 'Registration Successful!'});
  20. });
  21. });
  22. });
  23.  
  24. router.post('/login', function(req, res, next) {
  25. passport.authenticate('local', function(err, user, info) {
  26. if (err) {
  27. return next(err);
  28. }
  29. if (!user) {
  30. return res.status(401).json({
  31. err: info
  32. });
  33. }
  34. req.logIn(user, function(err) {
  35. if (err) {
  36. return res.status(500).json({
  37. err: 'Could not log in user'
  38. });
  39. }
  40.  
  41. var token = Verify.getToken(user);
  42. res.status(200).json({
  43. status: 'Login successful!',
  44. success: true,
  45. token: token
  46. });
  47. });
  48. })(req,res,next);
  49. });
  50.  
  51. router.get('/logout', function(req, res) {
  52. req.logout();
  53. res.status(200).json({
  54. status: 'Bye!'
  55. });
  56. });
  57.  
  58. module.exports = router;
  59.  
  60. var User=require('../models/user');
  61. var jwt = require('jsonwebtoken'); // used to create, sign, and verify tokens
  62. var config = require('../config.js');
  63.  
  64. exports.getToken = function (user) {
  65. return jwt.sign(user, config.secretKey, {
  66. expiresIn: 3600
  67. });
  68. };
  69.  
  70. exports.verifyOrdinaryUser = function (req, res, next) {
  71. // check header or url parameters or post parameters for token
  72. var token = req.body.token || req.query.token || req.headers['x-access-token'];
  73.  
  74. // decode token
  75. if (token) {
  76. // verifies secret and checks exp
  77. jwt.verify(token, config.secretKey, function (err, decoded) {
  78. if (err) {
  79. var err = new Error('You are not authenticated!');
  80. err.status = 401;
  81. return next(err);
  82. } else {
  83. // if everything is good, save to request for use in other routes
  84. req.decoded = decoded;
  85. next();
  86. }
  87. });
  88. } else {
  89. // if there is no token
  90. // return an error
  91. var err = new Error('No token provided!');
  92. err.status = 403;
  93. return next(err);
  94. }
  95. };
  96.  
  97. module.exports = {
  98. 'secretKey': '12345-67890-09876-54321',
  99. 'mongoUrl' : 'mongodb://localhost:27017/conFusion'
  100. }
  101.  
  102. var mongoose = require('mongoose');
  103. var Schema = mongoose.Schema;
  104. var passportLocalMongoose = require('passport-local-mongoose');
  105. var User= new Schema({
  106.  
  107. username:{
  108. type:String,
  109. required:true,
  110. unique:true
  111. },
  112. email:{
  113. type:String,
  114. required:true,
  115. unique:true
  116. },
  117. phone:{
  118. type:Number,
  119. required:true,
  120. unique:true
  121. },
  122. password:{
  123. type:String
  124. }
  125.  
  126. });
  127.  
  128. User.plugin(passportLocalMongoose);
  129.  
  130. module.exports = mongoose.model('User',User);
  131.  
  132. var express = require('express');
  133. var path = require('path');
  134. var favicon = require('serve-favicon');
  135. var logger = require('morgan');
  136. var cookieParser = require('cookie-parser');
  137. var bodyParser = require('body-parser');
  138. var mongoose = require('mongoose');
  139. var passport = require('passport');
  140. var LocalStrategy = require('passport-local').Strategy;
  141.  
  142. var config = require('./config');
  143.  
  144. mongoose.connect(config.mongoUrl);
  145. var db = mongoose.connection;
  146. db.on('error', console.error.bind(console, 'connection error:'));
  147. db.once('open', function () {
  148. console.log("Connected correctly to server");
  149. });
  150. var users = require('./routes/users');
  151. var app = express();
  152.  
  153. // view engine setup
  154. app.set('views', path.join(__dirname, 'views'));
  155. app.set('view engine', 'jade');
  156.  
  157. // uncomment after placing your favicon in /public
  158. //app.use(favicon(path.join(__dirname, 'public', 'favicon.ico')));
  159. app.use(logger('dev'));
  160. app.use(bodyParser.json());
  161. app.use(bodyParser.urlencoded({ extended: false }));
  162. app.use(cookieParser());
  163. app.use(express.static(path.join(__dirname, 'public')));
  164. var User = require('./models/user');
  165. app.use(passport.initialize());
  166. passport.use(new LocalStrategy(User.authenticate()));
  167. passport.serializeUser(User.serializeUser());
  168. passport.deserializeUser(User.deserializeUser());
  169. app.use('/users', users);
  170. // catch 404 and forward to error handler
  171. app.use(function(req, res, next) {
  172. var err = new Error('Not Found');
  173. err.status = 404;
  174. next(err);
  175. });
  176.  
  177. // error handler
  178. app.use(function(err, req, res, next) {
  179. // set locals, only providing error in development
  180. res.locals.message = err.message;
  181. res.locals.error = req.app.get('env') === 'development' ? err : {};
  182.  
  183. // render the error page
  184. res.status(err.status || 500);
  185. res.render('error');
  186. });
  187. app.listen(3000,function(){
  188. console.log("Server Listening on 3000");
  189. });
  190. module.exports = app;
  191.  
  192. +app.js
  193. +config.js
  194. +routes(directory)
  195. ++user.js
  196. ++verify.js
  197. +models(directory)
  198. ++user.js
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement