Advertisement
Guest User

Untitled

a guest
Jan 15th, 2016
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.42 KB | None | 0 0
  1. var express = require('express');
  2. var app = express();
  3. var bodyParser = require('body-parser');
  4. var morgan = require('morgan');
  5. var mongoose = require('mongoose');
  6. var passport = require('passport');
  7. var config = require('./config/database'); // get db config file
  8. var User = require('./app/models/user'); // get the mongoose model
  9. var Products = require('./app/models/products'); //get the mongoose model
  10. var Makeissue = require('./app/models/makeissue'); //get the mongoose model
  11. var port = process.env.PORT || 8080;
  12. var jwt = require('jwt-simple');
  13.  
  14. // get our request parameters
  15. app.use(bodyParser.urlencoded({ extended: false }));
  16. app.use(bodyParser.json());
  17.  
  18. // log to console
  19. app.use(morgan('dev'));
  20.  
  21. // Use the passport package in our application
  22. app.use(passport.initialize());
  23.  
  24. // demo Route (GET http://localhost:8080)
  25. app.get('/', function(req, res) {
  26. res.send('The API is at http://localhost:' + port + '/api');
  27. });
  28.  
  29. // connect to database
  30. mongoose.connect(config.database);
  31.  
  32. // pass passport for configuration
  33. require('./config/passport')(passport);
  34.  
  35. // bundle our routes
  36. var apiRoutes = express.Router();
  37.  
  38.  
  39. // create a new user account (POST http://localhost:8080/api/signup)
  40. apiRoutes.post('/signup', function(req, res) {
  41. if (!req.body.name || !req.body.password || !req.body.email) {
  42. res.json({success: false, msg: 'Please pass name and password and email.'});
  43. } else {
  44. var newUser = new User({
  45. name: req.body.name,
  46. password: req.body.password,
  47. email: req.body.email
  48. });
  49. // save the user
  50. newUser.save(function(err) {
  51. if (err) {
  52. return res.json({success: false, msg: 'Username already exists.'});
  53. }
  54. res.json({success: true, msg: 'Successful created new user.'});
  55. });
  56. }
  57. });
  58.  
  59. // route to authenticate a user (POST http://localhost:8080/api/authenticate)
  60. apiRoutes.post('/authenticate', function(req, res) {
  61. User.findOne({
  62. name: req.body.name
  63. }, function(err, user) {
  64. if (err) throw err;
  65.  
  66. if (!user) {
  67. res.send({success: false, msg: 'Authentication failed. User not found.'});
  68. } else {
  69. // check if password matches
  70. user.comparePassword(req.body.password, function (err, isMatch) {
  71. if (isMatch && !err) {
  72. // if user is found and password is right create a token
  73. var token = jwt.encode(user, config.secret);
  74. // return the information including token as JSON
  75. res.json({success: true, token: 'JWT ' + token});
  76. } else {
  77. res.send({success: false, msg: 'Authentication failed. Wrong password.'});
  78. }
  79. });
  80. }
  81. });
  82. });
  83.  
  84.  
  85. // create a new Product (POST http://localhost:8080/api/productsignup)
  86. apiRoutes.post('/resources/productsignup', function(req, res) {
  87. if (!req.body.name || !req.body.serialnumber) {
  88. res.json({success: false, msg: 'Please pass name and serial number.'});
  89. } else {
  90. var newProducts = new Products({
  91. name: req.body.name,
  92. serialnumber: req.body.serialnumber
  93. });
  94. // save the Product
  95. newProducts.save(function(err) {
  96. if (err) {
  97. return res.json({success: false, msg: 'Product already exists.'});
  98. }
  99. res.json({success: true, msg: 'Successful created new Product.'});
  100. });
  101. }
  102. });
  103.  
  104. apiRoutes.post('/resources/createpost', function(req, res) {
  105. if (!req.body.issue) {
  106. res.json({success: false, msg: 'Please pass a issue.'});
  107. } else {
  108. var newMakeissue = new Makeissue({
  109. issue: req.body.issue
  110. });
  111. // save the Product
  112. newMakeissue.save(function(err) {
  113. if (err) {
  114. return res.json({success: false, msg: 'Post already exists.'});
  115. }
  116. res.json({success: true, msg: 'Successful created new post.'});
  117. });
  118. }
  119. });
  120.  
  121.  
  122.  
  123. //display a specific product stored in database
  124. apiRoutes.get('/resources/productinfo/:id' , function(req, res, next) {
  125. res.send({id:req.params.id});
  126. });
  127.  
  128.  
  129.  
  130.  
  131. // route to a restricted info (GET http://localhost:8080/api/memberinfo)
  132. apiRoutes.get('/memberinfo', passport.authenticate('jwt', { session: false}), function(req, res) {
  133. var token = getToken(req.headers);
  134. if (token) {
  135. var decoded = jwt.decode(token, config.secret);
  136. User.findOne({
  137. name: decoded.name
  138. }, function(err, user) {
  139. if (err) throw err;
  140.  
  141. if (!user) {
  142. return res.status(403).send({success: false, msg: 'Authentication failed. User not found.'});
  143. } else {
  144. res.json({success: true, msg: 'Welcome in the member area ' + user.name + '!'});
  145. }
  146. });
  147. } else {
  148. return res.status(403).send({success: false, msg: 'No token provided.'});
  149. }
  150. });
  151.  
  152. getToken = function (headers) {
  153. if (headers && headers.authorization) {
  154. var parted = headers.authorization.split(' ');
  155. if (parted.length === 2) {
  156. return parted[1];
  157. } else {
  158. return null;
  159. }
  160. } else {
  161. return null;
  162. }
  163. };
  164.  
  165.  
  166. // connect the api routes under /api/*
  167. app.use('/api', apiRoutes);
  168. module.exports = apiRoutes;
  169.  
  170.  
  171. // Start the server
  172. app.listen(port);
  173. console.log('http://localhost:' + port);
  174.  
  175. module.exports = {
  176. 'secret': 'di.ionio.gr',
  177. 'database': 'mongodb://localhost/firstapp'
  178. };
  179.  
  180. {
  181. "name": "firstapp",
  182. "main": "server.js",
  183. "dependencies": {
  184. "bcrypt": "^0.8.5",
  185. "body-parser": "~1.9.2",
  186. "express": "~4.9.8",
  187. "jwt-simple": "^0.3.1",
  188. "mongoose": "~4.2.4",
  189. "mongodb" : "~1.2.5",
  190. "morgan": "~1.5.0",
  191. "passport": "^0.3.0",
  192. "passport-jwt": "^1.2.1"
  193. }
  194. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement