(options, request, auth)
| 746 | }); |
| 747 | } |
| 748 | async 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 | ); |
no test coverage detected