From 94364ac996939f72de8ae23cfeb15e7614b52ac1 Mon Sep 17 00:00:00 2001 From: Robert Date: Sun, 25 Dec 2022 22:09:55 -0500 Subject: [PATCH] Moved enums for inputs --- src/bootstrap/safer_io.php | 87 +++++----------------------- src/classes/enum/safer_io_enums.php | 88 +++++++++++++++++++++++++++++ 2 files changed, 101 insertions(+), 74 deletions(-) create mode 100644 src/classes/enum/safer_io_enums.php diff --git a/src/bootstrap/safer_io.php b/src/bootstrap/safer_io.php index d861292..0024ccb 100644 --- a/src/bootstrap/safer_io.php +++ b/src/bootstrap/safer_io.php @@ -30,81 +30,14 @@ declare(strict_types=1); namespace bs_tts; -enum HTML_FLAG { - case raw; // Dangerious XSS attacks... - case strip; - case encode; - case purify; // Allow safe whitelisted HTML elements/tags - case escape; // safely Escape HTML -} - -enum INPUTS: int { - case variable = 998; // User Defined VAR - case debugging = 999; // check POST and then if debugging is set, check GET - case json = 1000; // uses JSON on raw POST BODY - case post = 0; // INPUT_POST; - case get = 1; // INPUT_GET; - case cookie = 2; //INPUT_COOKIE; - case env = 4; // INPUT_ENV; - case server = 5; // INPUT_SERVER; - - public function resolve(): int { - return match($this) { - self::post => INPUT_POST, - self::get => INPUT_GET, - self::cookie => INPUT_COOKIE, - self::env => INPUT_ENV, - self::server => INPUT_SERVER, - }; - } -} - -enum DB_FILTER { - case ON; // Tries to Filter out SQL from User Input - case OFF; // Normal pass thourgh... -} - -enum FIELD_FILTER: string { - case raw_string = "string"; - case array_of_strings = "strings"; - case email = "email-address"; - case url = "site-url"; - case raw = "unfiltered-non-sanitized"; - case integer_number = "integer"; - case array_of_ints = "integers"; - case floating_point = "float"; - case array_of_floats = "floats"; - - public function resolve() { - return match($this) { - self::raw_string => FILTER_UNSAFE_RAW, - self::array_of_strings => [ - 'filter' => FILTER_UNSAFE_RAW, - 'flags' => FILTER_REQUIRE_ARRAY - ], - self::email => FILTER_SANITIZE_EMAIL, - self::url => FILTER_SANITIZE_URL, - self::raw => FILTER_DEFAULT, // Unfiltered, non-sanitized!!! - self::integer_number => [ - 'filter' => FILTER_SANITIZE_NUMBER_INT, - 'flags' => FILTER_REQUIRE_SCALAR - ], - self::array_of_ints => [ - 'filter' => FILTER_SANITIZE_NUMBER_INT, - 'flags' => FILTER_REQUIRE_ARRAY - ], - self::floating_point => [ - 'filter' => FILTER_SANITIZE_NUMBER_FLOAT, - 'flags' => FILTER_FLAG_ALLOW_FRACTION - ], - self::array_of_floats => [ - 'filter' => FILTER_SANITIZE_NUMBER_FLOAT, - 'flags' => FILTER_REQUIRE_ARRAY - ], - }; - } -} +use \tts\enum\FIELD_FILTER; // Defined in enum\safer_io_enums +use \tts\enum\DB_FILTER; +use \tts\enum\HTML_FLAG; +use \tts\enum\INPUTS; +/** + * use_io defines public members to be used on safer_io INPUTS + */ final class use_io { public $input_var; public $input_type; @@ -116,6 +49,10 @@ final class use_io { public $use_db_filter; } +/** + * use_iol is to Auto-Wire Input Output Logic controllers + * in standard paths defined below + */ final class use_iol { public static function auto_wire( string $root_folder, @@ -123,6 +60,8 @@ final class use_iol { string $method = 'index', string $db_service= 'db_mocker' ) { + new \tts\enum\safer_io_enums(); // Auto load + $project = rtrim(\bs_tts\site_helper::get_project(), '/'); \main_tts\registry::set('db', \main_tts\registry::get('di')->get_service($db_service) ); diff --git a/src/classes/enum/safer_io_enums.php b/src/classes/enum/safer_io_enums.php new file mode 100644 index 0000000..8354238 --- /dev/null +++ b/src/classes/enum/safer_io_enums.php @@ -0,0 +1,88 @@ + + * @copyright Copyright (c) 2022, Robert Strutts. + * @license https://mit-license.org/ + */ + +namespace tts\enum; + +class safer_io_enums {} // Needed to auto-load + +enum HTML_FLAG { + case raw; // Dangerious XSS attacks... + case strip; + case encode; + case purify; // Allow safe whitelisted HTML elements/tags + case escape; // safely Escape HTML +} + +enum INPUTS: int { + case variable = 998; // User Defined VAR + case debugging = 999; // check POST and then if debugging is set, check GET + case json = 1000; // uses JSON on raw POST BODY + case post = 0; // INPUT_POST; + case get = 1; // INPUT_GET; + case cookie = 2; //INPUT_COOKIE; + case env = 4; // INPUT_ENV; + case server = 5; // INPUT_SERVER; + + public function resolve(): int { + return match($this) { + self::post => INPUT_POST, + self::get => INPUT_GET, + self::cookie => INPUT_COOKIE, + self::env => INPUT_ENV, + self::server => INPUT_SERVER, + }; + } +} + +enum DB_FILTER { + case ON; // Tries to Filter out SQL from User Input + case OFF; // Normal pass thourgh... +} + +enum FIELD_FILTER: string { + case raw_string = "string"; + case array_of_strings = "strings"; + case email = "email-address"; + case url = "site-url"; + case raw = "unfiltered-non-sanitized"; + case integer_number = "integer"; + case array_of_ints = "integers"; + case floating_point = "float"; + case array_of_floats = "floats"; + + public function resolve() { + return match($this) { + self::raw_string => FILTER_UNSAFE_RAW, + self::array_of_strings => [ + 'filter' => FILTER_UNSAFE_RAW, + 'flags' => FILTER_REQUIRE_ARRAY + ], + self::email => FILTER_SANITIZE_EMAIL, + self::url => FILTER_SANITIZE_URL, + self::raw => FILTER_DEFAULT, // Unfiltered, non-sanitized!!! + self::integer_number => [ + 'filter' => FILTER_SANITIZE_NUMBER_INT, + 'flags' => FILTER_REQUIRE_SCALAR + ], + self::array_of_ints => [ + 'filter' => FILTER_SANITIZE_NUMBER_INT, + 'flags' => FILTER_REQUIRE_ARRAY + ], + self::floating_point => [ + 'filter' => FILTER_SANITIZE_NUMBER_FLOAT, + 'flags' => FILTER_FLAG_ALLOW_FRACTION + ], + self::array_of_floats => [ + 'filter' => FILTER_SANITIZE_NUMBER_FLOAT, + 'flags' => FILTER_REQUIRE_ARRAY + ], + }; + } +}