Moved enums for inputs

main
Robert 3 years ago
parent b95490c165
commit 94364ac996
  1. 87
      src/bootstrap/safer_io.php
  2. 88
      src/classes/enum/safer_io_enums.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) );

@ -0,0 +1,88 @@
<?php
declare(strict_types=1);
/**
* @author Robert Strutts <Robert@TryingToScale.com>
* @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
],
};
}
}
Loading…
Cancel
Save