Switch console.log to logger

This commit is contained in:
Barry Low committed 2018-10-21 15:27:50 -07:00
1 parent 589b2d7f28
commit 4c7c736ea0
2 files changed
+1 -142

No files matched your search

-141
View File
@@ -1,141 +0,0 @@
const _get = require('lodash.get')
const { validateIdToken } = require('./validateIdToken')
import { logger } from './logger'
const memberLocationOnContext = 'request.user'
const bearerAccessToken = 'request.headers.authorization'
const ctxMember = ctx => _get(ctx, memberLocationOnContext)
const ctxToken = ctx => _get(ctx, bearerAccessToken)
const createMember = async (ctx, idToken, info) => {
logger.info(`createMember: ${idToken}`)
const member = await ctx.db.mutation.upsertMember({
where: {
authId: idToken.sub,
},
create: {
authId: idToken.sub,
alias: idToken.nickname
},
update: {
authId: idToken.sub,
alias: idToken.nickname
}
}, info)
return member
}
const isLoggedIn = async ctx => {
logger.info(`isLoggedIn 0: ${JSON.stringify(ctx.request.headers)}`)
let member = ctxMember(ctx, memberLocationOnContext)
let token = ctxToken(ctx, bearerAccessToken)
let memberToken
logger.info(`isLoggedIn 1: ${JSON.stringify(member)}`)
logger.info(`isLoggedIn 2: ${token}`)
if (!member && token) {
let scheme, credentials
const tokenParts = token.split(' ')
if (tokenParts.length === 2) {
scheme = tokenParts[0]
credentials = tokenParts[1]
}
if (/^Bearer$/i.test(scheme)) {
token = credentials
//verify token
try {
memberToken = await validateIdToken(token)
const authId = memberToken.sub
exists = await ctx.db.query.member({ where: { authId: authId } })
if (!member && exists === null) {
member = await createMember(ctx, memberToken).then(res => {
return res
})
return member
}
return member
} catch (err) {
memberToken = false
}
}
}
if (!member) {
throw new Error(`Not logged in`)
}
return member
}
const isRequestingMemberAlsoOwner = ({ ctx, memberId, type, typeId }) =>
ctx.db.exists[type]({ slug: typeId, owner: memberId })
const isRequestingMember = ({ ctx, memberId }) => ctx.db.exists.Member({ authId: memberId })
const directiveResolvers = {
isAuthenticated: async (next, source, args, ctx) => {
let result = await isLoggedIn(ctx)
logger.info(`directive isAuthenticated: ${JSON.stringify(result)}`)
return next(result)
},
hasRole: (next, source, { roles }, ctx) => {
const { role } = isLoggedIn(ctx)
logger.info(`directive hasRole: ${role}`)
if (roles.includes(role)) {
return next()
}
throw new Error(`Unauthorized, incorrect role`)
},
isOwner: async (next, source, { type }, ctx) => {
logger.info(`directive isOwner 1: ${type}`)
logger.info(`directive isOwner 2: ${JSON.stringify(ctx.request.body)}`)
const { slug: typeId } =
source && source.id
? source
: ctx.request.body.variables ? ctx.request.body.variables : { id: null }
const user = await isLoggedIn(ctx)
const memberId = user.sub
const isOwner =
type === `Member`
? memberId === typeId
: await isRequestingMemberAlsoOwner({ ctx, memberId, type, typeId })
if (isOwner) {
return next()
}
throw new Error(`Unauthorized, must be owner`)
},
isOwnerOrHasRole: async (next, source, { roles, type }, ctx, ...p) => {
const { authId: memberId } = await isLoggedIn(ctx)
logger.info(`directive isOwnerOrHasRole 1: ${type}`)
logger.info(`directive isOwnerOrHasRole 2: ${JSON.stringify(roles)}`)
if(memberId === undefined && role=== undefined) throw new Error(`Not logged in`)
if (roles.includes(role)) {
return next()
}
const { authId: typeId } = ctx.request.body.variables
const isOwner = await isRequestingMemberAlsoOwner({
ctx,
memberId,
type,
typeId
})
logger.info(`directive isOwnerOrHasRole 3: ${JSON.stringify(isOwner)}`)
if (isOwner) {
return next()
}
const hasRole = await isRequestingMember({
ctx,
memberId,
type,
typeId
})
if(hasRole){
return next()
}
throw new Error(`Unauthorized, not owner or incorrect role`)
}
}
module.exports = { directiveResolvers }
+1 -1
View File
@@ -1,7 +1,7 @@
var jwt = require('jsonwebtoken')
var axios = require('axios')
import { logger } from './logger'
import { logger } from '../logger'
const sendTeamMemberInvite = function(email, team) {
const dev = process.env.NODE_ENV === 'development' ? true : false