Skip to content

Instantly share code, notes, and snippets.

@nikkaroraa
Created February 21, 2020 11:00
Show Gist options
  • Save nikkaroraa/028d092e417f45cfac64881ef656a5bf to your computer and use it in GitHub Desktop.
Save nikkaroraa/028d092e417f45cfac64881ef656a5bf to your computer and use it in GitHub Desktop.
create resolver (GraphQL HOC)
const createResolver = (resolver) => {
const baseResolver = resolver;
baseResolver.createResolver = (childResolver) => {
const newResolver = async (parent, args, context, info) => {
await resolver(parent, args, context, info);
return childResolver(parent, args, context, info);
};
return createResolver(newResolver);
};
return baseResolver;
};
export const requiresAuth = createResolver((parent, args, context) => {
if (!context.user || !context.user.id) {
throw new Error('Not authenticated');
}
});
export const requiresAdmin = requiresAuth.createResolver((parent, args, context) => {
if (!context.user.isAdmin) {
throw new Error('Requires admin access');
}
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment