From 4d6773e42015750aad84daa75358f8f954602787 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pawe=C5=82=20Nowacki?= Date: Thu, 27 Dec 2018 20:33:58 +0100 Subject: [PATCH 1/9] form_open enhancments (reusing existing code) Allows to pass the ID of CSRF field as a key of form_open $attribute arr. `form_open(['csrf_id' => 'id-foo-bar']);` --- system/Helpers/form_helper.php | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/system/Helpers/form_helper.php b/system/Helpers/form_helper.php index 5855850e8cbc..83223d5e774a 100644 --- a/system/Helpers/form_helper.php +++ b/system/Helpers/form_helper.php @@ -65,6 +65,12 @@ function form_open(string $action = '', $attributes = [], array $hidden = []): s $action = site_url($action); } + if(is_array($attributes) && array_key_exists('csrf_id', $attributes)) + { + $csrf_id = $attributes['csrf_id']; + unset($attributes['csrf_id']); + } + $attributes = stringify_attributes($attributes); if (stripos($attributes, 'method=') === false) @@ -82,17 +88,16 @@ function form_open(string $action = '', $attributes = [], array $hidden = []): s // Add CSRF field if enabled, but leave it out for GET requests and requests to external websites $before = Services::filters()->getFilters()['before']; - if ((in_array('csrf', $before) || array_key_exists('csrf', $before)) && strpos($action, base_url()) !== false && ! stripos($form, 'method="get"') - ) + if ((in_array('csrf', $before) || array_key_exists('csrf', $before)) && strpos($action, base_url()) !== false && ! stripos($form, 'method="get"')) { - $hidden[csrf_token()] = csrf_hash(); + $form .= csrf_field($csrf_id ?? null); } if (is_array($hidden)) { foreach ($hidden as $name => $value) { - $form .= '' . "\n"; + $form .= form_hidden($name, $value); } } @@ -167,7 +172,7 @@ function form_hidden($name, $value = '', bool $recursing = false): string if (! is_array($value)) { - $form .= '\n"; + $form .= '\n"; } else { From 26503f25b6ec8b9bba9a268061dc065f00bb4b9d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pawe=C5=82=20Nowacki?= Date: Thu, 27 Dec 2018 20:38:04 +0100 Subject: [PATCH 2/9] Update FormHelperTest.php --- tests/system/Helpers/FormHelperTest.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/system/Helpers/FormHelperTest.php b/tests/system/Helpers/FormHelperTest.php index d9069f59cc0f..abacc9d1bc9b 100644 --- a/tests/system/Helpers/FormHelperTest.php +++ b/tests/system/Helpers/FormHelperTest.php @@ -253,7 +253,7 @@ public function testFormHidden() { $expected = <<\n +\n EOH; $this->assertEquals($expected, form_hidden('username', 'johndoe')); } @@ -266,7 +266,7 @@ public function testFormHiddenArrayInput() ]; $expected = << + EOH; $this->assertEquals($expected, form_hidden($data, null)); @@ -280,7 +280,7 @@ public function testFormHiddenArrayValues() ]; $expected = << + EOH; $this->assertEquals($expected, form_hidden('name', $data)); From 5ab6387d782e03b93dfb17b5e732416a782d5840 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pawe=C5=82=20Nowacki?= Date: Thu, 27 Dec 2018 22:00:36 +0100 Subject: [PATCH 3/9] Update form_helper.php ups. --- system/Helpers/form_helper.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/system/Helpers/form_helper.php b/system/Helpers/form_helper.php index 83223d5e774a..d23542c59084 100644 --- a/system/Helpers/form_helper.php +++ b/system/Helpers/form_helper.php @@ -172,7 +172,7 @@ function form_hidden($name, $value = '', bool $recursing = false): string if (! is_array($value)) { - $form .= '\n"; + $form .= '\n"; } else { From 179406d599b4edecd1a20a51119ef57b0493c598 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pawe=C5=82=20Nowacki?= Date: Fri, 28 Dec 2018 00:34:27 +0100 Subject: [PATCH 4/9] Update form_helper.php --- system/Helpers/form_helper.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/system/Helpers/form_helper.php b/system/Helpers/form_helper.php index d23542c59084..454c15042404 100644 --- a/system/Helpers/form_helper.php +++ b/system/Helpers/form_helper.php @@ -172,7 +172,7 @@ function form_hidden($name, $value = '', bool $recursing = false): string if (! is_array($value)) { - $form .= '\n"; + $form .= '\n"; } else { From d75517aa7de6878f7325f893e9bdd7a027afa092 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pawe=C5=82=20Nowacki?= Date: Fri, 28 Dec 2018 00:35:32 +0100 Subject: [PATCH 5/9] Update form_helper.php --- system/Helpers/form_helper.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/system/Helpers/form_helper.php b/system/Helpers/form_helper.php index 454c15042404..d23542c59084 100644 --- a/system/Helpers/form_helper.php +++ b/system/Helpers/form_helper.php @@ -172,7 +172,7 @@ function form_hidden($name, $value = '', bool $recursing = false): string if (! is_array($value)) { - $form .= '\n"; + $form .= '\n"; } else { From d7ee702e4b84bb2506e6f0350ad182a1096d09d4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pawe=C5=82=20Nowacki?= Date: Fri, 28 Dec 2018 00:37:15 +0100 Subject: [PATCH 6/9] Update FormHelperTest.php --- tests/system/Helpers/FormHelperTest.php | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/tests/system/Helpers/FormHelperTest.php b/tests/system/Helpers/FormHelperTest.php index abacc9d1bc9b..3fb849fac196 100644 --- a/tests/system/Helpers/FormHelperTest.php +++ b/tests/system/Helpers/FormHelperTest.php @@ -35,7 +35,7 @@ public function testFormOpenBasic() $Name = csrf_token(); $expected = << - + EOH; } @@ -73,7 +73,7 @@ public function testFormOpenWithoutAction() $Name = csrf_token(); $expected = << - + EOH; } @@ -110,7 +110,7 @@ public function testFormOpenWithoutMethod() $Name = csrf_token(); $expected = << - + EOH; } @@ -147,8 +147,8 @@ public function testFormOpenWithHidden() $Name = csrf_token(); $expected = << - - + + EOH; } @@ -156,7 +156,7 @@ public function testFormOpenWithHidden() { $expected = << - + EOH; } @@ -225,7 +225,7 @@ public function testFormOpenMultipart() $Name = csrf_token(); $expected = << - + EOH; } From 096aa10471a2fdc889134b875248b1bf88749b67 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pawe=C5=82=20Nowacki?= Date: Fri, 28 Dec 2018 01:03:19 +0100 Subject: [PATCH 7/9] Update FormHelperTest.php --- tests/system/Helpers/FormHelperTest.php | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/system/Helpers/FormHelperTest.php b/tests/system/Helpers/FormHelperTest.php index 3fb849fac196..4c97b0706233 100644 --- a/tests/system/Helpers/FormHelperTest.php +++ b/tests/system/Helpers/FormHelperTest.php @@ -156,6 +156,7 @@ public function testFormOpenWithHidden() { $expected = << + EOH; From 2c1ebbbbea8e51fd3f0e40eee8bb6bb91bc96d93 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pawe=C5=82=20Nowacki?= Date: Mon, 31 Dec 2018 10:09:34 +0100 Subject: [PATCH 8/9] Update form_helper.php --- system/Helpers/form_helper.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/system/Helpers/form_helper.php b/system/Helpers/form_helper.php index d23542c59084..4f21effbc568 100644 --- a/system/Helpers/form_helper.php +++ b/system/Helpers/form_helper.php @@ -67,7 +67,7 @@ function form_open(string $action = '', $attributes = [], array $hidden = []): s if(is_array($attributes) && array_key_exists('csrf_id', $attributes)) { - $csrf_id = $attributes['csrf_id']; + $csrfId = $attributes['csrf_id']; unset($attributes['csrf_id']); } @@ -90,7 +90,7 @@ function form_open(string $action = '', $attributes = [], array $hidden = []): s if ((in_array('csrf', $before) || array_key_exists('csrf', $before)) && strpos($action, base_url()) !== false && ! stripos($form, 'method="get"')) { - $form .= csrf_field($csrf_id ?? null); + $form .= csrf_field($csrfId ?? null); } if (is_array($hidden)) From 0c6eeac11080e6552582e950568b590054134252 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pawe=C5=82=20Nowacki?= Date: Mon, 31 Dec 2018 10:24:12 +0100 Subject: [PATCH 9/9] Update form_helper.rst --- user_guide_src/source/helpers/form_helper.rst | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/user_guide_src/source/helpers/form_helper.rst b/user_guide_src/source/helpers/form_helper.rst index 89091d08542b..a06489d5d902 100644 --- a/user_guide_src/source/helpers/form_helper.rst +++ b/user_guide_src/source/helpers/form_helper.rst @@ -90,6 +90,15 @@ The following functions are available: The above examples would create a form similar to this::