· 8 years ago · Aug 18, 2017, 07:16 AM
1var express = require('express');
2var router = express.Router();
3var passport = require('passport');
4var User = require('../models/user');
5var Verify = require('./verify');
6
7/* GET users listing. */
8router.get('/', function(req, res, next) {
9 res.send('respond with a resource');
10});
11
12router.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
24router.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
51router.get('/logout', function(req, res) {
52 req.logout();
53 res.status(200).json({
54 status: 'Bye!'
55 });
56});
57
58module.exports = router;
59
60var User=require('../models/user');
61var jwt = require('jsonwebtoken'); // used to create, sign, and verify tokens
62var config = require('../config.js');
63
64exports.getToken = function (user) {
65 return jwt.sign(user, config.secretKey, {
66 expiresIn: 3600
67 });
68};
69
70exports.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
97module.exports = {
98 'secretKey': '12345-67890-09876-54321',
99 'mongoUrl' : 'mongodb://localhost:27017/conFusion'
100}
101
102var mongoose = require('mongoose');
103var Schema = mongoose.Schema;
104var passportLocalMongoose = require('passport-local-mongoose');
105var User= new Schema({
106
107username:{
108 type:String,
109 required:true,
110 unique:true
111 },
112email:{
113 type:String,
114 required:true,
115 unique:true
116 },
117phone:{
118 type:Number,
119 required:true,
120 unique:true
121 },
122password:{
123 type:String
124 }
125
126});
127
128User.plugin(passportLocalMongoose);
129
130module.exports = mongoose.model('User',User);
131
132var express = require('express');
133var path = require('path');
134var favicon = require('serve-favicon');
135var logger = require('morgan');
136var cookieParser = require('cookie-parser');
137var bodyParser = require('body-parser');
138var mongoose = require('mongoose');
139var passport = require('passport');
140var LocalStrategy = require('passport-local').Strategy;
141
142var config = require('./config');
143
144mongoose.connect(config.mongoUrl);
145var db = mongoose.connection;
146db.on('error', console.error.bind(console, 'connection error:'));
147db.once('open', function () {
148 console.log("Connected correctly to server");
149});
150var users = require('./routes/users');
151var app = express();
152
153// view engine setup
154app.set('views', path.join(__dirname, 'views'));
155app.set('view engine', 'jade');
156
157// uncomment after placing your favicon in /public
158//app.use(favicon(path.join(__dirname, 'public', 'favicon.ico')));
159app.use(logger('dev'));
160app.use(bodyParser.json());
161app.use(bodyParser.urlencoded({ extended: false }));
162app.use(cookieParser());
163app.use(express.static(path.join(__dirname, 'public')));
164var User = require('./models/user');
165app.use(passport.initialize());
166passport.use(new LocalStrategy(User.authenticate()));
167passport.serializeUser(User.serializeUser());
168passport.deserializeUser(User.deserializeUser());
169app.use('/users', users);
170// catch 404 and forward to error handler
171app.use(function(req, res, next) {
172 var err = new Error('Not Found');
173 err.status = 404;
174 next(err);
175});
176
177// error handler
178app.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});
187app.listen(3000,function(){
188console.log("Server Listening on 3000");
189});
190module.exports = app;
191
192+app.js
193+config.js
194+routes(directory)
195 ++user.js
196 ++verify.js
197+models(directory)
198 ++user.js