diff --git a/app/Http/Controllers/Forms/PublicFormController.php b/app/Http/Controllers/Forms/PublicFormController.php index 0b86468..69f7e67 100644 --- a/app/Http/Controllers/Forms/PublicFormController.php +++ b/app/Http/Controllers/Forms/PublicFormController.php @@ -23,7 +23,7 @@ class PublicFormController extends Controller public function show(Request $request, string $slug) { - $form = Form::whereSlug($slug)->whereVisibility('public')->firstOrFail(); + $form = Form::whereSlug($slug)->whereIn('visibility', ['public', 'closed'])->firstOrFail(); if ($form->workspace == null) { // Workspace deleted return $this->error([ diff --git a/app/Models/Forms/Form.php b/app/Models/Forms/Form.php index 22d546b..f2f915e 100644 --- a/app/Models/Forms/Form.php +++ b/app/Models/Forms/Form.php @@ -20,7 +20,7 @@ class Form extends Model const DARK_MODE_VALUES = ['auto', 'light', 'dark']; const THEMES = ['default', 'simple', 'notion']; const WIDTHS = ['centered', 'full']; - const VISIBILITY = ['public', 'draft']; + const VISIBILITY = ['public', 'draft', 'closed']; use HasFactory, HasSlug, SoftDeletes; diff --git a/resources/js/components/open/forms/OpenCompleteForm.vue b/resources/js/components/open/forms/OpenCompleteForm.vue index c07de3e..e308242 100644 --- a/resources/js/components/open/forms/OpenCompleteForm.vue +++ b/resources/js/components/open/forms/OpenCompleteForm.vue @@ -33,7 +33,7 @@ -
@@ -68,7 +68,7 @@
- 0 ? 's' : '' }}
  • Draft (not public)
  • +
  • Closed
  • Edited {{ form.last_edited_human }}
  • diff --git a/tests/Feature/Forms/AnswerFormTest.php b/tests/Feature/Forms/AnswerFormTest.php index 8d6d98b..c8a2cf6 100644 --- a/tests/Feature/Forms/AnswerFormTest.php +++ b/tests/Feature/Forms/AnswerFormTest.php @@ -85,6 +85,18 @@ it('can not submit draft form', function () { ->assertStatus(403); }); +it('can not submit visibility closed form', function () { + $user = $this->actingAsUser(); + $workspace = $this->createUserWorkspace($user); + $form = $this->createForm($user, $workspace, [ + 'visibility' => 'closed' + ]); + $formData = FormSubmissionDataFactory::generateSubmissionData($form); + + $this->postJson(route('forms.answer', $form->slug), $formData) + ->assertStatus(403); +}); + it('can not submit form with past dates', function () { $user = $this->actingAsUser(); $workspace = $this->createUserWorkspace($user);