From a9963fb1a9c4a948a77dedc261bb266b808f54f0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Robert=20Sch=C3=A4fer?= Date: Tue, 19 Mar 2019 21:24:11 +0100 Subject: [PATCH] Bundle all activityPub in middleware This way we can disable it for the seeder server which does not need to create RSA keys for all created users --- src/middleware/activityPubMiddleware.js | 18 ++++++++++++++++++ src/middleware/index.js | 2 ++ src/middleware/userMiddleware.js | 4 ---- src/resolvers/posts.js | 3 --- 4 files changed, 20 insertions(+), 7 deletions(-) create mode 100644 src/middleware/activityPubMiddleware.js diff --git a/src/middleware/activityPubMiddleware.js b/src/middleware/activityPubMiddleware.js new file mode 100644 index 000000000..2fcd04729 --- /dev/null +++ b/src/middleware/activityPubMiddleware.js @@ -0,0 +1,18 @@ +import { generateRsaKeyPair } from '../activitypub/security' +import { activityPub } from '../activitypub/ActivityPub' + +export default { + Mutation: { + CreatePost: async (resolve, root, args, context, info) => { + args.activityId = activityPub.generateStatusId(context.user.slug) + args.objectId = activityPub.generateStatusId(context.user.slug) + return resolve(root, args, context, info) + }, + CreateUser: async (resolve, root, args, context, info) => { + const keys = generateRsaKeyPair() + Object.assign(args, keys) + args.actorId = `${process.env.GRAPHQL_URI}/activitypub/users/${args.slug}` + return resolve(root, args, context, info) + } + } +} diff --git a/src/middleware/index.js b/src/middleware/index.js index 6f95c7451..6ed0955e8 100644 --- a/src/middleware/index.js +++ b/src/middleware/index.js @@ -1,3 +1,4 @@ +import activityPubMiddleware from './activityPubMiddleware' import passwordMiddleware from './passwordMiddleware' import softDeleteMiddleware from './softDeleteMiddleware' import sluggifyMiddleware from './sluggifyMiddleware' @@ -25,6 +26,7 @@ export default schema => { // add permisions middleware at the first position (unless we're seeding) // NOTE: DO NOT SET THE PERMISSION FLAT YOUR SELF if (process.env.PERMISSIONS !== 'disabled' && process.env.NODE_ENV !== 'production') { + middleware.unshift(activityPubMiddleware) middleware.unshift(permissionsMiddleware.generate(schema)) } return middleware diff --git a/src/middleware/userMiddleware.js b/src/middleware/userMiddleware.js index a85bd1244..2979fdadf 100644 --- a/src/middleware/userMiddleware.js +++ b/src/middleware/userMiddleware.js @@ -1,5 +1,4 @@ import createOrUpdateLocations from './nodes/locations' -import { generateRsaKeyPair } from '../activitypub/security' import dotenv from 'dotenv' dotenv.config() @@ -7,9 +6,6 @@ dotenv.config() export default { Mutation: { CreateUser: async (resolve, root, args, context, info) => { - const keys = generateRsaKeyPair() - Object.assign(args, keys) - args.actorId = `${process.env.GRAPHQL_URI}/activitypub/users/${args.slug}` const result = await resolve(root, args, context, info) await createOrUpdateLocations(args.id, args.locationName, context.driver) return result diff --git a/src/resolvers/posts.js b/src/resolvers/posts.js index b7a6d8a2a..de5cd8282 100644 --- a/src/resolvers/posts.js +++ b/src/resolvers/posts.js @@ -1,5 +1,4 @@ import { neo4jgraphql } from 'neo4j-graphql-js' -import { activityPub } from '../activitypub/ActivityPub' import as from 'activitystrea.ms' import dotenv from 'dotenv' /* @@ -13,8 +12,6 @@ dotenv.config() export default { Mutation: { CreatePost: async (object, params, context, resolveInfo) => { - params.activityId = activityPub.generateStatusId(context.user.slug) - params.objectId = activityPub.generateStatusId(context.user.slug) const result = await neo4jgraphql(object, params, context, resolveInfo, false) const session = context.driver.session()