Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Select an option

  • Save ramsaylanier/e24ee5299e33cad7c43fb41c317d8210 to your computer and use it in GitHub Desktop.

Select an option

Save ramsaylanier/e24ee5299e33cad7c43fb41c317d8210 to your computer and use it in GitHub Desktop.
const bcrypt = require('bcryptjs')
const jwt = require('jsonwebtoken')
const { validateAndParseIdToken } = require('../../middleware/jwt')
async function createPrismaUser(ctx, idToken) {
const user = await ctx.db.mutation.createUser({
data: {
identity: idToken.sub.split(`|`)[0],
auth0id: idToken.sub.split(`|`)[1],
name: idToken.name,
email: idToken.email,
avatar: idToken.picture
},
})
return user
}
const auth = {
async authenticate(parent, { idToken }, ctx, info) {
let userToken = null
try {
userToken = await validateAndParseIdToken(idToken)
}
catch (err) {
throw new Error(err.message)
}
const auth0id = userToken.sub.split('|')[1]
let user = await ctx.db.query.user({where: { auth0id }}, info)
if (!user) {
user = createPrismaUser(ctx, userToken)
}
return user
},
}
module.exports = { auth }
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment