Plugin Integration into Apollo Server - wklausing/ApolloACPlugin GitHub Wiki


The integration of our plugin into an existing Apollo Server can be done with minimal effort.

  1. Edit 'purpose.yml' based on your needs
  2. Create a set of rules in 'rules.json'
  3. Add the plugin into your Apollo Server by adding it as a parameter:
const server = new ApolloServer({
  debug: config.debug == "on" ? true : false,
  typeDefs,
  resolvers,
  plugins: [
    require('./ACPlugin/plugin'),
  ],
})
  1. In order to allow clients to send purposes as additional GraphQL variable, it is necessary to change your Apollo Server schema: Before:
type Query {
    Persons: [Persons]
    DailyActivities: [DailyActivities]
    HeartratePerSeconds(Id: Float): [HeartratePerSeconds]
    SleepDaysOf(Id: Float): [SleepDays]
    WeightPoundsOf(Id: Float): [WeightPounds]
    DailyStepsOf(Id: Float): [DailySteps]
  }

After:

type Query {
    Persons(Purpose: String): [Persons]
    DailyActivities(Purpose: String): [DailyActivities]
    HeartratePerSeconds(Purpose: String, Id: Float): [HeartratePerSeconds]
    SleepDaysOf(Purpose: String, Id: Float): [SleepDays]
    WeightPoundsOf(Purpose: String, Id: Float): [WeightPounds]
    DailyStepsOf(Purpose: String, Id: Float): [DailySteps]
  }

That are all necessary steps to integrate the plugin. If the plugin is only used for Header-based access control, 'purpose.yml' can be left empty and the fourth step is unncessary.