permissions.js 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. 'use strict';
  2. const denied = exports;
  3. denied.distinct = function(self) {
  4. if (self._fields && Object.keys(self._fields).length > 0) {
  5. return 'field selection and slice';
  6. }
  7. const keys = Object.keys(denied.distinct);
  8. let err;
  9. keys.every(function(option) {
  10. if (self.options[option]) {
  11. err = option;
  12. return false;
  13. }
  14. return true;
  15. });
  16. return err;
  17. };
  18. denied.distinct.select =
  19. denied.distinct.slice =
  20. denied.distinct.sort =
  21. denied.distinct.limit =
  22. denied.distinct.skip =
  23. denied.distinct.batchSize =
  24. denied.distinct.hint =
  25. denied.distinct.tailable = true;
  26. // aggregation integration
  27. denied.findOneAndUpdate =
  28. denied.findOneAndDelete = function(self) {
  29. const keys = Object.keys(denied.findOneAndUpdate);
  30. let err;
  31. keys.every(function(option) {
  32. if (self.options[option]) {
  33. err = option;
  34. return false;
  35. }
  36. return true;
  37. });
  38. return err;
  39. };
  40. denied.findOneAndUpdate.limit =
  41. denied.findOneAndUpdate.skip =
  42. denied.findOneAndUpdate.batchSize =
  43. denied.findOneAndUpdate.tailable = true;
  44. denied.findOneAndReplace = function(self) {
  45. const keys = Object.keys(denied.findOneAndUpdate);
  46. let err;
  47. keys.every(function(option) {
  48. if (self.options[option]) {
  49. err = option;
  50. return false;
  51. }
  52. return true;
  53. });
  54. return err;
  55. };
  56. denied.countDocuments = function(self) {
  57. if (self._fields && Object.keys(self._fields).length > 0) {
  58. return 'field selection and slice';
  59. }
  60. const keys = Object.keys(denied.countDocuments);
  61. let err;
  62. keys.every(function(option) {
  63. if (self.options[option]) {
  64. err = option;
  65. return false;
  66. }
  67. return true;
  68. });
  69. return err;
  70. };
  71. denied.countDocuments.slice =
  72. denied.countDocuments.batchSize =
  73. denied.countDocuments.tailable = true;