Narcissistic, Perfectly Modest

    graphql-rules

    0.1.0 • Public • Published

    graphql-rules

    A little utility allowing you to write rules for your graphql resolvers.

    import GraphqlRules from 'graphql-rules';
     
    // All users rules
    const userRules = new GraphqlRules();
     
    userRules.addRule({
      // Name of the rule
      name: 'is-logged',
      // Function called when the rule is required
      resolver: (obj, args, context) => {
        // your logic here
        if (!context.userId) {
          throw new Error('Forbidden');
        }
      },
    });
     
    userRules.addRule({
      // Name of the rule
      name: 'is-admin',
      // Function called when the rule is required
      resolver: (obj, args, context) => {
        // your logic here
        if (!context.user.isAdmin()) {
          throw new Error('Forbidden');
        }
      },
    });
     
    // Your resolver object
    const resolverMap = {
      Query: {
        // Your graphql query resolver
        users: userRules.check({
          // Define your required rules
          rules: ['is-admin', 'other-rules', 'is-logged'],
          // Define your resolver
          // The rules need to pass before the resolver is executed
          resolver: (obj, args, context) => {
            return context.Users.find();
          },
        }),
      },
      Mutation: {
        addSomeDbObject: userRules.check({
          // Check the user is logged
          rules: 'is-logged',
          resolver: (obj, args, context) => {
            return MyModel.insert(context.obj);
          },
        }),
      },
    };

    Install

    npm i graphql-rules

    DownloadsWeekly Downloads

    1

    Version

    0.1.0

    License

    none

    Last publish

    Collaborators

    • leopradel