From 94c962cd4491b88e6475d07b886ea4e6a34b567a Mon Sep 17 00:00:00 2001 From: Barry Low Date: Tue, 30 Oct 2018 21:34:00 -0700 Subject: [PATCH] update logger --- api/src/directives/index.js | 14 +++++++++----- api/src/graphql/fragments/TeamFBFragment.js | 2 +- .../fragments/TeamsConnectionsFragment.js | 2 +- api/src/graphql/fragments/TeamsFragment.js | 2 +- api/src/graphql/resolvers/Mutation/index.js | 7 +++++-- api/src/graphql/resolvers/Query/Member.js | 13 +++++++------ api/src/graphql/resolvers/Query/Team.js | 18 ++++++++++++------ api/src/graphql/resolvers/Query/TeamMember.js | 5 ++++- api/src/graphql/resolvers/index.js | 2 +- api/src/graphql/schema.graphql | 2 +- api/src/index.js | 2 +- api/src/logger/errors.js | 6 +++--- 12 files changed, 46 insertions(+), 29 deletions(-) diff --git a/api/src/directives/index.js b/api/src/directives/index.js index b775edb7d..be47f90c1 100644 --- a/api/src/directives/index.js +++ b/api/src/directives/index.js @@ -3,9 +3,10 @@ import _get from 'lodash.get' import { logger, AuthenticationError } from '../logger' const memberLocationOnContext = 'request.user' -const userIdOnContext = 'req.userid' +const userIdOnContext = 'request.headers.userid' const bearerAccessToken = 'request.headers.authorization' +const ctxUserId = ctx => _get(ctx, userIdOnContext) const ctxMember = ctx => _get(ctx, memberLocationOnContext) const ctxToken = ctx => _get(ctx, bearerAccessToken) @@ -28,10 +29,12 @@ const createMember = async (ctx, idToken, info) => { } const isUserId = async ctx => { - logger.info(`isUserId 0: ${ctx.userId}`) - let member = ctxMember(ctx, userIdOnContext) + logger.info(`isUserId 0: ${ctx.request.headers.userid}`) + logger.info(`isUserId 1: ${ctx.request}`) + let member = await ctxUserId(ctx) + logger.info(member) if (!member) { - throw new AuthenticationError('Access token is missing or expired') + throw new AuthenticationError() } else { return member } @@ -58,7 +61,8 @@ const assertAuth = ctx => { export const directiveResolvers = { isAuthenticated: async (next, source, args, ctx) => { let result = await isUserId(ctx) - logger.info('directive isAuthenticated: ', result) + logger.info('directive isAuthenticated: ') + logger.info(await result) return next(result) }, hasRole: (next, source, { roles }, ctx) => { diff --git a/api/src/graphql/fragments/TeamFBFragment.js b/api/src/graphql/fragments/TeamFBFragment.js index f7030921d..b0f99c664 100644 --- a/api/src/graphql/fragments/TeamFBFragment.js +++ b/api/src/graphql/fragments/TeamFBFragment.js @@ -1,4 +1,4 @@ -const gql = require('graphql-tag') +import gql from 'graphql-tag' const TEAM_FB_FRAGMENT = gql`{ id diff --git a/api/src/graphql/fragments/TeamsConnectionsFragment.js b/api/src/graphql/fragments/TeamsConnectionsFragment.js index 5193475e0..f019dd02e 100644 --- a/api/src/graphql/fragments/TeamsConnectionsFragment.js +++ b/api/src/graphql/fragments/TeamsConnectionsFragment.js @@ -1,4 +1,4 @@ -const gql = require('graphql-tag') +import gql from 'graphql-tag' const TEAMS_CONNECTIONS_FRAGMENT = gql`{ edges { diff --git a/api/src/graphql/fragments/TeamsFragment.js b/api/src/graphql/fragments/TeamsFragment.js index 442829e3c..1dd527af9 100644 --- a/api/src/graphql/fragments/TeamsFragment.js +++ b/api/src/graphql/fragments/TeamsFragment.js @@ -1,4 +1,4 @@ -const gql = require('graphql-tag') +import gql from 'graphql-tag' const TEAMS_FRAGMENT = gql`{ id diff --git a/api/src/graphql/resolvers/Mutation/index.js b/api/src/graphql/resolvers/Mutation/index.js index 9f33592c6..71f7e274c 100644 --- a/api/src/graphql/resolvers/Mutation/index.js +++ b/api/src/graphql/resolvers/Mutation/index.js @@ -1,6 +1,6 @@ import { getUser } from '../../../middleware/getMember' -import { sendTeamMemberInvite, sendTeamCreateConfirmation, verifyInviteToken } from '../../..//email/sendgrid' +import { sendTeamMemberInvite, sendTeamCreateConfirmation, verifyInviteToken } from '../../../email/sendgrid' import TEAM_FB_FRAGMENT from '../../fragments/TeamFBFragment' @@ -40,7 +40,10 @@ export const resolvers = { logger.info('createTeam ctx.request.user:') logger.info(ctx.request.user) - const authId = ctx.userId + const authId = ctx.request.headers.userid + if (!authId) { + throw new AuthenticationError() + } return getUser(authId) .then(async result => { diff --git a/api/src/graphql/resolvers/Query/Member.js b/api/src/graphql/resolvers/Query/Member.js index 2d1a02060..2ca9d69d6 100644 --- a/api/src/graphql/resolvers/Query/Member.js +++ b/api/src/graphql/resolvers/Query/Member.js @@ -1,12 +1,13 @@ -import { logger, AuthentificationError, DatabaseError } from '../../../logger' +import { logger, AuthenticationError, DatabaseError } from '../../../logger' export const member = async (parent, arg, ctx, info) => { - logger.info(ctx.request.userId, ' --> resolver.member') - const authId = ctx.request.userId + logger.info(' --> resolver.member') + logger.info(ctx.request) + const authId = ctx.request.headers.userid if (!authId) { - throw new AuthentificationError() + throw new AuthenticationError() } - return ctx.db.query.member({ where: { authId: arg.authId } }, info) + return ctx.db.query.member({ where: { authId } }, info) .catch(err => { logger.debug('resolver.member error: ') logger.debug(err) @@ -18,7 +19,7 @@ export const owner = async (parent, args, ctx, info) => { logger.info('resolver.query.owner ctx: ') const authId = ctx.request.userId if (!authId) { - return throw new AuthentificationError() + throw new AuthenticationError() } return ctx.db.query.member({ where: { authId: authId } }, info) .catch(err => { diff --git a/api/src/graphql/resolvers/Query/Team.js b/api/src/graphql/resolvers/Query/Team.js index 6e92c83dd..4961888e5 100644 --- a/api/src/graphql/resolvers/Query/Team.js +++ b/api/src/graphql/resolvers/Query/Team.js @@ -4,7 +4,8 @@ import TEAMS_CONNECTIONS_FRAGMENT from '../../fragments/TeamsConnectionsFragment import TEAMS_FRAGMENT from '../../fragments/TeamsFragment' export const teams = async (parent, args, ctx, info) => { - logger.info('teams: ', ctx.request.res) + logger.info('teams') + console.log('teams') return ctx.db.query.teamsConnection({}, TEAMS_CONNECTIONS_FRAGMENT) } @@ -20,15 +21,20 @@ export const teamWithRole = async (parent, { teamId, role }, ctx, info) => { return ctx.db.query.teamsConnection({where: {AND: [{id: teamId},{members_some:{role: role}}]}, first:1}, info) } -export const teamsByOwner = async (parent, { ownerId }, ctx, info) => { +export const teamsByOwner = async (parent, args, ctx, info) => { logger.info('teamsByOwner') - logger.info(ctx.req.headers) - logger.info(ctx.req.token) - return ctx.db.query.teams({where: { owner: ownerId }, orderBy:'updatedAt_DESC'}, TEAMS_FRAGMENT) + const authId = ctx.request.headers.userid + if (!authId) { + throw new AuthenticationError() + } + return ctx.db.query.teams({where: { owner: authId }, orderBy:'updatedAt_DESC'}, TEAMS_FRAGMENT) } export const teamsByRole = async (parent, args, ctx, info) => { - const authId = ctx.request.userId + const authId = ctx.request.headers.userid + if (!authId) { + throw new AuthenticationError() + } let teamAdmin try { teamAdmin= await ctx.db.query.teams({where: {members_some: {AND: [{member: {authId: authId}, role_not:'MEMBER'}]}}}, TEAMS_FRAGMENT) diff --git a/api/src/graphql/resolvers/Query/TeamMember.js b/api/src/graphql/resolvers/Query/TeamMember.js index 76ef6c9c7..9126c9c5d 100644 --- a/api/src/graphql/resolvers/Query/TeamMember.js +++ b/api/src/graphql/resolvers/Query/TeamMember.js @@ -2,7 +2,10 @@ import { logger } from '../../../logger' export const fbByTeamMember = async (parent, args, ctx, info) => { logger.info('fbByTeamMember: ', args, ctx.request, ctx.request.res.req.user) - const authId = ctx.request.userId + const authId = ctx.request.headers.userid + if (!authId) { + throw new AuthenticationError() + } let teamMemberFB = await ctx.db.query.teams({where: {members_some: {AND: [{member: {authId: authId}}]}}, orderBy: 'updatedAt_DESC'}, TEAM_FB_FRAGMENT) logger.info('fbByTeamMember response: ', await teamMemberFB[0]) return teamMemberFB[0] diff --git a/api/src/graphql/resolvers/index.js b/api/src/graphql/resolvers/index.js index 70fae750a..543ab4e32 100644 --- a/api/src/graphql/resolvers/index.js +++ b/api/src/graphql/resolvers/index.js @@ -3,4 +3,4 @@ import merge from 'lodash.merge' import { resolvers as queryResolvers } from './Query' import { resolvers as mutationResolvers } from './Mutation' -const resolvers = merge(queryResolvers, mutationResolvers) +export const resolvers = merge(queryResolvers, mutationResolvers) diff --git a/api/src/graphql/schema.graphql b/api/src/graphql/schema.graphql index 6f889a058..00413a539 100644 --- a/api/src/graphql/schema.graphql +++ b/api/src/graphql/schema.graphql @@ -11,7 +11,7 @@ type Query { teamByName(name: String!): Team teamById(teamId: String!): Team teamWithRole(teamId: String!, role: String!): Team - teamsByOwner(ownerId: String!): [Team!]! @isAuthenticated + teamsByOwner: [Team!]! @isAuthenticated teamsByRole: [Team!]! @isAuthenticated fbByTeamMember: Team @isAuthenticated owner: Member @isAuthenticated diff --git a/api/src/index.js b/api/src/index.js index ce59f2e96..11ed3ea81 100644 --- a/api/src/index.js +++ b/api/src/index.js @@ -64,7 +64,7 @@ const server = createApolloServer(app, { ...req , token: req.headers ? req.headers : undefined, user: req.user ? req.user : undefined, - userId: null, + userId: (req.headers && req.headers.userid) ? req.headers.userid : undefined, db, pubsub }) diff --git a/api/src/logger/errors.js b/api/src/logger/errors.js index b1085fedf..654dc98ef 100644 --- a/api/src/logger/errors.js +++ b/api/src/logger/errors.js @@ -1,11 +1,11 @@ -export class AuthentificationError extends Error { +export class AuthenticationError extends Error { code = 401 - message = 'Autentification not found, you have to be authentificated to perform this action' + message = 'Not Authenticated - you have to be authenticated to perform this action' } export class DatabaseError extends Error { code = 404 - message = 'Ressource not found : ' + this.message + message = 'Resource not found : ' + this.message } export class WrongArgumentsError extends Error {