diff --git a/src/graphql-schema.js b/src/graphql-schema.js index c298177c2..830fda193 100644 --- a/src/graphql-schema.js +++ b/src/graphql-schema.js @@ -2,7 +2,6 @@ import fs from 'fs' import path from 'path' import bcrypt from 'bcryptjs' -import zipObject from 'lodash/zipObject' import generateJwt from './jwt/generateToken' import { fixUrl } from './middleware/fixImageUrlsMiddleware' import { AuthenticationError } from 'apollo-server' @@ -97,32 +96,23 @@ export const resolvers = { // throw new Error('Already logged in.') // } const session = driver.session() - try { - const res = await session.run('MATCH (u:User {email: "' + email + '"}) RETURN u.id, u.slug, u.name, u.avatar, u.email, u.password, u.role LIMIT 1') - const u = res.records[0]._fields ? zipObject([ - 'id', - 'slug', - 'name', - 'avatar', - 'email', - 'password', - 'role' - ], res.records[0]._fields) : null - if (u) { - if (await bcrypt.compareSync(password, u.password)) { - delete u.password - u.avatar = fixUrl(u.avatar) - return Object.assign(u, { - token: generateJwt(u) - }) - } + return session.run( + 'MATCH (user:User {email: "' + email + '"}) ' + + 'RETURN user {.id, .slug, .name, .avatar, .email, .password, .role} as user LIMIT 1') + .then(async (result) => { session.close() - throw new AuthenticationError('Incorrect username or password.') - } - session.close() - } catch (error) { - throw new AuthenticationError('Incorrect username or password.') - } + const [currentUser] = await result.records.map(function (record) { + console.log(record.get('user')) + return record.get('user') + }) + if (currentUser && await bcrypt.compareSync(password, currentUser.password)) { + delete currentUser.password + currentUser.avatar = fixUrl(currentUser.avatar) + return Object.assign(currentUser, { + token: generateJwt(currentUser) + }) + } else throw new AuthenticationError('Incorrect username or password.') + }) } } }