fix jwt strategy

This commit is contained in:
Daksh Miglani 2019-01-07 12:48:47 +05:30
parent 3d3b3c8c24
commit 5fd5795f39
No known key found for this signature in database
GPG Key ID: 3214E051E6464009
2 changed files with 22 additions and 11 deletions

View File

@ -1,4 +1,5 @@
import { Strategy } from 'passport-jwt'
import { fixUrl } from '../middleware/fixImageUrlsMiddleware'
const cookieExtractor = (req) => {
var token = null
@ -8,7 +9,7 @@ const cookieExtractor = (req) => {
return token
}
export default () => {
export default (driver) => {
const options = {
jwtFromRequest: cookieExtractor,
secretOrKey: process.env.JWT_SECRET,
@ -17,16 +18,26 @@ export default () => {
}
return new Strategy(options,
(JWTPayload, next) => {
// usually this would be a database call:
// var user = users[_.findIndex(users, {id: JWTPayload.id})]
// TODO: fix https://github.com/Human-Connection/Nitro-Backend/issues/41
/* eslint-disable */
if (true) {
/* eslint-enable */
next(null, {})
async (JWTPayload, next) => {
const session = driver.session();
const result = await session.run(
'MATCH (user:User {id: $userId}) ' +
'RETURN user {.id, .slug, .name, .avatar, .email, .password, .role} as user LIMIT 1',
{
id: JWTPayload.id
}
);
session.close();
const [currentUser] = await result.records.map((record) => {
return record.get("user");
});
if (currentUser) {
delete currentUser.password;
currentUser.avatar = fixUrl(currentUser.avatar)
return next(null, currentUser);
} else {
next(null, false)
return next(null, false);
}
})
}

View File

@ -56,7 +56,7 @@ const createServer = (options) => {
}
const server = new GraphQLServer(Object.assign({}, defaults, options))
passport.use('jwt', jwtStrategy())
passport.use('jwt', jwtStrategy(driver))
server.express.use(passport.initialize())
server.express.post('/graphql', passport.authenticate(['jwt'], { session: false }))