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.
- Edit 'purpose.yml' based on your needs
- Create a set of rules in 'rules.json'
- 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'),
],
})
- 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.