MCPcopy
hub / github.com/parse-community/parse-server / builtInTriggerValidator

Function builtInTriggerValidator

src/triggers.js:748–913  ·  view source on GitHub ↗
(options, request, auth)

Source from the content-addressed store, hash-verified

746 });
747}
748async function builtInTriggerValidator(options, request, auth) {
749 if (request.master && !options.validateMasterKey) {
750 return;
751 }
752 let reqUser = request.user;
753 if (
754 !reqUser &&
755 request.object &&
756 request.object.className === '_User' &&
757 !request.object.existed()
758 ) {
759 reqUser = request.object;
760 }
761 if (
762 (options.requireUser || options.requireAnyUserRoles || options.requireAllUserRoles) &&
763 !reqUser
764 ) {
765 throw 'Validation failed. Please login to continue.';
766 }
767 if (options.requireMaster && !request.master) {
768 throw 'Validation failed. Master key is required to complete this request.';
769 }
770 let params = request.params || {};
771 if (request.object) {
772 params = request.object.toJSON();
773 }
774 const requiredParam = key => {
775 const value = params[key];
776 if (value == null) {
777 throw `Validation failed. Please specify data for ${key}.`;
778 }
779 };
780
781 const validateOptions = async (opt, key, val) => {
782 let opts = opt.options;
783 if (typeof opts === 'function') {
784 try {
785 const result = await opts(val);
786 if (!result && result != null) {
787 throw opt.error || `Validation failed. Invalid value for ${key}.`;
788 }
789 } catch (e) {
790 if (!e) {
791 throw opt.error || `Validation failed. Invalid value for ${key}.`;
792 }
793
794 throw opt.error || e.message || e;
795 }
796 return;
797 }
798 if (!Array.isArray(opts)) {
799 opts = [opt.options];
800 }
801
802 if (!opts.includes(val)) {
803 throw (
804 opt.error || `Validation failed. Invalid option for ${key}. Expected: ${opts.join(', ')}`
805 );

Callers 1

maybeRunValidatorFunction · 0.85

Calls 4

requiredParamFunction · 0.85
validateOptionsFunction · 0.85
getTypeFunction · 0.70
getMethod · 0.45

Tested by

no test coverage detected