Merge remote-tracking branch 'Gerald1614/500_error_on_login' into 49_fix_no_user_with_that_email

This commit is contained in:
Robert Schäfer 2019-01-02 15:09:13 +01:00
commit ffafd72c79

View File

@ -2,9 +2,9 @@
import fs from 'fs' import fs from 'fs'
import path from 'path' import path from 'path'
import bcrypt from 'bcryptjs' import bcrypt from 'bcryptjs'
import zipObject from 'lodash/zipObject'
import generateJwt from './jwt/generateToken' import generateJwt from './jwt/generateToken'
import { fixUrl } from './middleware/fixImageUrlsMiddleware' import { fixUrl } from './middleware/fixImageUrlsMiddleware'
import { AuthenticationError } from 'apollo-server'
export const typeDefs = export const typeDefs =
fs.readFileSync(process.env.GRAPHQL_SCHEMA || path.join(__dirname, 'schema.graphql')) fs.readFileSync(process.env.GRAPHQL_SCHEMA || path.join(__dirname, 'schema.graphql'))
@ -95,32 +95,24 @@ export const resolvers = {
// if (user && user.id) { // if (user && user.id) {
// throw new Error('Already logged in.') // throw new Error('Already logged in.')
// } // }
const session = driver.session() const session = driver.session()
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') return session.run(
let u = res.records[0]._fields ? zipObject([ 'MATCH (user:User {email: "' + email + '"}) ' +
'id', 'RETURN user {.id, .slug, .name, .avatar, .email, .password, .role} as user LIMIT 1')
'slug', .then(async (result) => {
'name', session.close()
'avatar', const [currentUser] = await result.records.map(function (record) {
'email', console.log(record.get('user'))
'password', return record.get('user')
'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)
}) })
} if (currentUser && await bcrypt.compareSync(password, currentUser.password)) {
session.close() delete currentUser.password
throw new Error('Incorrect password.') currentUser.avatar = fixUrl(currentUser.avatar)
} return Object.assign(currentUser, {
token: generateJwt(currentUser)
session.close() })
throw new Error('No Such User exists.') } else throw new AuthenticationError('Incorrect username or password.')
})
} }
} }
} }