Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- const express = require('express');
- const path = require('path');
- const bodyParser = require('body-parser');
- const index = require('./routes/index');
- const users = require('./routes/users');
- // passport jwt
- var _ = require("lodash");
- var jwt = require('jsonwebtoken');
- var passport = require("passport");
- var passportJWT = require("passport-jwt");
- var JwtStrategy = require('passport-jwt').Strategy,
- ExtractJwt = require('passport-jwt').ExtractJwt;
- var listOfUsers = [
- {
- id: 1,
- name: 'jonathanmh',
- password: '%2yx4'
- },
- {
- id: 2,
- name: 'test',
- password: 'test'
- }
- ];
- var jwtOptions = {}
- jwtOptions.jwtFromRequest = ExtractJwt.fromAuthHeaderAsBearerToken();
- jwtOptions.secretOrKey = 'secret';
- jwtOptions.issuer = 'accounts.examplesoft.com';
- jwtOptions.audience = 'yoursite.net';
- passport.use(new JwtStrategy(jwtOptions, function(jwt_payload, done) {
- var user = listOfUsers[_.findIndex(listOfUsers, {id: jwt_payload.id})];
- if (user) {
- return done(null, user);
- } else {
- return done(null, false);
- // or you could create a new account
- }
- }));
- var app = express();
- app.use(passport.initialize());
- app.use(bodyParser.urlencoded({
- extended: true
- }));
- app.use(bodyParser.json())
- app.post("/login", function(req, res) {
- if(req.body.name && req.body.password){
- var name = req.body.name;
- var password = req.body.password;
- }
- // usually this would be a database call:
- var user = listOfUsers[_.findIndex(listOfUsers, {name: name})];
- if (user===undefined) {
- console.log("sorry, can't find user!");
- res.status(401).json({message:"sorry, can't find user!"});
- }
- if( ! user ){
- console.log({message: "no such user found"});
- res.status(401).json({message:"no such user found"});
- }
- if(user.password === req.body.password) {
- var payload = {id: user.id};
- var token = jwt.sign(payload, jwtOptions.secretOrKey);
- res.json({message: "ok", payload: payload, token: token});
- console.log("token is:" + token + " payload id is:" + payload.id);
- //res.redirect('/profile');
- } else {
- console.log("passwords did not match");
- res.status(401).json({message:"passwords did not match"});
- }
- });
- app.get("/profile", passport.authenticate('Bearer', { session: false }), function(req, res){
- res.json({message: "User profile. Success! You can not see this without a token"});
- });
- app.get("/secretDebug",
- function(req, res, next){
- console.log(req.get('Authorization'));
- next();
- }, function(req, res){
- res.json("debugging");
- });
- // passport jwt
- const port = 3000;
- //const app = express();
- app.set('views', path.join(__dirname, 'views'));
- app.set('view engine', 'ejs');
- app.engine('html', require('ejs').renderFile);
- //app.use(bodyParser.json());
- //app.use(bodyParser.urlencoded({ extended: false }));
- app.use(express.static(__dirname + '/client/dist/'));
- app.use('/', index);
- app.use('/api', users);
- app.listen(port, function(){
- console.log('Server is running on port ' +port);
- });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement