Server: Fix Mutation authorization

This commit is contained in:
Barry Low committed 2018-09-13 23:55:57 -07:00
1 parent f7c5e9cc70
commit 758e5bdb83
9 files changed
+88 -93

No files matched your search

+2 -2
View File
@@ -1,7 +1,7 @@
const _get = require('lodash.get')
const { validateIdToken } = require('./validateIdToken')
const memberLocationOnContext = 'request.member'
const memberLocationOnContext = 'request.user'
const bearerAccessToken = 'request.headers.authorization'
const ctxMember = ctx => _get(ctx, memberLocationOnContext)
@@ -29,7 +29,7 @@ const isLoggedIn = async ctx => {
let member = ctxMember(ctx, memberLocationOnContext)
let token = ctxToken(ctx, bearerAccessToken)
let memberToken
console.log('isLoggedIn: ', member, token)
console.log('isLoggedIn: ', ctx, member, token)
if (!member && token) {
let scheme, credentials
const tokenParts = token.split(' ')
+2 -2
View File
@@ -1,9 +1,9 @@
const getMember = async (req, res, next, db) => {
if (!req.user) return next()
const member = await db.query.member({
where: { auth0id: req.user.sub }
where: { authId: req.user.sub }
})
req.user = { token: req.user, ...member }
req.user = { user: member }
next()
}
+1 -1
View File
@@ -21,4 +21,4 @@ const checkJwt = jwt({
algorithms: [`RS256`]
})
module.exports = { checkJwt }
module.exports = checkJwt
+37 -37
View File
@@ -7,7 +7,8 @@ const {
} = require('prisma-binding')
const { makeExecutableSchema } = require('graphql-tools')
const { importSchema } = require('graphql-import')
const { checkJwt } = require('./auth/middleware/jwt')
const checkJwt = require('./auth/middleware/jwt')
const { getMember } = require('./auth/middleware/getMember')
const { validateIdToken } = require('./auth/validateIdToken')
const { directiveResolvers } = require('./auth/authDirectives')
@@ -30,7 +31,7 @@ const createMember = async function (ctx, info, idToken) {
return member
}
const ctxMember = ctx => ctx.request.member
const ctxMember = ctx => ctx.request.user
const resolvers = {
Query: {
@@ -82,35 +83,32 @@ const resolvers = {
return ctx.db.query.team({ where: { name: name } }, `{ name }`)
},
async teamsByOwner(parent, { ownerId }, ctx, info) {
return ctx.db.query.teamsConnection({where: { owner: { authId: ownerId }}},
console.log('teamsByOwner: ', ctx.user)
return ctx.db.query.teams({where: { owner: ownerId }},
`{
edges {
node {
id
name
slug
owner
status {
status
reason
createdAt
}
id
name
slug
owner
status {
status
reason
createdAt
profile {
avatar
description
motto
updatedAt
}
members {
role
member {
alias
authId
}
}
createdAt
profile {
avatar
description
motto
updatedAt
}
members {
role
member {
alias
authId
}
}
}
}`)
},
async owner(parent, args, ctx, info) {
@@ -189,25 +187,27 @@ const schema = makeExecutableSchema({
const server = new GraphQLServer({
schema,
context: req => ({
...req,
db
token: req.headers,
user: req.user,
db,
...req
}),
})
server.express.use(
server.options.endpoint,
checkJwt,
(err, req, res, next) => {
console.log('checkJwt: ', err, req.user)
if (err) return res.status(401).send(err.message)
next()
function (err, req, res, next) {
console.log('checkJwt: ', err, req)
if (err) {
return res.status(201).send(err.message)
} else {
next()
}
}
)
server.express.post(server.options.endpoint, (err, req, res, done) => {
console.log('getMember: ', err, req.user)
getMember(req, res, done, db)
})
server.express.post(server.options.endpoint, (req, res, done) => getUser(req, res, done, db))
const whitelist = [
'http://localhost:3000',
+1 -1
View File
@@ -10,7 +10,7 @@ type Query {
teamDetails: [Team!]! @isAuthenticated
teamByName(name: String!): Team
teamById(teamId: String!): Team
teamsByOwner(ownerId: String!): TeamConnection
teamsByOwner(ownerId: String!): [Team!]! @isAuthenticated
owner: Member @isAuthenticated
currentMember: Member @isAuthenticated
member(authId: String!): Member @isAuthenticated