mirror of
https://github.com/Ocelot-Social-Community/Ocelot-Social.git
synced 2026-01-14 17:04:38 +00:00
63 lines
1.8 KiB
JavaScript
63 lines
1.8 KiB
JavaScript
// import { neo4jgraphql } from "neo4j-graphql-js"
|
|
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'
|
|
|
|
export const typeDefs =
|
|
fs.readFileSync(process.env.GRAPHQL_SCHEMA || path.join(__dirname, "schema.graphql"))
|
|
.toString('utf-8')
|
|
|
|
export const resolvers = {
|
|
Query: {
|
|
isLoggedIn: (parent, args, { user }) => {
|
|
console.log(user)
|
|
return Boolean(user && user.id)
|
|
}
|
|
// usersBySubstring: neo4jgraphql
|
|
},
|
|
Mutation: {
|
|
signup: async (parent, { email, password }, { req }) => {
|
|
// if (data[email]) {
|
|
// throw new Error('Another User with same email exists.')
|
|
// }
|
|
// data[email] = {
|
|
// password: await bcrypt.hashSync(password, 10),
|
|
// }
|
|
|
|
return true
|
|
},
|
|
login: async (parent, { email, password }, { driver, req, user }) => {
|
|
// if (user && user.id) {
|
|
// throw new Error('Already logged in.')
|
|
// }
|
|
|
|
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')
|
|
let 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)
|
|
})
|
|
}
|
|
throw new Error('Incorrect password.')
|
|
}
|
|
|
|
throw new Error('No Such User exists.')
|
|
}
|
|
}
|
|
}
|