Skip to content

Commit 15734c7

Browse files
Merge branch 'main' into FORMS-2094-Approver-Keyboard
2 parents 51aafd8 + f970134 commit 15734c7

4 files changed

Lines changed: 72 additions & 2 deletions

File tree

app/frontend/src/components/designer/settings/FormAccessSettings.vue

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,7 @@ function userTypeChanged() {
7878
...form.value,
7979
enableSubmitterDraft: false,
8080
enableCopyExistingSubmission: false,
81+
allowSubmitterToUploadFile: false,
8182
};
8283
}
8384
if (form.value.userType !== 'team') {

app/frontend/src/components/designer/settings/FormFunctionalitySettings.vue

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,7 @@ defineExpose({
119119
data-test="canUploadDraftCheckbox"
120120
hide-details="auto"
121121
class="my-0"
122+
:disabled="form.userType === ID_MODE.PUBLIC"
122123
@update:model-value="allowSubmitterToUploadFileChanged"
123124
>
124125
<template #label>

app/src/forms/form/service.js

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -171,6 +171,11 @@ const service = {
171171
_setAssigneeInSubmissionsTable: (formData) => {
172172
return formData.showAssigneeInSubmissionsTable === true && formData.enableStatusUpdates;
173173
},
174+
_setAllowSubmitterToUploadFile: (formData) => {
175+
// do not allow submitter to upload files if the form is public, or if allowSubmitterToUploadFile is false.
176+
const isPublicForm = formData.identityProviders && Array.isArray(formData.identityProviders) && formData.identityProviders.some((idp) => idp.code === 'public');
177+
return !isPublicForm && !falsey(formData.allowSubmitterToUploadFile);
178+
},
174179
_findFileIds: (schema, data) => {
175180
const findFiles = (currentData) => {
176181
let fileIds = [];
@@ -228,7 +233,7 @@ const service = {
228233
obj.enableStatusUpdates = data.enableStatusUpdates;
229234
obj.enableSubmitterDraft = data.enableSubmitterDraft;
230235
obj.createdBy = currentUser?.usernameIdp || 'public';
231-
obj.allowSubmitterToUploadFile = data.allowSubmitterToUploadFile;
236+
obj.allowSubmitterToUploadFile = service._setAllowSubmitterToUploadFile(data);
232237
obj.schedule = data.schedule;
233238
obj.subscribe = data.subscribe;
234239
obj.reminder_enabled = data.reminder_enabled;
@@ -312,7 +317,7 @@ const service = {
312317
enableStatusUpdates: data.enableStatusUpdates,
313318
enableSubmitterDraft: data.enableSubmitterDraft,
314319
updatedBy: currentUser.usernameIdp,
315-
allowSubmitterToUploadFile: data.allowSubmitterToUploadFile,
320+
allowSubmitterToUploadFile: service._setAllowSubmitterToUploadFile(data),
316321
schedule: data.schedule,
317322
subscribe: data.subscribe,
318323
reminder_enabled: validatedReminderEnabled,

app/tests/unit/forms/form/service.spec.js

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2581,3 +2581,66 @@ describe('listFormComponentsProactiveHelp', () => {
25812581
expect(result).toEqual({});
25822582
});
25832583
});
2584+
2585+
describe('_setAllowSubmitterToUploadFile', () => {
2586+
it('returns true if identityProviders does not include public', () => {
2587+
const formData = {
2588+
identityProviders: [{ code: 'idir' }],
2589+
allowSubmitterToUploadFile: true,
2590+
};
2591+
expect(service._setAllowSubmitterToUploadFile(formData)).toBe(true);
2592+
});
2593+
2594+
it('returns false if identityProviders includes public and allowSubmitterToUploadFile is truthy', () => {
2595+
const formData = {
2596+
identityProviders: [{ code: 'public' }],
2597+
allowSubmitterToUploadFile: true,
2598+
};
2599+
expect(service._setAllowSubmitterToUploadFile(formData)).toBe(false);
2600+
});
2601+
2602+
it('returns false if allowSubmitterToUploadFile is false', () => {
2603+
const formData = {
2604+
identityProviders: [{ code: 'idir' }],
2605+
allowSubmitterToUploadFile: false,
2606+
};
2607+
expect(service._setAllowSubmitterToUploadFile(formData)).toBe(false);
2608+
});
2609+
2610+
it('returns true if identityProviders is missing (team protected) and allow is true', () => {
2611+
const formData = {
2612+
allowSubmitterToUploadFile: true,
2613+
};
2614+
expect(service._setAllowSubmitterToUploadFile(formData)).toBe(true);
2615+
});
2616+
2617+
it('returns false if identityProviders is missing (team protected) and allow is false', () => {
2618+
const formData = {
2619+
allowSubmitterToUploadFile: false,
2620+
};
2621+
expect(service._setAllowSubmitterToUploadFile(formData)).toBe(false);
2622+
});
2623+
2624+
it('returns true if identityProviders is empty and allow is true', () => {
2625+
const formData = {
2626+
identityProviders: [],
2627+
allowSubmitterToUploadFile: true,
2628+
};
2629+
expect(service._setAllowSubmitterToUploadFile(formData)).toBe(true);
2630+
});
2631+
2632+
it('returns false if identityProviders is empty and allow is false', () => {
2633+
const formData = {
2634+
identityProviders: [],
2635+
allowSubmitterToUploadFile: false,
2636+
};
2637+
expect(service._setAllowSubmitterToUploadFile(formData)).toBe(false);
2638+
});
2639+
2640+
it('returns false if allowSubmitterToUploadFile is missing', () => {
2641+
const formData = {
2642+
identityProviders: [{ code: 'idir' }],
2643+
};
2644+
expect(service._setAllowSubmitterToUploadFile(formData)).toBe(false);
2645+
});
2646+
});

0 commit comments

Comments
 (0)