add fetch options

pull/402/merge
Pete Matsyburka 1 month ago
parent 40052a2d7c
commit 871ef6dda6

@ -161,6 +161,11 @@ export default {
required: false, required: false,
default: false default: false
}, },
fetchOptions: {
type: Object,
required: false,
default: () => ({})
},
completedButton: { completedButton: {
type: Object, type: Object,
required: false, required: false,
@ -214,7 +219,10 @@ export default {
download () { download () {
this.isDownloading = true this.isDownloading = true
fetch(this.baseUrl + `/submitters/${this.submitterSlug}/download`).then(async (response) => { fetch(this.baseUrl + `/submitters/${this.submitterSlug}/download`, {
method: 'GET',
...this.fetchOptions
}).then(async (response) => {
if (response.ok) { if (response.ok) {
const urls = await response.json() const urls = await response.json()
const isMobileSafariIos = 'ontouchstart' in window && navigator.maxTouchPoints > 0 && /AppleWebKit/i.test(navigator.userAgent) const isMobileSafariIos = 'ontouchstart' in window && navigator.maxTouchPoints > 0 && /AppleWebKit/i.test(navigator.userAgent)

@ -530,6 +530,7 @@
v-else-if="isInvite" v-else-if="isInvite"
:submitters="inviteSubmitters" :submitters="inviteSubmitters"
:optional-submitters="optionalInviteSubmitters" :optional-submitters="optionalInviteSubmitters"
:fetch-options="fetchOptions"
:submitter-slug="submitterSlug" :submitter-slug="submitterSlug"
:authenticity-token="authenticityToken" :authenticity-token="authenticityToken"
:url="baseUrl + submitPath + '/invite'" :url="baseUrl + submitPath + '/invite'"
@ -543,6 +544,7 @@
:has-signature-fields="stepFields.some((fields) => fields.some((f) => ['signature', 'initials'].includes(f.type)))" :has-signature-fields="stepFields.some((fields) => fields.some((f) => ['signature', 'initials'].includes(f.type)))"
:has-multiple-documents="hasMultipleDocuments" :has-multiple-documents="hasMultipleDocuments"
:completed-button="completedRedirectUrl ? {} : completedButton" :completed-button="completedRedirectUrl ? {} : completedButton"
:fetch-options="fetchOptions"
:completed-message="completedRedirectUrl ? {} : completedMessage" :completed-message="completedRedirectUrl ? {} : completedMessage"
:with-send-copy-button="withSendCopyButton && !completedRedirectUrl" :with-send-copy-button="withSendCopyButton && !completedRedirectUrl"
:with-download-button="withDownloadButton && !completedRedirectUrl && !dryRun" :with-download-button="withDownloadButton && !completedRedirectUrl && !dryRun"
@ -678,6 +680,11 @@ export default {
required: false, required: false,
default: () => [] default: () => []
}, },
fetchOptions: {
type: Object,
required: false,
default: () => ({})
},
optionalInviteSubmitters: { optionalInviteSubmitters: {
type: Array, type: Array,
required: false, required: false,
@ -1467,7 +1474,8 @@ export default {
} else { } else {
return fetch(this.baseUrl + this.submitPath, { return fetch(this.baseUrl + this.submitPath, {
method: 'POST', method: 'POST',
body: formData || new FormData(this.$refs.form) body: formData || new FormData(this.$refs.form),
...this.fetchOptions
}).then((response) => { }).then((response) => {
if (response.status === 200) { if (response.status === 200) {
currentFieldUuids.forEach((fieldUuid) => { currentFieldUuids.forEach((fieldUuid) => {

@ -78,6 +78,11 @@ export default {
type: Array, type: Array,
required: true required: true
}, },
fetchOptions: {
type: Object,
required: false,
default: () => ({})
},
optionalSubmitters: { optionalSubmitters: {
type: Array, type: Array,
required: false, required: false,
@ -108,7 +113,8 @@ export default {
return fetch(this.url, { return fetch(this.url, {
method: 'POST', method: 'POST',
body: new FormData(this.$refs.form) body: new FormData(this.$refs.form),
...this.fetchOptions
}).then((response) => { }).then((response) => {
if (response.status === 200) { if (response.status === 200) {
this.$emit('success') this.$emit('success')

@ -17,9 +17,10 @@ module Submitters
submitter.preferences['require_email_2fa'] != true submitter.preferences['require_email_2fa'] != true
return true if request.cookie_jar.encrypted[:email_2fa_slug] == submitter.slug return true if request.cookie_jar.encrypted[:email_2fa_slug] == submitter.slug
return true if request.params[:two_factor_token].present? && token = request.params[:two_factor_token].presence || request.headers['x-two-factor-token'].presence
Submitter.signed_id_verifier.verified(request.params[:two_factor_token],
purpose: :email_two_factor) == submitter.slug return true if token.present? &&
Submitter.signed_id_verifier.verified(token, purpose: :email_two_factor) == submitter.slug
false false
end end
@ -32,11 +33,10 @@ module Submitters
return true if request.cookie_jar.encrypted[:email_2fa_slug] == submitter.slug return true if request.cookie_jar.encrypted[:email_2fa_slug] == submitter.slug
return true if submitter.email == current_user&.email && current_user&.account_id == submitter.account_id return true if submitter.email == current_user&.email && current_user&.account_id == submitter.account_id
if request.params[:two_factor_token].present? if (token = request.params[:two_factor_token].presence || request.headers['x-two-factor-token'].presence)
link_2fa_key = [submitter.email.downcase.squish, submitter.submission.template.slug].join(':') link_2fa_key = [submitter.email.downcase.squish, submitter.submission.template.slug].join(':')
return true if Submitter.signed_id_verifier.verified(request.params[:two_factor_token], return true if Submitter.signed_id_verifier.verified(token, purpose: :email_two_factor) == link_2fa_key
purpose: :email_two_factor) == link_2fa_key
end end
false false

Loading…
Cancel
Save