From dac1dc21e0a274324d33207a805461b560a9a1da Mon Sep 17 00:00:00 2001 From: Frederic Guillot Date: Tue, 23 Aug 2016 22:03:45 -0400 Subject: [PATCH] Add validator namespace --- .gitignore | 1 + app/controllers/config.php | 5 ++- app/controllers/feed.php | 3 +- app/controllers/user.php | 4 +- app/models/config.php | 39 ----------------- app/models/database.php | 22 ---------- app/models/feed.php | 21 --------- app/models/item.php | 2 +- app/models/user.php | 39 ----------------- app/validators/config.php | 42 ++++++++++++++++++ app/validators/feed.php | 21 +++++++++ app/validators/user.php | 66 +++++++++++++++++++++++++++++ composer.json | 5 ++- vendor/composer/autoload_files.php | 3 ++ vendor/composer/autoload_static.php | 3 ++ 15 files changed, 149 insertions(+), 127 deletions(-) create mode 100644 app/validators/config.php create mode 100644 app/validators/feed.php create mode 100644 app/validators/user.php diff --git a/.gitignore b/.gitignore index 718dfad..2416d16 100644 --- a/.gitignore +++ b/.gitignore @@ -20,5 +20,6 @@ config.php !app/models/* !app/controllers/* !app/templates/* +!app/validators/* rules/*.php data/favicons/*.* diff --git a/app/controllers/config.php b/app/controllers/config.php index 8a9f770..60d57d5 100644 --- a/app/controllers/config.php +++ b/app/controllers/config.php @@ -1,6 +1,7 @@ 0, 'image_proxy' => 0, 'favicons' => 0, 'debug_mode' => 0, 'original_marks_read' => 0); Helper\check_csrf_values($values); - list($valid, $errors) = Model\Config\validate_modification($values); + list($valid, $errors) = Validator\Config\validate_modification($values); if ($valid) { if (Model\Config\save($values)) { diff --git a/app/controllers/feed.php b/app/controllers/feed.php index 02741da..2ef3079 100644 --- a/app/controllers/feed.php +++ b/app/controllers/feed.php @@ -1,6 +1,7 @@ '' ); - list($valid, $errors) = Model\Feed\validate_modification($values); + list($valid, $errors) = Validator\Feed\validate_modification($values); if ($valid) { if (Model\Feed\update($values)) { diff --git a/app/controllers/user.php b/app/controllers/user.php index 1530334..07a39e4 100644 --- a/app/controllers/user.php +++ b/app/controllers/user.php @@ -1,5 +1,7 @@ execute(), - $v->getErrors() - ); -} - // Save config into the database and update the session function save(array $values) { diff --git a/app/models/database.php b/app/models/database.php index 1469dd3..0e87465 100644 --- a/app/models/database.php +++ b/app/models/database.php @@ -5,8 +5,6 @@ namespace Model\Database; use Schema; use DirectoryIterator; use Model\Config; -use SimpleValidator\Validator; -use SimpleValidator\Validators; // Create a new database for a new user function create($filename, $username, $password) @@ -101,23 +99,3 @@ function get_list() return $listing; } - -// Validate database form -function validate(array $values) -{ - $v = new Validator($values, array( - new Validators\Required('name', t('The database name is required')), - new Validators\AlphaNumeric('name', t('The name must have only alpha-numeric characters')), - new Validators\Required('username', t('The user name is required')), - new Validators\MaxLength('username', t('The maximum length is 50 characters'), 50), - new Validators\Required('password', t('The password is required')), - new Validators\MinLength('password', t('The minimum length is 6 characters'), 6), - new Validators\Required('confirmation', t('The confirmation is required')), - new Validators\Equals('password', 'confirmation', t('Passwords don\'t match')), - )); - - return array( - $v->execute(), - $v->getErrors() - ); -} diff --git a/app/models/feed.php b/app/models/feed.php index feb17b9..b5c9810 100644 --- a/app/models/feed.php +++ b/app/models/feed.php @@ -9,8 +9,6 @@ use Model\Item; use Model\Group; use Model\Favicon; use Helper; -use SimpleValidator\Validator; -use SimpleValidator\Validators; use PicoDb\Database; use PicoFeed\Reader\Reader; use PicoFeed\PicoFeedException; @@ -351,22 +349,3 @@ function disable($feed_id) { return Database::getInstance('db')->table('feeds')->eq('id', $feed_id)->save((array('enabled' => 0))); } - -// Validation for edit -function validate_modification(array $values) -{ - $v = new Validator($values, array( - new Validators\Required('id', t('The feed id is required')), - new Validators\Required('title', t('The title is required')), - new Validators\Required('site_url', t('The site url is required')), - new Validators\Required('feed_url', t('The feed url is required')), - )); - - $result = $v->execute(); - $errors = $v->getErrors(); - - return array( - $result, - $errors - ); -} diff --git a/app/models/item.php b/app/models/item.php index f7ff870..3e6a001 100644 --- a/app/models/item.php +++ b/app/models/item.php @@ -4,7 +4,7 @@ namespace Model\Item; use PicoDb\Database; use PicoFeed\Logging\Logger; -use Model\Service; +use Handler\Service; use Model\Config; use Model\Group; use Handler; diff --git a/app/models/user.php b/app/models/user.php index 260a112..010ec47 100644 --- a/app/models/user.php +++ b/app/models/user.php @@ -2,8 +2,6 @@ namespace Model\User; -use SimpleValidator\Validator; -use SimpleValidator\Validators; use PicoDb\Database; use Session; use Request; @@ -39,40 +37,3 @@ function set_last_login() ->hashtable('settings') ->put(array('last_login' => time())); } - -// Validate authentication -function validate_login(array $values) -{ - $v = new Validator($values, array( - new Validators\Required('username', t('The user name is required')), - new Validators\MaxLength('username', t('The maximum length is 50 characters'), 50), - new Validators\Required('password', t('The password is required')) - )); - - $result = $v->execute(); - $errors = $v->getErrors(); - - if ($result) { - $credentials = get_credentials(); - - if ($credentials && $credentials['username'] === $values['username'] && password_verify($values['password'], $credentials['password'])) { - set_last_login(); - $_SESSION['loggedin'] = true; - $_SESSION['config'] = Config\get_all(); - - // Setup the remember me feature - if (! empty($values['remember_me'])) { - $cookie = RememberMe\create(DatabaseModel\select(), $values['username'], Request\get_ip_address(), Request\get_user_agent()); - RememberMe\write_cookie($cookie['token'], $cookie['sequence'], $cookie['expiration']); - } - } else { - $result = false; - $errors['login'] = t('Bad username or password'); - } - } - - return array( - $result, - $errors - ); -} diff --git a/app/validators/config.php b/app/validators/config.php new file mode 100644 index 0000000..63f09c8 --- /dev/null +++ b/app/validators/config.php @@ -0,0 +1,42 @@ +execute(), + $v->getErrors() + ); +} diff --git a/app/validators/feed.php b/app/validators/feed.php new file mode 100644 index 0000000..745826d --- /dev/null +++ b/app/validators/feed.php @@ -0,0 +1,21 @@ +execute(), + $v->getErrors(), + ); +} diff --git a/app/validators/user.php b/app/validators/user.php new file mode 100644 index 0000000..dec43de --- /dev/null +++ b/app/validators/user.php @@ -0,0 +1,66 @@ +execute(), + $v->getErrors() + ); +} + +function validate_login(array $values) +{ + $v = new Validator($values, array( + new Validators\Required('username', t('The user name is required')), + new Validators\MaxLength('username', t('The maximum length is 50 characters'), 50), + new Validators\Required('password', t('The password is required')) + )); + + $result = $v->execute(); + $errors = $v->getErrors(); + + if ($result) { + $credentials = UserModel\get_credentials(); + + if ($credentials && $credentials['username'] === $values['username'] && password_verify($values['password'], $credentials['password'])) { + UserModel\set_last_login(); + $_SESSION['loggedin'] = true; + $_SESSION['config'] = Config\get_all(); + + // Setup the remember me feature + if (! empty($values['remember_me'])) { + $cookie = RememberMe\create(DatabaseModel\select(), $values['username'], Request\get_ip_address(), Request\get_user_agent()); + RememberMe\write_cookie($cookie['token'], $cookie['sequence'], $cookie['expiration']); + } + } else { + $result = false; + $errors['login'] = t('Bad username or password'); + } + } + + return array( + $result, + $errors + ); +} diff --git a/composer.json b/composer.json index c2e0d7f..c22827f 100644 --- a/composer.json +++ b/composer.json @@ -54,7 +54,10 @@ "app/models/database.php", "app/models/remember_me.php", "app/models/group.php", - "app/models/favicon.php" + "app/models/favicon.php", + "app/validators/config.php", + "app/validators/feed.php", + "app/validators/user.php" ], "classmap": [ "vendor/fguillot/json-rpc/src/", diff --git a/vendor/composer/autoload_files.php b/vendor/composer/autoload_files.php index 727ddb8..0c37fa8 100644 --- a/vendor/composer/autoload_files.php +++ b/vendor/composer/autoload_files.php @@ -36,4 +36,7 @@ return array( 'ee585b658e324609d721bc6f959e85c8' => $baseDir . '/app/models/remember_me.php', 'fc49fda782025f9f73852265b1fa7760' => $baseDir . '/app/models/group.php', '785cebb801997d40232b8337459f1606' => $baseDir . '/app/models/favicon.php', + 'e348a7661429e81fa0e42efff1ebfe6e' => $baseDir . '/app/validators/config.php', + '679a0a7c75414c39298328823e0be180' => $baseDir . '/app/validators/feed.php', + 'eea04c7f459daa801618b71f49a8c470' => $baseDir . '/app/validators/user.php', ); diff --git a/vendor/composer/autoload_static.php b/vendor/composer/autoload_static.php index 30ed838..cc05901 100644 --- a/vendor/composer/autoload_static.php +++ b/vendor/composer/autoload_static.php @@ -37,6 +37,9 @@ class ComposerStaticInitfd7e8d436e1dc450edc3153ac8bc31b4 'ee585b658e324609d721bc6f959e85c8' => __DIR__ . '/../..' . '/app/models/remember_me.php', 'fc49fda782025f9f73852265b1fa7760' => __DIR__ . '/../..' . '/app/models/group.php', '785cebb801997d40232b8337459f1606' => __DIR__ . '/../..' . '/app/models/favicon.php', + 'e348a7661429e81fa0e42efff1ebfe6e' => __DIR__ . '/../..' . '/app/validators/config.php', + '679a0a7c75414c39298328823e0be180' => __DIR__ . '/../..' . '/app/validators/feed.php', + 'eea04c7f459daa801618b71f49a8c470' => __DIR__ . '/../..' . '/app/validators/user.php', ); public static $prefixLengthsPsr4 = array (