From f637ee907cd4d805c5b17a4440159ecca5dc6a7e Mon Sep 17 00:00:00 2001 From: Pete Matsyburka Date: Sun, 27 Sep 2026 09:31:43 +0300 Subject: [PATCH] update routes --- app/controllers/submit_form_view_controller.rb | 2 +- app/javascript/draw.js | 3 +-- app/javascript/submission_form/dropzone.vue | 12 +++++++++++- app/javascript/submission_form/form.vue | 8 ++++++++ app/javascript/submission_form/initials_step.vue | 12 +++++++++++- app/javascript/submission_form/signature_step.vue | 12 +++++++++++- 6 files changed, 43 insertions(+), 6 deletions(-) diff --git a/app/controllers/submit_form_view_controller.rb b/app/controllers/submit_form_view_controller.rb index c5f31a1d6..07c91742f 100644 --- a/app/controllers/submit_form_view_controller.rb +++ b/app/controllers/submit_form_view_controller.rb @@ -4,7 +4,7 @@ class SubmitFormViewController < ActionController::API def create @submitter = Submitter.find_by!(slug: params[:submit_form_slug]) - return head :not_found if Submitter.signed_id_verifier.verified(params[:v], purpose: :view_form) != @submitter.slug + return head :forbidden if Submitter.signed_id_verifier.verified(params[:v], purpose: :view_form) != @submitter.slug @submitter.opened_at = Time.current @submitter.save diff --git a/app/javascript/draw.js b/app/javascript/draw.js index 30d493a30..b40006fc8 100644 --- a/app/javascript/draw.js +++ b/app/javascript/draw.js @@ -126,11 +126,10 @@ window.customElements.define('draw-signature', class extends HTMLElement { const formData = new FormData() formData.append('file', file) - formData.append('submitter_slug', this.dataset.slug) formData.append('name', 'attachments') formData.append('remember_signature', 'true') - return fetch('/api/attachments', { + return fetch(`/s/${this.dataset.slug}/upload`, { method: 'POST', body: formData }).then(resp => resp.json()) diff --git a/app/javascript/submission_form/dropzone.vue b/app/javascript/submission_form/dropzone.vue index c3fddf57e..d08c2eef6 100644 --- a/app/javascript/submission_form/dropzone.vue +++ b/app/javascript/submission_form/dropzone.vue @@ -197,10 +197,20 @@ export default { formData.append('submitter_slug', this.submitterSlug) formData.append('name', 'attachments') - return fetch(this.baseUrl + '/api/attachments', { + return fetch(this.baseUrl + `/s/${this.submitterSlug}/upload`, { method: 'POST', headers: { ...this.fetchOptions.headers }, body: formData + }).then((resp) => { + if (resp.status === 404) { + return fetch(this.baseUrl + '/api/attachments', { + method: 'POST', + headers: { ...this.fetchOptions.headers }, + body: formData + }) + } else { + return resp + } }).then(async (resp) => { const data = await resp.json() diff --git a/app/javascript/submission_form/form.vue b/app/javascript/submission_form/form.vue index 80d3f45aa..1070304e2 100644 --- a/app/javascript/submission_form/form.vue +++ b/app/javascript/submission_form/form.vue @@ -1607,6 +1607,14 @@ export default { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ v: this.viewToken }) + }).then((resp) => { + if (resp.status === 404) { + return fetch(this.baseUrl + '/api/submitter_form_views', { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ submitter_slug: this.submitterSlug }) + }) + } }) }, previousSignatureValueFor (field) { diff --git a/app/javascript/submission_form/initials_step.vue b/app/javascript/submission_form/initials_step.vue index 5f430476a..c9a5696f4 100644 --- a/app/javascript/submission_form/initials_step.vue +++ b/app/javascript/submission_form/initials_step.vue @@ -501,10 +501,20 @@ export default { formData.append('name', 'attachments') formData.append('type', 'initials') - return fetch(this.baseUrl + '/api/attachments', { + return fetch(this.baseUrl + `/s/${this.submitterSlug}/upload`, { method: 'POST', headers: { ...this.fetchOptions.headers }, body: formData + }).then((resp) => { + if (resp.status === 404) { + return fetch(this.baseUrl + '/api/attachments', { + method: 'POST', + headers: { ...this.fetchOptions.headers }, + body: formData + }) + } else { + return resp + } }).then(async (resp) => { if (resp.status === 422 || resp.status === 500) { const data = await resp.json() diff --git a/app/javascript/submission_form/signature_step.vue b/app/javascript/submission_form/signature_step.vue index 4dcf9bba5..65d537112 100644 --- a/app/javascript/submission_form/signature_step.vue +++ b/app/javascript/submission_form/signature_step.vue @@ -991,10 +991,20 @@ export default { formData.append('remember_signature', this.rememberSignature) formData.append('type', 'signature') - return fetch(this.baseUrl + '/api/attachments', { + return fetch(this.baseUrl + `/s/${this.submitterSlug}/upload`, { method: 'POST', headers: { ...this.fetchOptions.headers }, body: formData + }).then((resp) => { + if (resp.status === 404) { + return fetch(this.baseUrl + '/api/attachments', { + method: 'POST', + headers: { ...this.fetchOptions.headers }, + body: formData + }) + } else { + return resp + } }).then(async (resp) => { if (resp.status === 422 || resp.status === 500) { const data = await resp.json()