with-custom-permissions.ts 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. import { Mutation, Query, Resolver } from '@nestjs/graphql';
  2. import { LanguageCode } from '@vendure/common/lib/generated-types';
  3. import { Allow, CrudPermissionDefinition, PermissionDefinition, VendurePlugin } from '@vendure/core';
  4. import gql from 'graphql-tag';
  5. export const sync = new PermissionDefinition({
  6. name: 'SyncWishlists',
  7. description: 'Allows syncing wishlists via Admin API',
  8. });
  9. export const wishlist = new CrudPermissionDefinition('Wishlist');
  10. @Resolver()
  11. export class TestWishlistResolver {
  12. @Allow(wishlist.Read)
  13. @Query()
  14. wishlist() {
  15. return true;
  16. }
  17. @Allow(wishlist.Create)
  18. @Mutation()
  19. createWishlist() {
  20. return true;
  21. }
  22. @Allow(wishlist.Update)
  23. @Mutation()
  24. updateWishlist() {
  25. return true;
  26. }
  27. @Allow(wishlist.Delete)
  28. @Mutation()
  29. deleteWishlist() {
  30. return true;
  31. }
  32. @Allow(sync.Permission)
  33. @Mutation()
  34. syncWishlist() {
  35. return true;
  36. }
  37. }
  38. @VendurePlugin({
  39. imports: [],
  40. adminApiExtensions: {
  41. resolvers: [TestWishlistResolver],
  42. schema: gql`
  43. extend type Query {
  44. wishlist: Boolean!
  45. }
  46. extend type Mutation {
  47. createWishlist: Boolean!
  48. updateWishlist: Boolean!
  49. deleteWishlist: Boolean!
  50. syncWishlist: Boolean!
  51. }
  52. `,
  53. },
  54. configuration: config => {
  55. config.authOptions.customPermissions = [sync, wishlist];
  56. return config;
  57. },
  58. })
  59. export class TestPluginWithCustomPermissions {}