From 5ec9cbd6987f05e87ae694b0734f2e2e9a6153aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ivan=20Juri=C5=A1i=C4=87?= Date: Mon, 28 Nov 2022 13:24:51 +0100 Subject: [PATCH] --- .gitignore | 133 +++++ LICENSE | 22 + README.md | 25 + app/.htaccess | 6 + app/Common.php | 15 + app/Config/App.php | 466 +++++++++++++++ app/Config/Autoload.php | 87 +++ app/Config/Boot/development.php | 32 ++ app/Config/Boot/production.php | 21 + app/Config/Boot/testing.php | 32 ++ app/Config/CURLRequest.php | 22 + app/Config/Cache.php | 181 ++++++ app/Config/Constants.php | 94 ++++ app/Config/ContentSecurityPolicy.php | 188 +++++++ app/Config/Cookie.php | 119 ++++ app/Config/Database.php | 91 +++ app/Config/DocTypes.php | 33 ++ app/Config/Email.php | 170 ++++++ app/Config/Encryption.php | 67 +++ app/Config/Events.php | 48 ++ app/Config/Exceptions.php | 60 ++ app/Config/Feature.php | 32 ++ app/Config/Filters.php | 73 +++ app/Config/ForeignCharacters.php | 9 + app/Config/Format.php | 77 +++ app/Config/Generators.php | 40 ++ app/Config/Honeypot.php | 43 ++ app/Config/Images.php | 35 ++ app/Config/Kint.php | 51 ++ app/Config/Logger.php | 154 +++++ app/Config/Migrations.php | 55 ++ app/Config/Mimes.php | 532 ++++++++++++++++++ app/Config/Modules.php | 53 ++ app/Config/Pager.php | 39 ++ app/Config/Paths.php | 85 +++ app/Config/Publisher.php | 28 + app/Config/Routes.php | 67 +++ app/Config/Security.php | 117 ++++ app/Config/Services.php | 32 ++ app/Config/Toolbar.php | 99 ++++ app/Config/UserAgents.php | 252 +++++++++ app/Config/Validation.php | 44 ++ app/Config/View.php | 56 ++ app/Controllers/Auth/LoginController.php | 47 ++ app/Controllers/Auth/ProfileController.php | 13 + app/Controllers/Auth/RegisterController.php | 45 ++ app/Controllers/Auth/SessionConroller.php | 28 + app/Controllers/BaseController.php | 52 ++ app/Controllers/Home.php | 19 + app/Database/Migrations/.gitkeep | 0 .../2022-11-23-110854_CreateUserTable.php | 50 ++ app/Database/Seeds/.gitkeep | 0 app/Filters/.gitkeep | 0 app/Filters/AuthGuard.php | 49 ++ app/Helpers/.gitkeep | 0 app/Language/.gitkeep | 0 app/Language/en/Validation.php | 4 + app/Libraries/.gitkeep | 0 app/Models/.gitkeep | 0 app/Models/UserModel.php | 47 ++ app/ThirdParty/.gitkeep | 0 app/Views/auth/login.php | 44 ++ app/Views/auth/profile.php | 17 + app/Views/auth/register.php | 60 ++ app/Views/errors/cli/error_404.php | 7 + app/Views/errors/cli/error_exception.php | 65 +++ app/Views/errors/cli/production.php | 5 + app/Views/errors/html/debug.css | 197 +++++++ app/Views/errors/html/debug.js | 116 ++++ app/Views/errors/html/error_404.php | 84 +++ app/Views/errors/html/error_exception.php | 397 +++++++++++++ app/Views/errors/html/production.php | 25 + app/Views/home.php | 21 + app/Views/layouts/default.php | 74 +++ app/index.html | 11 + builds | 125 ++++ composer.json | 27 + env | 140 +++++ phpunit.xml.dist | 57 ++ preload.php | 112 ++++ public/.htaccess | 49 ++ public/css/app.css | 1 + public/css/bulma.min.css | 1 + public/favicon.ico | Bin 0 -> 5430 bytes public/img/ci4.png | Bin 0 -> 8284 bytes public/index.php | 67 +++ public/js/app.js | 38 ++ public/robots.txt | 2 + spark | 102 ++++ tests/README.md | 122 ++++ .../2020-02-22-222222_example_migration.php | 37 ++ .../_support/Database/Seeds/ExampleSeeder.php | 41 ++ tests/_support/Libraries/ConfigReader.php | 17 + tests/_support/Models/ExampleModel.php | 24 + tests/database/ExampleDatabaseTest.php | 45 ++ tests/session/ExampleSessionTest.php | 18 + tests/unit/HealthTest.php | 50 ++ writable/.htaccess | 6 + writable/cache/index.html | 11 + writable/logs/index.html | 11 + writable/session/index.html | 11 + writable/uploads/index.html | 11 + 102 files changed, 6487 insertions(+) create mode 100644 .gitignore create mode 100644 LICENSE create mode 100644 README.md create mode 100644 app/.htaccess create mode 100644 app/Common.php create mode 100644 app/Config/App.php create mode 100644 app/Config/Autoload.php create mode 100644 app/Config/Boot/development.php create mode 100644 app/Config/Boot/production.php create mode 100644 app/Config/Boot/testing.php create mode 100644 app/Config/CURLRequest.php create mode 100644 app/Config/Cache.php create mode 100644 app/Config/Constants.php create mode 100644 app/Config/ContentSecurityPolicy.php create mode 100644 app/Config/Cookie.php create mode 100644 app/Config/Database.php create mode 100755 app/Config/DocTypes.php create mode 100644 app/Config/Email.php create mode 100644 app/Config/Encryption.php create mode 100644 app/Config/Events.php create mode 100644 app/Config/Exceptions.php create mode 100644 app/Config/Feature.php create mode 100644 app/Config/Filters.php create mode 100644 app/Config/ForeignCharacters.php create mode 100644 app/Config/Format.php create mode 100644 app/Config/Generators.php create mode 100644 app/Config/Honeypot.php create mode 100644 app/Config/Images.php create mode 100644 app/Config/Kint.php create mode 100644 app/Config/Logger.php create mode 100644 app/Config/Migrations.php create mode 100644 app/Config/Mimes.php create mode 100644 app/Config/Modules.php create mode 100644 app/Config/Pager.php create mode 100644 app/Config/Paths.php create mode 100644 app/Config/Publisher.php create mode 100644 app/Config/Routes.php create mode 100644 app/Config/Security.php create mode 100644 app/Config/Services.php create mode 100644 app/Config/Toolbar.php create mode 100644 app/Config/UserAgents.php create mode 100644 app/Config/Validation.php create mode 100644 app/Config/View.php create mode 100644 app/Controllers/Auth/LoginController.php create mode 100644 app/Controllers/Auth/ProfileController.php create mode 100644 app/Controllers/Auth/RegisterController.php create mode 100644 app/Controllers/Auth/SessionConroller.php create mode 100644 app/Controllers/BaseController.php create mode 100644 app/Controllers/Home.php create mode 100644 app/Database/Migrations/.gitkeep create mode 100644 app/Database/Migrations/2022-11-23-110854_CreateUserTable.php create mode 100644 app/Database/Seeds/.gitkeep create mode 100644 app/Filters/.gitkeep create mode 100644 app/Filters/AuthGuard.php create mode 100644 app/Helpers/.gitkeep create mode 100644 app/Language/.gitkeep create mode 100644 app/Language/en/Validation.php create mode 100644 app/Libraries/.gitkeep create mode 100644 app/Models/.gitkeep create mode 100644 app/Models/UserModel.php create mode 100644 app/ThirdParty/.gitkeep create mode 100644 app/Views/auth/login.php create mode 100644 app/Views/auth/profile.php create mode 100644 app/Views/auth/register.php create mode 100644 app/Views/errors/cli/error_404.php create mode 100644 app/Views/errors/cli/error_exception.php create mode 100644 app/Views/errors/cli/production.php create mode 100644 app/Views/errors/html/debug.css create mode 100644 app/Views/errors/html/debug.js create mode 100644 app/Views/errors/html/error_404.php create mode 100644 app/Views/errors/html/error_exception.php create mode 100644 app/Views/errors/html/production.php create mode 100644 app/Views/home.php create mode 100644 app/Views/layouts/default.php create mode 100644 app/index.html create mode 100755 builds create mode 100644 composer.json create mode 100644 env create mode 100644 phpunit.xml.dist create mode 100644 preload.php create mode 100644 public/.htaccess create mode 100644 public/css/app.css create mode 100644 public/css/bulma.min.css create mode 100644 public/favicon.ico create mode 100644 public/img/ci4.png create mode 100644 public/index.php create mode 100644 public/js/app.js create mode 100644 public/robots.txt create mode 100755 spark create mode 100644 tests/README.md create mode 100644 tests/_support/Database/Migrations/2020-02-22-222222_example_migration.php create mode 100644 tests/_support/Database/Seeds/ExampleSeeder.php create mode 100644 tests/_support/Libraries/ConfigReader.php create mode 100644 tests/_support/Models/ExampleModel.php create mode 100644 tests/database/ExampleDatabaseTest.php create mode 100644 tests/session/ExampleSessionTest.php create mode 100644 tests/unit/HealthTest.php create mode 100755 writable/.htaccess create mode 100755 writable/cache/index.html create mode 100755 writable/logs/index.html create mode 100755 writable/session/index.html create mode 100755 writable/uploads/index.html diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9ba3c82 --- /dev/null +++ b/.gitignore @@ -0,0 +1,133 @@ +#------------------------- +# Operating Specific Junk Files +#------------------------- + +# OS X +.DS_Store +.AppleDouble +.LSOverride + +# OS X Thumbnails +._* + +# Windows image file caches +Thumbs.db +ehthumbs.db +Desktop.ini + +# Recycle Bin used on file shares +$RECYCLE.BIN/ + +# Windows Installer files +*.cab +*.msi +*.msm +*.msp + +# Windows shortcuts +*.lnk + +# Linux +*~ + +# KDE directory preferences +.directory + +# Linux trash folder which might appear on any partition or disk +.Trash-* + +#------------------------- +# Environment Files +#------------------------- +# These should never be under version control, +# as it poses a security risk. +.env +.vagrant +Vagrantfile + +#------------------------ +# Sqlite database +#------------------------ +writable/*.sqlite + +#------------------------- +# Temporary Files +#------------------------- +writable/cache/* +!writable/cache/index.html + +writable/logs/* +!writable/logs/index.html + +writable/session/* +!writable/session/index.html + +writable/uploads/* +!writable/uploads/index.html + +writable/debugbar/* + +php_errors.log + +#------------------------- +# User Guide Temp Files +#------------------------- +user_guide_src/build/* +user_guide_src/cilexer/build/* +user_guide_src/cilexer/dist/* +user_guide_src/cilexer/pycilexer.egg-info/* + +#------------------------- +# Test Files +#------------------------- +tests/coverage* + +# Don't save phpunit under version control. +phpunit + +#------------------------- +# Composer +#------------------------- +vendor/ +composer.lock + +#------------------------- +# IDE / Development Files +#------------------------- + +# Modules Testing +_modules/* + +# phpenv local config +.php-version + +# Jetbrains editors (PHPStorm, etc) +.idea/ +*.iml + +# Netbeans +nbproject/ +build/ +nbbuild/ +dist/ +nbdist/ +nbactions.xml +nb-configuration.xml +.nb-gradle/ + +# Sublime Text +*.tmlanguage.cache +*.tmPreferences.cache +*.stTheme.cache +*.sublime-workspace +*.sublime-project +.phpintel +/api/ + +# Visual Studio Code +.vscode/ + +/results/ +/phpunit*.xml +/.phpunit.*.cache + diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..3142503 --- /dev/null +++ b/LICENSE @@ -0,0 +1,22 @@ +The MIT License (MIT) + +Copyright (c) 2014-2019 British Columbia Institute of Technology +Copyright (c) 2019-2022 CodeIgniter Foundation + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/README.md b/README.md new file mode 100644 index 0000000..e0c112f --- /dev/null +++ b/README.md @@ -0,0 +1,25 @@ +## What is ci4-example-auth? +``` +This is simple example of implementation of Authentication with CodeIgniter 4 framework +``` +## Installation & updates +``` +git clone https://git.jurisic.org/ijurisic/ci4-example-auth.git +cd ci4-auth +composer update +``` + +## Setup type of database for users (for example sqlite) and Timezone +``` +cp env .env +sed -i "/# database.default.hostname = localhost/i database.default.DBDriver = SQLite3" .env +sed -i "/database.default.DBDriver = SQLite3/i database.default.database = database.sqlite" .env +sed -i "/# app.forceGlobalSecureRequests = false/a app.appTimezone = 'Europe/Zagreb'" .env +``` + +## Init. of application +``` +php spark key:generate +php spark migrate +php spark serve +``` diff --git a/app/.htaccess b/app/.htaccess new file mode 100644 index 0000000..f24db0a --- /dev/null +++ b/app/.htaccess @@ -0,0 +1,6 @@ + + Require all denied + + + Deny from all + diff --git a/app/Common.php b/app/Common.php new file mode 100644 index 0000000..23e3e61 --- /dev/null +++ b/app/Common.php @@ -0,0 +1,15 @@ + SYSTEMPATH, + * 'App' => APPPATH + * ]; + *``` + * + * @var array + */ + public $psr4 = [ + APP_NAMESPACE => APPPATH, // For custom app namespace + 'Config' => APPPATH . 'Config', + ]; + + /** + * ------------------------------------------------------------------- + * Class Map + * ------------------------------------------------------------------- + * The class map provides a map of class names and their exact + * location on the drive. Classes loaded in this manner will have + * slightly faster performance because they will not have to be + * searched for within one or more directories as they would if they + * were being autoloaded through a namespace. + * + * Prototype: + *``` + * $classmap = [ + * 'MyClass' => '/path/to/class/file.php' + * ]; + *``` + * + * @var array + */ + public $classmap = []; + + /** + * ------------------------------------------------------------------- + * Files + * ------------------------------------------------------------------- + * The files array provides a list of paths to __non-class__ files + * that will be autoloaded. This can be useful for bootstrap operations + * or for loading functions. + * + * Prototype: + * ``` + * $files = [ + * '/path/to/my/file.php', + * ]; + * ``` + * + * @var array + */ + public $files = []; +} diff --git a/app/Config/Boot/development.php b/app/Config/Boot/development.php new file mode 100644 index 0000000..05a8612 --- /dev/null +++ b/app/Config/Boot/development.php @@ -0,0 +1,32 @@ + + */ + public $file = [ + 'storePath' => WRITEPATH . 'cache/', + 'mode' => 0640, + ]; + + /** + * ------------------------------------------------------------------------- + * Memcached settings + * ------------------------------------------------------------------------- + * Your Memcached servers can be specified below, if you are using + * the Memcached drivers. + * + * @see https://codeigniter.com/user_guide/libraries/caching.html#memcached + * + * @var array + */ + public $memcached = [ + 'host' => '127.0.0.1', + 'port' => 11211, + 'weight' => 1, + 'raw' => false, + ]; + + /** + * ------------------------------------------------------------------------- + * Redis settings + * ------------------------------------------------------------------------- + * Your Redis server can be specified below, if you are using + * the Redis or Predis drivers. + * + * @var array + */ + public $redis = [ + 'host' => '127.0.0.1', + 'password' => null, + 'port' => 6379, + 'timeout' => 0, + 'database' => 0, + ]; + + /** + * -------------------------------------------------------------------------- + * Available Cache Handlers + * -------------------------------------------------------------------------- + * + * This is an array of cache engine alias' and class names. Only engines + * that are listed here are allowed to be used. + * + * @var array + */ + public $validHandlers = [ + 'dummy' => DummyHandler::class, + 'file' => FileHandler::class, + 'memcached' => MemcachedHandler::class, + 'predis' => PredisHandler::class, + 'redis' => RedisHandler::class, + 'wincache' => WincacheHandler::class, + ]; +} diff --git a/app/Config/Constants.php b/app/Config/Constants.php new file mode 100644 index 0000000..47b92f8 --- /dev/null +++ b/app/Config/Constants.php @@ -0,0 +1,94 @@ +` element. + * + * Will default to self if not overridden + * + * @var string|string[]|null + */ + public $baseURI; + + /** + * Lists the URLs for workers and embedded frame contents + * + * @var string|string[] + */ + public $childSrc = 'self'; + + /** + * Limits the origins that you can connect to (via XHR, + * WebSockets, and EventSource). + * + * @var string|string[] + */ + public $connectSrc = 'self'; + + /** + * Specifies the origins that can serve web fonts. + * + * @var string|string[] + */ + public $fontSrc; + + /** + * Lists valid endpoints for submission from `
` tags. + * + * @var string|string[] + */ + public $formAction = 'self'; + + /** + * Specifies the sources that can embed the current page. + * This directive applies to ``, `