JWT With Apollo

1. install –save jsonwebtoken
2. import {sign} from ‘jsonwebtoken’
3.

login ()=> { 
				const user = await User.findOne(email:email);

				const valid = await bcrypt.compare(password, user.password)
				
				const refreshToken = sign({userId: user.id, count: user.count}, "asjkd", {expiersIn: "7d"});
				const accessToken = sign({userId: user.id}, "asjkd", {expiersIn: "15min"});
				
				res.cookie("refresh-token", refreshToken, { expires: 60*60*24*7 });
				res.cookie("access-token", accessToken, { expires: 60*15 });
				
				
				return user;
		}

4. Make sure GraphQL settings : “request.credentials: ‘include'”
5. Add middleware in index.js for alter the request header
6. Install –save cookie-parser
7. Import * as cookieParser from ‘cookie-parser’, in index.js file
8. add this cookieparser middleware before the request handler : app.use(cookieParser())
9. get the access-token from cookies . { const accessToken = req.cookies[“access-token”]; console.log(req.cookies) }
10. Verify the access-token
11. if verification is success , then attach the verified userId in request header
12. on the api call verify either the request have the userId or not
13. Get refresh-token from cookies

encryption/decryption : cryptr – https://www.npmjs.com/package/cryptr

more advanced – crypto -https://nodejs.org/api/crypto.html
https://stackoverflow.com/questions/56017239/encrypt-and-decrypt-in-bcryptjs

Passwords encryption/decryption : bcrypt – https://www.npmjs.com/package/bcrypt
https://stackoverflow.com/questions/14871992/encrypt-decrypt-passwords-with-node-js

Event Emitter Example

var EventEmitter = require('events').EventEmitter;

var logger = new EventEmitter();

logger.on('error', function(message) {
	console.log('Error : ' + message)
})

logger.emit('error', 'Spilled Milk')
logger.emit('error', 'Eggs Cracked')


http.createServer(function(request, response) {.....})


var server = http.createServer(); //Classs.http.Server (this is an EventEmitter) with the following events ex..'request'
server.on('request', function(request, response) {.....}) //emitted each time there is a request

server.on('close', function(){....}) //Emitted when the server closes
npm i ndb --global
npm i ndb --save-dev 
"debug": "ndb index.js" // "debug": "ndb --exec babel-node  index.js"
npm run debug

Leave a Reply

Your email address will not be published. Required fields are marked *