with-protected-field-resolver.ts 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. import { ResolveField, Resolver } from '@nestjs/graphql';
  2. import { Allow, PermissionDefinition, VendurePlugin } from '@vendure/core';
  3. import gql from 'graphql-tag';
  4. export const transactions = new PermissionDefinition({
  5. name: 'Transactions',
  6. description: 'Allows reading of transaction data',
  7. });
  8. @Resolver('Product')
  9. export class ProductEntityResolver {
  10. @Allow(transactions.Permission)
  11. @ResolveField()
  12. transactions() {
  13. return [
  14. { id: 1, amount: 100, description: 'credit' },
  15. { id: 2, amount: -50, description: 'debit' },
  16. ];
  17. }
  18. }
  19. @VendurePlugin({
  20. adminApiExtensions: {
  21. resolvers: [ProductEntityResolver],
  22. schema: gql`
  23. extend type Query {
  24. transactions: [Transaction!]!
  25. }
  26. extend type Product {
  27. transactions: [Transaction!]!
  28. }
  29. type Transaction implements Node {
  30. id: ID!
  31. amount: Int!
  32. description: String!
  33. }
  34. `,
  35. },
  36. configuration: config => {
  37. config.authOptions.customPermissions.push(transactions);
  38. return config;
  39. },
  40. })
  41. export class ProtectedFieldsPlugin {}