Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- var express = require('express');
- var app = express();
- var bodyParser = require('body-parser');
- var morgan = require('morgan');
- var mongoose = require('mongoose');
- var passport = require('passport');
- var config = require('./config/database'); // get db config file
- var User = require('./app/models/user'); // get the mongoose model
- var Products = require('./app/models/products'); //get the mongoose model
- var Makeissue = require('./app/models/makeissue'); //get the mongoose model
- var port = process.env.PORT || 8080;
- var jwt = require('jwt-simple');
- // get our request parameters
- app.use(bodyParser.urlencoded({ extended: false }));
- app.use(bodyParser.json());
- // log to console
- app.use(morgan('dev'));
- // Use the passport package in our application
- app.use(passport.initialize());
- // demo Route (GET http://localhost:8080)
- app.get('/', function(req, res) {
- res.send('The API is at http://localhost:' + port + '/api');
- });
- // connect to database
- mongoose.connect(config.database);
- // pass passport for configuration
- require('./config/passport')(passport);
- // bundle our routes
- var apiRoutes = express.Router();
- // create a new user account (POST http://localhost:8080/api/signup)
- apiRoutes.post('/signup', function(req, res) {
- if (!req.body.name || !req.body.password || !req.body.email) {
- res.json({success: false, msg: 'Please pass name and password and email.'});
- } else {
- var newUser = new User({
- name: req.body.name,
- password: req.body.password,
- email: req.body.email
- });
- // save the user
- newUser.save(function(err) {
- if (err) {
- return res.json({success: false, msg: 'Username already exists.'});
- }
- res.json({success: true, msg: 'Successful created new user.'});
- });
- }
- });
- // route to authenticate a user (POST http://localhost:8080/api/authenticate)
- apiRoutes.post('/authenticate', function(req, res) {
- User.findOne({
- name: req.body.name
- }, function(err, user) {
- if (err) throw err;
- if (!user) {
- res.send({success: false, msg: 'Authentication failed. User not found.'});
- } else {
- // check if password matches
- user.comparePassword(req.body.password, function (err, isMatch) {
- if (isMatch && !err) {
- // if user is found and password is right create a token
- var token = jwt.encode(user, config.secret);
- // return the information including token as JSON
- res.json({success: true, token: 'JWT ' + token});
- } else {
- res.send({success: false, msg: 'Authentication failed. Wrong password.'});
- }
- });
- }
- });
- });
- // create a new Product (POST http://localhost:8080/api/productsignup)
- apiRoutes.post('/resources/productsignup', function(req, res) {
- if (!req.body.name || !req.body.serialnumber) {
- res.json({success: false, msg: 'Please pass name and serial number.'});
- } else {
- var newProducts = new Products({
- name: req.body.name,
- serialnumber: req.body.serialnumber
- });
- // save the Product
- newProducts.save(function(err) {
- if (err) {
- return res.json({success: false, msg: 'Product already exists.'});
- }
- res.json({success: true, msg: 'Successful created new Product.'});
- });
- }
- });
- apiRoutes.post('/resources/createpost', function(req, res) {
- if (!req.body.issue) {
- res.json({success: false, msg: 'Please pass a issue.'});
- } else {
- var newMakeissue = new Makeissue({
- issue: req.body.issue
- });
- // save the Product
- newMakeissue.save(function(err) {
- if (err) {
- return res.json({success: false, msg: 'Post already exists.'});
- }
- res.json({success: true, msg: 'Successful created new post.'});
- });
- }
- });
- //display a specific product stored in database
- apiRoutes.get('/resources/productinfo/:id' , function(req, res, next) {
- res.send({id:req.params.id});
- });
- // route to a restricted info (GET http://localhost:8080/api/memberinfo)
- apiRoutes.get('/memberinfo', passport.authenticate('jwt', { session: false}), function(req, res) {
- var token = getToken(req.headers);
- if (token) {
- var decoded = jwt.decode(token, config.secret);
- User.findOne({
- name: decoded.name
- }, function(err, user) {
- if (err) throw err;
- if (!user) {
- return res.status(403).send({success: false, msg: 'Authentication failed. User not found.'});
- } else {
- res.json({success: true, msg: 'Welcome in the member area ' + user.name + '!'});
- }
- });
- } else {
- return res.status(403).send({success: false, msg: 'No token provided.'});
- }
- });
- getToken = function (headers) {
- if (headers && headers.authorization) {
- var parted = headers.authorization.split(' ');
- if (parted.length === 2) {
- return parted[1];
- } else {
- return null;
- }
- } else {
- return null;
- }
- };
- // connect the api routes under /api/*
- app.use('/api', apiRoutes);
- module.exports = apiRoutes;
- // Start the server
- app.listen(port);
- console.log('http://localhost:' + port);
- module.exports = {
- 'secret': 'di.ionio.gr',
- 'database': 'mongodb://localhost/firstapp'
- };
- {
- "name": "firstapp",
- "main": "server.js",
- "dependencies": {
- "bcrypt": "^0.8.5",
- "body-parser": "~1.9.2",
- "express": "~4.9.8",
- "jwt-simple": "^0.3.1",
- "mongoose": "~4.2.4",
- "mongodb" : "~1.2.5",
- "morgan": "~1.5.0",
- "passport": "^0.3.0",
- "passport-jwt": "^1.2.1"
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement