diff options
-rw-r--r-- | .gitignore | 1 | ||||
-rw-r--r-- | composer.json | 1 | ||||
-rw-r--r-- | composer.lock | 1171 | ||||
-rw-r--r-- | config/auth0.php | 56 | ||||
-rw-r--r-- | public/css/master.css | 26 | ||||
-rw-r--r-- | public/css/minimal.css | 4 | ||||
-rw-r--r-- | resources/views/errors/generic-error.blade.php | 9 | ||||
-rw-r--r-- | resources/views/errors/no-auth.blade.php | 8 | ||||
-rw-r--r-- | resources/views/includes/admin/header.blade.php | 12 | ||||
-rw-r--r-- | resources/views/includes/header.blade.php | 8 | ||||
-rw-r--r-- | resources/views/layouts/default-admin.blade.php | 23 | ||||
-rw-r--r-- | resources/views/pages/admin/guestbook-del-confirm.blade.php | 33 | ||||
-rw-r--r-- | resources/views/pages/admin/guestbook.blade.php | 27 | ||||
-rw-r--r-- | resources/views/pages/admin/index.blade.php | 9 | ||||
-rw-r--r-- | routes/web.php | 42 |
15 files changed, 1378 insertions, 52 deletions
@@ -17,3 +17,4 @@ yarn-error.log /.fleet /.idea /.vscode +.auth0.*.json diff --git a/composer.json b/composer.json index 451f135..bc3e8f5 100644 --- a/composer.json +++ b/composer.json @@ -6,6 +6,7 @@ "license": "MIT", "require": { "php": "^8.1", + "auth0/login": "^7.8", "guzzlehttp/guzzle": "^7.2", "laravel/framework": "^10.10", "laravel/sanctum": "^3.2", diff --git a/composer.lock b/composer.lock index 3018272..47dcb86 100644 --- a/composer.lock +++ b/composer.lock @@ -4,9 +4,217 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "505f8d503188864625fc855900ea2202", + "content-hash": "b946004dacc886bc1ef1ae8e1e9644ac", "packages": [ { + "name": "auth0/auth0-php", + "version": "8.6.0", + "source": { + "type": "git", + "url": "https://github.com/auth0/auth0-PHP.git", + "reference": "b776758d6ead42aac4ce2959c34c2aa2bd5af0d4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/auth0/auth0-PHP/zipball/b776758d6ead42aac4ce2959c34c2aa2bd5af0d4", + "reference": "b776758d6ead42aac4ce2959c34c2aa2bd5af0d4", + "shasum": "" + }, + "require": { + "ext-json": "*", + "ext-mbstring": "*", + "ext-openssl": "*", + "php": "^8.0", + "php-http/multipart-stream-builder": "^1.2", + "psr-discovery/all": "^1.0", + "psr/http-client-implementation": "^1.0", + "psr/http-factory-implementation": "^1.0", + "psr/http-message-implementation": "^1.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^3.14", + "mockery/mockery": "^1.5", + "pestphp/pest": "^2.0", + "phpstan/phpstan": "^1.10", + "phpstan/phpstan-strict-rules": "^1.5", + "psr-mock/http": "^1.0", + "rector/rector": "^0.15", + "symfony/cache": "^4.4 || ^5.0 || ^6.0", + "symfony/event-dispatcher": "^4.0 || ^5.0 || ^6.0", + "vimeo/psalm": "^5.8", + "wikimedia/composer-merge-plugin": "^2.0" + }, + "suggest": { + "psr/cache-implementation": "(PSR-6 Cache) Improve performance by avoiding making redundant network requests.", + "psr/event-dispatcher-implementation": "(PSR-14 Event Dispatcher) Observe and react to events when they occur." + }, + "type": "library", + "extra": { + "merge-plugin": { + "ignore-duplicates": false, + "include": [ + "composer.local.json" + ], + "merge-dev": true, + "merge-extra": false, + "merge-extra-deep": false, + "merge-scripts": false, + "recurse": true, + "replace": true + } + }, + "autoload": { + "psr-4": { + "Auth0\\SDK\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Auth0", + "email": "support@auth0.com", + "homepage": "https://auth0.com/" + } + ], + "description": "PHP SDK for Auth0 Authentication and Management APIs.", + "homepage": "https://github.com/auth0/auth0-PHP", + "keywords": [ + "Authentication", + "JSON Web Token", + "JWK", + "OpenId", + "api", + "auth", + "auth0", + "authorization", + "json web key", + "jwt", + "login", + "oauth", + "protect", + "secure" + ], + "support": { + "issues": "https://github.com/auth0/auth0-PHP/issues", + "source": "https://github.com/auth0/auth0-PHP/tree/8.6.0" + }, + "time": "2023-05-02T17:21:37+00:00" + }, + { + "name": "auth0/login", + "version": "7.9.1", + "source": { + "type": "git", + "url": "https://github.com/auth0/laravel-auth0.git", + "reference": "5e3fc3f62bc1784a57c4d565125380416a36dafc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/auth0/laravel-auth0/zipball/5e3fc3f62bc1784a57c4d565125380416a36dafc", + "reference": "5e3fc3f62bc1784a57c4d565125380416a36dafc", + "shasum": "" + }, + "require": { + "auth0/auth0-php": "^8.6", + "ext-json": "*", + "illuminate/contracts": "^9 || ^10", + "illuminate/http": "^9 || ^10", + "illuminate/support": "^9 || ^10", + "php": "^8.0", + "psr-discovery/all": "^1", + "psr/cache": "^2 || ^3" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^3", + "mockery/mockery": "^1", + "nunomaduro/larastan": "^2", + "orchestra/testbench": "^7 || ^8", + "pestphp/pest": "^2", + "pestphp/pest-plugin-laravel": "^2", + "phpstan/phpstan": "^1", + "phpstan/phpstan-strict-rules": "^1", + "psalm/plugin-laravel": "^2", + "psr-mock/http": "^1", + "rector/rector": "0.17.0", + "spatie/laravel-ray": "^1", + "squizlabs/php_codesniffer": "^3", + "symfony/cache": "^6", + "vimeo/psalm": "^5", + "wikimedia/composer-merge-plugin": "^2" + }, + "type": "library", + "extra": { + "laravel": { + "aliases": { + "Auth0": "Auth0\\Laravel\\Facade\\Auth0" + }, + "providers": [ + "Auth0\\Laravel\\ServiceProvider" + ] + }, + "merge-plugin": { + "ignore-duplicates": false, + "include": [ + "composer.local.json" + ], + "merge-dev": true, + "merge-extra": false, + "merge-extra-deep": false, + "merge-scripts": false, + "recurse": true, + "replace": true + } + }, + "autoload": { + "psr-4": { + "Auth0\\Laravel\\": [ + "src/", + "deprecated/" + ] + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Auth0", + "email": "support@auth0.com", + "homepage": "https://auth0.com/" + } + ], + "description": "Auth0 Laravel SDK. Straight-forward and tested methods for implementing authentication, and accessing Auth0's Management API endpoints.", + "homepage": "https://github.com/auth0/laravel-auth0", + "keywords": [ + "Authentication", + "JSON Web Token", + "JWK", + "OpenId", + "api", + "auth", + "auth0", + "authorization", + "json web key", + "jwt", + "laravel", + "login", + "oauth", + "protect", + "secure" + ], + "support": { + "email": "support@auth0.com", + "forum": "https://community.auth0.com", + "issues": "https://github.com/auth0/laravel-auth0/issues", + "source": "https://github.com/auth0/laravel-auth0" + }, + "time": "2023-06-21T19:46:21+00:00" + }, + { "name": "brick/math", "version": "0.11.0", "source": { @@ -62,6 +270,87 @@ "time": "2023-01-15T23:15:59+00:00" }, { + "name": "composer/semver", + "version": "3.3.2", + "source": { + "type": "git", + "url": "https://github.com/composer/semver.git", + "reference": "3953f23262f2bff1919fc82183ad9acb13ff62c9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/composer/semver/zipball/3953f23262f2bff1919fc82183ad9acb13ff62c9", + "reference": "3953f23262f2bff1919fc82183ad9acb13ff62c9", + "shasum": "" + }, + "require": { + "php": "^5.3.2 || ^7.0 || ^8.0" + }, + "require-dev": { + "phpstan/phpstan": "^1.4", + "symfony/phpunit-bridge": "^4.2 || ^5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Composer\\Semver\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nils Adermann", + "email": "naderman@naderman.de", + "homepage": "http://www.naderman.de" + }, + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" + }, + { + "name": "Rob Bast", + "email": "rob.bast@gmail.com", + "homepage": "http://robbast.nl" + } + ], + "description": "Semver library that offers utilities, version constraint parsing and validation.", + "keywords": [ + "semantic", + "semver", + "validation", + "versioning" + ], + "support": { + "irc": "irc://irc.freenode.org/composer", + "issues": "https://github.com/composer/semver/issues", + "source": "https://github.com/composer/semver/tree/3.3.2" + }, + "funding": [ + { + "url": "https://packagist.com", + "type": "custom" + }, + { + "url": "https://github.com/composer", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/composer/composer", + "type": "tidelift" + } + ], + "time": "2022-04-01T19:23:25+00:00" + }, + { "name": "dflydev/dot-access-data", "version": "v3.0.2", "source": { @@ -138,28 +427,28 @@ }, { "name": "doctrine/inflector", - "version": "2.0.6", + "version": "2.0.8", "source": { "type": "git", "url": "https://github.com/doctrine/inflector.git", - "reference": "d9d313a36c872fd6ee06d9a6cbcf713eaa40f024" + "reference": "f9301a5b2fb1216b2b08f02ba04dc45423db6bff" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/inflector/zipball/d9d313a36c872fd6ee06d9a6cbcf713eaa40f024", - "reference": "d9d313a36c872fd6ee06d9a6cbcf713eaa40f024", + "url": "https://api.github.com/repos/doctrine/inflector/zipball/f9301a5b2fb1216b2b08f02ba04dc45423db6bff", + "reference": "f9301a5b2fb1216b2b08f02ba04dc45423db6bff", "shasum": "" }, "require": { "php": "^7.2 || ^8.0" }, "require-dev": { - "doctrine/coding-standard": "^10", + "doctrine/coding-standard": "^11.0", "phpstan/phpstan": "^1.8", "phpstan/phpstan-phpunit": "^1.1", "phpstan/phpstan-strict-rules": "^1.3", "phpunit/phpunit": "^8.5 || ^9.5", - "vimeo/psalm": "^4.25" + "vimeo/psalm": "^4.25 || ^5.4" }, "type": "library", "autoload": { @@ -209,7 +498,7 @@ ], "support": { "issues": "https://github.com/doctrine/inflector/issues", - "source": "https://github.com/doctrine/inflector/tree/2.0.6" + "source": "https://github.com/doctrine/inflector/tree/2.0.8" }, "funding": [ { @@ -225,7 +514,7 @@ "type": "tidelift" } ], - "time": "2022-10-20T09:10:12+00:00" + "time": "2023-06-16T13:40:37+00:00" }, { "name": "doctrine/lexer", @@ -976,16 +1265,16 @@ }, { "name": "laravel/framework", - "version": "v10.13.5", + "version": "v10.15.0", "source": { "type": "git", "url": "https://github.com/laravel/framework.git", - "reference": "03106ae9ba2ec4b36dc973b7bdca6fad81e032b4" + "reference": "c7599dc92e04532824bafbd226c2936ce6a905b8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/03106ae9ba2ec4b36dc973b7bdca6fad81e032b4", - "reference": "03106ae9ba2ec4b36dc973b7bdca6fad81e032b4", + "url": "https://api.github.com/repos/laravel/framework/zipball/c7599dc92e04532824bafbd226c2936ce6a905b8", + "reference": "c7599dc92e04532824bafbd226c2936ce6a905b8", "shasum": "" }, "require": { @@ -1172,7 +1461,7 @@ "issues": "https://github.com/laravel/framework/issues", "source": "https://github.com/laravel/framework" }, - "time": "2023-06-08T20:25:36+00:00" + "time": "2023-07-11T13:43:52+00:00" }, { "name": "laravel/sanctum", @@ -1762,16 +2051,16 @@ }, { "name": "monolog/monolog", - "version": "3.3.1", + "version": "3.4.0", "source": { "type": "git", "url": "https://github.com/Seldaek/monolog.git", - "reference": "9b5daeaffce5b926cac47923798bba91059e60e2" + "reference": "e2392369686d420ca32df3803de28b5d6f76867d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/9b5daeaffce5b926cac47923798bba91059e60e2", - "reference": "9b5daeaffce5b926cac47923798bba91059e60e2", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/e2392369686d420ca32df3803de28b5d6f76867d", + "reference": "e2392369686d420ca32df3803de28b5d6f76867d", "shasum": "" }, "require": { @@ -1786,7 +2075,7 @@ "doctrine/couchdb": "~1.0@dev", "elasticsearch/elasticsearch": "^7 || ^8", "ext-json": "*", - "graylog2/gelf-php": "^1.4.2 || ^2@dev", + "graylog2/gelf-php": "^1.4.2 || ^2.0", "guzzlehttp/guzzle": "^7.4.5", "guzzlehttp/psr7": "^2.2", "mongodb/mongodb": "^1.8", @@ -1794,7 +2083,7 @@ "phpstan/phpstan": "^1.9", "phpstan/phpstan-deprecation-rules": "^1.0", "phpstan/phpstan-strict-rules": "^1.4", - "phpunit/phpunit": "^9.5.26", + "phpunit/phpunit": "^10.1", "predis/predis": "^1.1 || ^2", "ruflin/elastica": "^7", "symfony/mailer": "^5.4 || ^6", @@ -1847,7 +2136,7 @@ ], "support": { "issues": "https://github.com/Seldaek/monolog/issues", - "source": "https://github.com/Seldaek/monolog/tree/3.3.1" + "source": "https://github.com/Seldaek/monolog/tree/3.4.0" }, "funding": [ { @@ -1859,20 +2148,20 @@ "type": "tidelift" } ], - "time": "2023-02-06T13:46:10+00:00" + "time": "2023-06-21T08:46:11+00:00" }, { "name": "nesbot/carbon", - "version": "2.67.0", + "version": "2.68.1", "source": { "type": "git", "url": "https://github.com/briannesbitt/Carbon.git", - "reference": "c1001b3bc75039b07f38a79db5237c4c529e04c8" + "reference": "4f991ed2a403c85efbc4f23eb4030063fdbe01da" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/c1001b3bc75039b07f38a79db5237c4c529e04c8", - "reference": "c1001b3bc75039b07f38a79db5237c4c529e04c8", + "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/4f991ed2a403c85efbc4f23eb4030063fdbe01da", + "reference": "4f991ed2a403c85efbc4f23eb4030063fdbe01da", "shasum": "" }, "require": { @@ -1961,7 +2250,7 @@ "type": "tidelift" } ], - "time": "2023-05-25T22:09:47+00:00" + "time": "2023-06-20T18:29:04+00:00" }, { "name": "nette/schema", @@ -2255,6 +2544,140 @@ "time": "2023-02-08T01:06:31+00:00" }, { + "name": "php-http/discovery", + "version": "1.19.1", + "source": { + "type": "git", + "url": "https://github.com/php-http/discovery.git", + "reference": "57f3de01d32085fea20865f9b16fb0e69347c39e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-http/discovery/zipball/57f3de01d32085fea20865f9b16fb0e69347c39e", + "reference": "57f3de01d32085fea20865f9b16fb0e69347c39e", + "shasum": "" + }, + "require": { + "composer-plugin-api": "^1.0|^2.0", + "php": "^7.1 || ^8.0" + }, + "conflict": { + "nyholm/psr7": "<1.0", + "zendframework/zend-diactoros": "*" + }, + "provide": { + "php-http/async-client-implementation": "*", + "php-http/client-implementation": "*", + "psr/http-client-implementation": "*", + "psr/http-factory-implementation": "*", + "psr/http-message-implementation": "*" + }, + "require-dev": { + "composer/composer": "^1.0.2|^2.0", + "graham-campbell/phpspec-skip-example-extension": "^5.0", + "php-http/httplug": "^1.0 || ^2.0", + "php-http/message-factory": "^1.0", + "phpspec/phpspec": "^5.1 || ^6.1 || ^7.3", + "symfony/phpunit-bridge": "^6.2" + }, + "type": "composer-plugin", + "extra": { + "class": "Http\\Discovery\\Composer\\Plugin", + "plugin-optional": true + }, + "autoload": { + "psr-4": { + "Http\\Discovery\\": "src/" + }, + "exclude-from-classmap": [ + "src/Composer/Plugin.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com" + } + ], + "description": "Finds and installs PSR-7, PSR-17, PSR-18 and HTTPlug implementations", + "homepage": "http://php-http.org", + "keywords": [ + "adapter", + "client", + "discovery", + "factory", + "http", + "message", + "psr17", + "psr7" + ], + "support": { + "issues": "https://github.com/php-http/discovery/issues", + "source": "https://github.com/php-http/discovery/tree/1.19.1" + }, + "time": "2023-07-11T07:02:26+00:00" + }, + { + "name": "php-http/multipart-stream-builder", + "version": "1.3.0", + "source": { + "type": "git", + "url": "https://github.com/php-http/multipart-stream-builder.git", + "reference": "f5938fd135d9fa442cc297dc98481805acfe2b6a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-http/multipart-stream-builder/zipball/f5938fd135d9fa442cc297dc98481805acfe2b6a", + "reference": "f5938fd135d9fa442cc297dc98481805acfe2b6a", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0", + "php-http/discovery": "^1.15", + "psr/http-factory-implementation": "^1.0" + }, + "require-dev": { + "nyholm/psr7": "^1.0", + "php-http/message": "^1.5", + "php-http/message-factory": "^1.0.2", + "phpunit/phpunit": "^7.5.15 || ^8.5 || ^9.3" + }, + "type": "library", + "autoload": { + "psr-4": { + "Http\\Message\\MultipartStream\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Tobias Nyholm", + "email": "tobias.nyholm@gmail.com" + } + ], + "description": "A builder class that help you create a multipart stream", + "homepage": "http://php-http.org", + "keywords": [ + "factory", + "http", + "message", + "multipart stream", + "stream" + ], + "support": { + "issues": "https://github.com/php-http/multipart-stream-builder/issues", + "source": "https://github.com/php-http/multipart-stream-builder/tree/1.3.0" + }, + "time": "2023-04-28T14:10:22+00:00" + }, + { "name": "phpoption/phpoption", "version": "1.9.1", "source": { @@ -2330,6 +2753,652 @@ "time": "2023-02-25T19:38:58+00:00" }, { + "name": "psr-discovery/all", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/psr-discovery/all.git", + "reference": "73deceb26d3190f53a5cd3b95751c6a223804a8b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/psr-discovery/all/zipball/73deceb26d3190f53a5cd3b95751c6a223804a8b", + "reference": "73deceb26d3190f53a5cd3b95751c6a223804a8b", + "shasum": "" + }, + "require": { + "php": "^8.0", + "psr-discovery/cache-implementations": "^1.0", + "psr-discovery/container-implementations": "^1.0", + "psr-discovery/event-dispatcher-implementations": "^1.0", + "psr-discovery/http-client-implementations": "^1.0", + "psr-discovery/http-factory-implementations": "^1.0", + "psr-discovery/log-implementations": "^1.0" + }, + "type": "metapackage", + "extra": { + "merge-plugin": { + "ignore-duplicates": false, + "include": [ + "composer.local.json" + ], + "merge-dev": true, + "merge-extra": false, + "merge-extra-deep": false, + "merge-scripts": false, + "recurse": true, + "replace": true + } + }, + "autoload": { + "psr-4": { + "PsrDiscovery\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Evan Sims", + "email": "hello@evansims.com", + "homepage": "https://evansims.com/" + } + ], + "description": "Lightweight library that discovers available PSR implementations by searching for a list of well-known classes that implement the relevant interface, and returns an instance of the first one that is found.", + "homepage": "https://github.com/psr-discovery", + "keywords": [ + "PSR-11", + "discovery", + "psr", + "psr-14", + "psr-17", + "psr-18", + "psr-3", + "psr-6" + ], + "support": { + "source": "https://github.com/psr-discovery/all/tree/1.0.0" + }, + "time": "2023-03-27T16:37:46+00:00" + }, + { + "name": "psr-discovery/cache-implementations", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/psr-discovery/cache-implementations.git", + "reference": "33b63d8e324f4aff296508b592bbd4d71b45da68" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/psr-discovery/cache-implementations/zipball/33b63d8e324f4aff296508b592bbd4d71b45da68", + "reference": "33b63d8e324f4aff296508b592bbd4d71b45da68", + "shasum": "" + }, + "require": { + "php": "^8.0", + "psr-discovery/discovery": "^1.0", + "psr/cache": "^1.0 | ^2.0 | ^3.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^3.14", + "infection/infection": "^0.26", + "mockery/mockery": "^1.5", + "pestphp/pest": "^2.0", + "phpstan/phpstan": "^1.10", + "phpstan/phpstan-strict-rules": "^1.5", + "rector/rector": "^0.15", + "vimeo/psalm": "^5.8", + "wikimedia/composer-merge-plugin": "^2.0" + }, + "type": "library", + "extra": { + "merge-plugin": { + "ignore-duplicates": false, + "include": [ + "composer.local.json" + ], + "merge-dev": true, + "merge-extra": false, + "merge-extra-deep": false, + "merge-scripts": false, + "recurse": true, + "replace": true + } + }, + "autoload": { + "psr-4": { + "PsrDiscovery\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Evan Sims", + "email": "hello@evansims.com", + "homepage": "https://evansims.com/" + } + ], + "description": "Lightweight library that discovers available PSR-6 Cache implementations by searching for a list of well-known classes that implement the relevant interface, and returns an instance of the first one that is found.", + "homepage": "https://github.com/psr-discovery", + "keywords": [ + "cache", + "cache-implementation", + "discovery", + "psr", + "psr-6" + ], + "support": { + "issues": "https://github.com/psr-discovery/cache-implementations/issues", + "source": "https://github.com/psr-discovery/cache-implementations/tree/1.0.0" + }, + "time": "2023-03-27T06:19:44+00:00" + }, + { + "name": "psr-discovery/container-implementations", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/psr-discovery/container-implementations.git", + "reference": "366612e9260f247d8b8ee279094a33dd4cbc6886" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/psr-discovery/container-implementations/zipball/366612e9260f247d8b8ee279094a33dd4cbc6886", + "reference": "366612e9260f247d8b8ee279094a33dd4cbc6886", + "shasum": "" + }, + "require": { + "php": "^8.0", + "psr-discovery/discovery": "^1.0", + "psr/container": "^1.0 | ^2.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^3.14", + "infection/infection": "^0.26", + "mockery/mockery": "^1.5", + "pestphp/pest": "^2.0", + "phpstan/phpstan": "^1.10", + "phpstan/phpstan-strict-rules": "^1.5", + "rector/rector": "^0.15", + "vimeo/psalm": "^5.8", + "wikimedia/composer-merge-plugin": "^2.0" + }, + "type": "library", + "extra": { + "merge-plugin": { + "ignore-duplicates": false, + "include": [ + "composer.local.json" + ], + "merge-dev": true, + "merge-extra": false, + "merge-extra-deep": false, + "merge-scripts": false, + "recurse": true, + "replace": true + } + }, + "autoload": { + "psr-4": { + "PsrDiscovery\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Evan Sims", + "email": "hello@evansims.com", + "homepage": "https://evansims.com/" + } + ], + "description": "Lightweight library that discovers available PSR-11 Container implementations by searching for a list of well-known classes that implement the relevant interface, and returns an instance of the first one that is found.", + "homepage": "https://github.com/psr-discovery/http-client-implementations", + "keywords": [ + "PSR-11", + "discovery", + "psr" + ], + "support": { + "issues": "https://github.com/psr-discovery/container-implementations/issues", + "source": "https://github.com/psr-discovery/container-implementations/tree/1.0.0" + }, + "time": "2023-03-27T06:18:27+00:00" + }, + { + "name": "psr-discovery/discovery", + "version": "1.0.2", + "source": { + "type": "git", + "url": "https://github.com/psr-discovery/discovery.git", + "reference": "83e746a138705d56f8e3dc102e28c79f32ae9b54" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/psr-discovery/discovery/zipball/83e746a138705d56f8e3dc102e28c79f32ae9b54", + "reference": "83e746a138705d56f8e3dc102e28c79f32ae9b54", + "shasum": "" + }, + "require": { + "composer/semver": "^3.0", + "php": "^8.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^3.14", + "infection/infection": "^0.26", + "mockery/mockery": "^1.5", + "pestphp/pest": "^2.0", + "phpstan/phpstan": "^1.10", + "phpstan/phpstan-strict-rules": "^1.5", + "rector/rector": "^0.15", + "vimeo/psalm": "^5.8", + "wikimedia/composer-merge-plugin": "^2.0" + }, + "type": "library", + "extra": { + "merge-plugin": { + "ignore-duplicates": false, + "include": [ + "composer.local.json" + ], + "merge-dev": true, + "merge-extra": false, + "merge-extra-deep": false, + "merge-scripts": false, + "recurse": true, + "replace": true + } + }, + "autoload": { + "psr-4": { + "PsrDiscovery\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Evan Sims", + "email": "hello@evansims.com", + "homepage": "https://evansims.com/" + } + ], + "description": "Lightweight library that discovers available PSR implementations by searching for a list of well-known classes that implement the relevant interfaces, and returning an instance of the first one that is found.", + "homepage": "https://github.com/psr-discovery/discovery", + "keywords": [ + "PSR-11", + "discovery", + "psr", + "psr-14", + "psr-17", + "psr-18", + "psr-3", + "psr-6" + ], + "support": { + "issues": "https://github.com/psr-discovery/discovery/issues", + "source": "https://github.com/psr-discovery/discovery/tree/1.0.2" + }, + "time": "2023-03-27T19:49:39+00:00" + }, + { + "name": "psr-discovery/event-dispatcher-implementations", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/psr-discovery/event-dispatcher-implementations.git", + "reference": "903d05afe29bd1a17c18924004d282d28bda1759" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/psr-discovery/event-dispatcher-implementations/zipball/903d05afe29bd1a17c18924004d282d28bda1759", + "reference": "903d05afe29bd1a17c18924004d282d28bda1759", + "shasum": "" + }, + "require": { + "php": "^8.0", + "psr-discovery/discovery": "^1.0", + "psr/event-dispatcher": "^1.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^3.14", + "infection/infection": "^0.26", + "mockery/mockery": "^1.5", + "pestphp/pest": "^2.0", + "phpstan/phpstan": "^1.10", + "phpstan/phpstan-strict-rules": "^1.5", + "rector/rector": "^0.15", + "vimeo/psalm": "^5.8", + "wikimedia/composer-merge-plugin": "^2.0" + }, + "type": "library", + "extra": { + "merge-plugin": { + "ignore-duplicates": false, + "include": [ + "composer.local.json" + ], + "merge-dev": true, + "merge-extra": false, + "merge-extra-deep": false, + "merge-scripts": false, + "recurse": true, + "replace": true + } + }, + "autoload": { + "psr-4": { + "PsrDiscovery\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Evan Sims", + "email": "hello@evansims.com", + "homepage": "https://evansims.com/" + } + ], + "description": "Lightweight library that discovers available PSR-14 Event Dispatcher implementations by searching for a list of well-known classes that implement the relevant interface, and returns an instance of the first one that is found.", + "homepage": "https://github.com/psr-discovery/http-client-implementations", + "keywords": [ + "discovery", + "psr", + "psr-18" + ], + "support": { + "issues": "https://github.com/psr-discovery/event-dispatcher-implementations/issues", + "source": "https://github.com/psr-discovery/event-dispatcher-implementations/tree/1.0.0" + }, + "time": "2023-03-27T06:17:31+00:00" + }, + { + "name": "psr-discovery/http-client-implementations", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/psr-discovery/http-client-implementations.git", + "reference": "ca0cbc370789a3fd0f6aa3e7c4f4e5c123eadef3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/psr-discovery/http-client-implementations/zipball/ca0cbc370789a3fd0f6aa3e7c4f4e5c123eadef3", + "reference": "ca0cbc370789a3fd0f6aa3e7c4f4e5c123eadef3", + "shasum": "" + }, + "require": { + "php": "^8.0", + "psr-discovery/discovery": "^1.0", + "psr/http-client": "^1.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^3.14", + "infection/infection": "^0.26", + "mockery/mockery": "^1.5", + "pestphp/pest": "^2.0", + "phpstan/phpstan": "^1.10", + "phpstan/phpstan-strict-rules": "^1.5", + "rector/rector": "^0.15", + "vimeo/psalm": "^5.8", + "wikimedia/composer-merge-plugin": "^2.0" + }, + "type": "library", + "extra": { + "merge-plugin": { + "ignore-duplicates": false, + "include": [ + "composer.local.json" + ], + "merge-dev": true, + "merge-extra": false, + "merge-extra-deep": false, + "merge-scripts": false, + "recurse": true, + "replace": true + } + }, + "autoload": { + "psr-4": { + "PsrDiscovery\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Evan Sims", + "email": "hello@evansims.com", + "homepage": "https://evansims.com/" + } + ], + "description": "Lightweight library that discovers available PSR-18 HTTP Client implementations by searching for a list of well-known classes that implement the relevant interface, and returns an instance of the first one that is found.", + "homepage": "https://github.com/psr-discovery/http-client-implementations", + "keywords": [ + "discovery", + "psr", + "psr-18" + ], + "support": { + "issues": "https://github.com/psr-discovery/http-client-implementations/issues", + "source": "https://github.com/psr-discovery/http-client-implementations/tree/1.0.0" + }, + "time": "2023-03-27T06:16:24+00:00" + }, + { + "name": "psr-discovery/http-factory-implementations", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/psr-discovery/http-factory-implementations.git", + "reference": "064bb0ec6d2e49aeb6f15aa5a8793abe02daf56b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/psr-discovery/http-factory-implementations/zipball/064bb0ec6d2e49aeb6f15aa5a8793abe02daf56b", + "reference": "064bb0ec6d2e49aeb6f15aa5a8793abe02daf56b", + "shasum": "" + }, + "require": { + "php": "^8.0", + "psr-discovery/discovery": "^1.0", + "psr/http-factory": "^1.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^3.14", + "infection/infection": "^0.26", + "mockery/mockery": "^1.5", + "pestphp/pest": "^2.0", + "phpstan/phpstan": "^1.10", + "phpstan/phpstan-strict-rules": "^1.5", + "rector/rector": "^0.15", + "vimeo/psalm": "^5.8", + "wikimedia/composer-merge-plugin": "^2.0" + }, + "type": "library", + "extra": { + "merge-plugin": { + "ignore-duplicates": false, + "include": [ + "composer.local.json" + ], + "merge-dev": true, + "merge-extra": false, + "merge-extra-deep": false, + "merge-scripts": false, + "recurse": true, + "replace": true + } + }, + "autoload": { + "psr-4": { + "PsrDiscovery\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Evan Sims", + "email": "hello@evansims.com", + "homepage": "https://evansims.com/" + } + ], + "description": "Lightweight library that discovers available PSR-17 HTTP Factory implementations by searching for a list of well-known classes that implement the relevant interface, and returns an instance of the first one that is found.", + "homepage": "https://github.com/psr-discovery/http-factory-implementations", + "keywords": [ + "discovery", + "psr", + "psr-18" + ], + "support": { + "issues": "https://github.com/psr-discovery/http-factory-implementations/issues", + "source": "https://github.com/psr-discovery/http-factory-implementations/tree/1.0.1" + }, + "time": "2023-04-26T06:22:45+00:00" + }, + { + "name": "psr-discovery/log-implementations", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/psr-discovery/log-implementations.git", + "reference": "7be7af9bb1bf41a4985356b16cc654e0227eed38" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/psr-discovery/log-implementations/zipball/7be7af9bb1bf41a4985356b16cc654e0227eed38", + "reference": "7be7af9bb1bf41a4985356b16cc654e0227eed38", + "shasum": "" + }, + "require": { + "php": "^8.0", + "psr-discovery/discovery": "^1.0", + "psr/log": "^1.0 | ^2.0 | ^3.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^3.14", + "infection/infection": "^0.26", + "mockery/mockery": "^1.5", + "pestphp/pest": "^2.0", + "phpstan/phpstan": "^1.10", + "phpstan/phpstan-strict-rules": "^1.5", + "rector/rector": "^0.15", + "vimeo/psalm": "^5.8", + "wikimedia/composer-merge-plugin": "^2.0" + }, + "type": "library", + "extra": { + "merge-plugin": { + "ignore-duplicates": false, + "include": [ + "composer.local.json" + ], + "merge-dev": true, + "merge-extra": false, + "merge-extra-deep": false, + "merge-scripts": false, + "recurse": true, + "replace": true + } + }, + "autoload": { + "psr-4": { + "PsrDiscovery\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Evan Sims", + "email": "hello@evansims.com", + "homepage": "https://evansims.com/" + } + ], + "description": "Lightweight library that discovers available PSR-3 Log implementations by searching for a list of well-known classes that implement the relevant interface, and returns an instance of the first one that is found.", + "homepage": "https://github.com/psr-discovery", + "keywords": [ + "discovery", + "log", + "log-implementation", + "psr", + "psr-3" + ], + "support": { + "issues": "https://github.com/psr-discovery/log-implementations/issues", + "source": "https://github.com/psr-discovery/log-implementations/tree/1.0.0" + }, + "time": "2023-03-27T06:14:11+00:00" + }, + { + "name": "psr/cache", + "version": "3.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/cache.git", + "reference": "aa5030cfa5405eccfdcb1083ce040c2cb8d253bf" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/cache/zipball/aa5030cfa5405eccfdcb1083ce040c2cb8d253bf", + "reference": "aa5030cfa5405eccfdcb1083ce040c2cb8d253bf", + "shasum": "" + }, + "require": { + "php": ">=8.0.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Cache\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interface for caching libraries", + "keywords": [ + "cache", + "psr", + "psr-6" + ], + "support": { + "source": "https://github.com/php-fig/cache/tree/3.0.0" + }, + "time": "2021-02-03T23:26:27+00:00" + }, + { "name": "psr/container", "version": "2.0.2", "source": { @@ -3648,16 +4717,16 @@ }, { "name": "symfony/http-foundation", - "version": "v6.3.0", + "version": "v6.3.1", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "718a97ed430d34e5c568ea2c44eab708c6efbefb" + "reference": "e0ad0d153e1c20069250986cd9e9dd1ccebb0d66" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/718a97ed430d34e5c568ea2c44eab708c6efbefb", - "reference": "718a97ed430d34e5c568ea2c44eab708c6efbefb", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/e0ad0d153e1c20069250986cd9e9dd1ccebb0d66", + "reference": "e0ad0d153e1c20069250986cd9e9dd1ccebb0d66", "shasum": "" }, "require": { @@ -3705,7 +4774,7 @@ "description": "Defines an object-oriented layer for the HTTP specification", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-foundation/tree/v6.3.0" + "source": "https://github.com/symfony/http-foundation/tree/v6.3.1" }, "funding": [ { @@ -3721,20 +4790,20 @@ "type": "tidelift" } ], - "time": "2023-05-19T12:46:45+00:00" + "time": "2023-06-24T11:51:27+00:00" }, { "name": "symfony/http-kernel", - "version": "v6.3.0", + "version": "v6.3.1", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "241973f3dd900620b1ca052fe409144f11aea748" + "reference": "161e16fd2e35fb4881a43bc8b383dfd5be4ac374" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/241973f3dd900620b1ca052fe409144f11aea748", - "reference": "241973f3dd900620b1ca052fe409144f11aea748", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/161e16fd2e35fb4881a43bc8b383dfd5be4ac374", + "reference": "161e16fd2e35fb4881a43bc8b383dfd5be4ac374", "shasum": "" }, "require": { @@ -3818,7 +4887,7 @@ "description": "Provides a structured process for converting a Request into a Response", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-kernel/tree/v6.3.0" + "source": "https://github.com/symfony/http-kernel/tree/v6.3.1" }, "funding": [ { @@ -3834,7 +4903,7 @@ "type": "tidelift" } ], - "time": "2023-05-30T19:03:32+00:00" + "time": "2023-06-26T06:07:32+00:00" }, { "name": "symfony/mailer", @@ -4797,16 +5866,16 @@ }, { "name": "symfony/routing", - "version": "v6.3.0", + "version": "v6.3.1", "source": { "type": "git", "url": "https://github.com/symfony/routing.git", - "reference": "827f59fdc67eecfc4dfff81f9c93bf4d98f0c89b" + "reference": "d37ad1779c38b8eb71996d17dc13030dcb7f9cf5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/827f59fdc67eecfc4dfff81f9c93bf4d98f0c89b", - "reference": "827f59fdc67eecfc4dfff81f9c93bf4d98f0c89b", + "url": "https://api.github.com/repos/symfony/routing/zipball/d37ad1779c38b8eb71996d17dc13030dcb7f9cf5", + "reference": "d37ad1779c38b8eb71996d17dc13030dcb7f9cf5", "shasum": "" }, "require": { @@ -4859,7 +5928,7 @@ "url" ], "support": { - "source": "https://github.com/symfony/routing/tree/v6.3.0" + "source": "https://github.com/symfony/routing/tree/v6.3.1" }, "funding": [ { @@ -4875,7 +5944,7 @@ "type": "tidelift" } ], - "time": "2023-04-28T15:57:00+00:00" + "time": "2023-06-05T15:30:22+00:00" }, { "name": "symfony/service-contracts", @@ -5293,16 +6362,16 @@ }, { "name": "symfony/var-dumper", - "version": "v6.3.0", + "version": "v6.3.1", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "6acdcd5c122074ee9f7b051e4fb177025c277a0e" + "reference": "c81268d6960ddb47af17391a27d222bd58cf0515" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/6acdcd5c122074ee9f7b051e4fb177025c277a0e", - "reference": "6acdcd5c122074ee9f7b051e4fb177025c277a0e", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/c81268d6960ddb47af17391a27d222bd58cf0515", + "reference": "c81268d6960ddb47af17391a27d222bd58cf0515", "shasum": "" }, "require": { @@ -5355,7 +6424,7 @@ "dump" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v6.3.0" + "source": "https://github.com/symfony/var-dumper/tree/v6.3.1" }, "funding": [ { @@ -5371,7 +6440,7 @@ "type": "tidelift" } ], - "time": "2023-05-25T13:09:35+00:00" + "time": "2023-06-21T12:08:28+00:00" }, { "name": "tijsverkoyen/css-to-inline-styles", diff --git a/config/auth0.php b/config/auth0.php new file mode 100644 index 0000000..7a5664f --- /dev/null +++ b/config/auth0.php @@ -0,0 +1,56 @@ +<?php + +declare(strict_types=1); + +use Auth0\Laravel\Configuration; +use Auth0\SDK\Configuration\SdkConfiguration; + +return Configuration::VERSION_2 + [ + 'registerGuards' => true, + 'registerMiddleware' => true, + 'registerAuthenticationRoutes' => true, + 'configurationPath' => null, + + 'guards' => [ + 'default' => [ + Configuration::CONFIG_STRATEGY => Configuration::get(Configuration::CONFIG_STRATEGY, SdkConfiguration::STRATEGY_NONE), + Configuration::CONFIG_DOMAIN => Configuration::get(Configuration::CONFIG_DOMAIN), + Configuration::CONFIG_CUSTOM_DOMAIN => Configuration::get(Configuration::CONFIG_CUSTOM_DOMAIN), + Configuration::CONFIG_CLIENT_ID => Configuration::get(Configuration::CONFIG_CLIENT_ID), + Configuration::CONFIG_CLIENT_SECRET => Configuration::get(Configuration::CONFIG_CLIENT_SECRET), + Configuration::CONFIG_AUDIENCE => Configuration::get(Configuration::CONFIG_AUDIENCE), + Configuration::CONFIG_ORGANIZATION => Configuration::get(Configuration::CONFIG_ORGANIZATION), + Configuration::CONFIG_USE_PKCE => Configuration::get(Configuration::CONFIG_USE_PKCE), + Configuration::CONFIG_SCOPE => Configuration::get(Configuration::CONFIG_SCOPE), + Configuration::CONFIG_RESPONSE_MODE => Configuration::get(Configuration::CONFIG_RESPONSE_MODE), + Configuration::CONFIG_RESPONSE_TYPE => Configuration::get(Configuration::CONFIG_RESPONSE_TYPE), + Configuration::CONFIG_TOKEN_ALGORITHM => Configuration::get(Configuration::CONFIG_TOKEN_ALGORITHM), + Configuration::CONFIG_TOKEN_JWKS_URI => Configuration::get(Configuration::CONFIG_TOKEN_JWKS_URI), + Configuration::CONFIG_TOKEN_MAX_AGE => Configuration::get(Configuration::CONFIG_TOKEN_MAX_AGE), + Configuration::CONFIG_TOKEN_LEEWAY => Configuration::get(Configuration::CONFIG_TOKEN_LEEWAY), + Configuration::CONFIG_TOKEN_CACHE => Configuration::get(Configuration::CONFIG_TOKEN_CACHE), + Configuration::CONFIG_TOKEN_CACHE_TTL => Configuration::get(Configuration::CONFIG_TOKEN_CACHE_TTL), + Configuration::CONFIG_HTTP_MAX_RETRIES => Configuration::get(Configuration::CONFIG_HTTP_MAX_RETRIES), + Configuration::CONFIG_HTTP_TELEMETRY => Configuration::get(Configuration::CONFIG_HTTP_TELEMETRY), + Configuration::CONFIG_MANAGEMENT_TOKEN => Configuration::get(Configuration::CONFIG_MANAGEMENT_TOKEN), + Configuration::CONFIG_MANAGEMENT_TOKEN_CACHE => Configuration::get(Configuration::CONFIG_MANAGEMENT_TOKEN_CACHE), + Configuration::CONFIG_CLIENT_ASSERTION_SIGNING_KEY => Configuration::get(Configuration::CONFIG_CLIENT_ASSERTION_SIGNING_KEY), + Configuration::CONFIG_CLIENT_ASSERTION_SIGNING_ALGORITHM => Configuration::get(Configuration::CONFIG_CLIENT_ASSERTION_SIGNING_ALGORITHM), + Configuration::CONFIG_PUSHED_AUTHORIZATION_REQUEST => Configuration::get(Configuration::CONFIG_PUSHED_AUTHORIZATION_REQUEST), + ], + + 'api' => [ + Configuration::CONFIG_STRATEGY => SdkConfiguration::STRATEGY_API, + ], + + 'web' => [ + Configuration::CONFIG_STRATEGY => SdkConfiguration::STRATEGY_REGULAR, + Configuration::CONFIG_COOKIE_SECRET => Configuration::get(Configuration::CONFIG_COOKIE_SECRET, env('APP_KEY')), + Configuration::CONFIG_REDIRECT_URI => Configuration::get(Configuration::CONFIG_REDIRECT_URI, env('APP_URL') . '/callback'), + Configuration::CONFIG_SESSION_STORAGE => Configuration::get(Configuration::CONFIG_SESSION_STORAGE), + Configuration::CONFIG_SESSION_STORAGE_ID => Configuration::get(Configuration::CONFIG_SESSION_STORAGE_ID), + Configuration::CONFIG_TRANSIENT_STORAGE => Configuration::get(Configuration::CONFIG_TRANSIENT_STORAGE), + Configuration::CONFIG_TRANSIENT_STORAGE_ID => Configuration::get(Configuration::CONFIG_TRANSIENT_STORAGE_ID), + ], + ], +]; diff --git a/public/css/master.css b/public/css/master.css index 7cadfe2..bb0b4de 100644 --- a/public/css/master.css +++ b/public/css/master.css @@ -350,3 +350,29 @@ table.gb_entry tr td { table.gb_entry { margin-bottom: 5px; } + +table.gb_admin { + margin-bottom: 5px; + width: 500px; + border: #FFFFFF solid; +} + +table.gb_admin tr td { + border-right: none; + border-bottom: none; + vertical-align: top; + padding: 5px; +} + +table.gb_admin tr td.gb_del { + border-left: none; + vertical-align: top; + padding: 5px; + width: 32px; +} + +table.gb_admin tr td.gb_message { + border-top: none; + vertical-align: top; + padding: 5px; +} diff --git a/public/css/minimal.css b/public/css/minimal.css index 3362057..d81245c 100644 --- a/public/css/minimal.css +++ b/public/css/minimal.css @@ -9,3 +9,7 @@ body { color: #ddd; background-color: #333; } + +table.gb_entry_details tr td { + padding-right: 5px; +} diff --git a/resources/views/errors/generic-error.blade.php b/resources/views/errors/generic-error.blade.php new file mode 100644 index 0000000..9764a02 --- /dev/null +++ b/resources/views/errors/generic-error.blade.php @@ -0,0 +1,9 @@ +@extends('layouts.minimal') +@section('title', 'Error 401: Unauthorized User!') +@section('content') + <h1>{{ $error }}</h1> + <hr/> + @if(isset($description)) + <p>{{ $description }}</p> + @endif +@stop diff --git a/resources/views/errors/no-auth.blade.php b/resources/views/errors/no-auth.blade.php new file mode 100644 index 0000000..8682010 --- /dev/null +++ b/resources/views/errors/no-auth.blade.php @@ -0,0 +1,8 @@ +@extends('layouts.minimal') +@section('title', 'Error 401: Unauthorized User!') +@section('content') + <h1>Error 401: Unauthorized User!</h1> + <hr/> + <p>Woah there! Only authorized users can access this page. Please <a href="/login">log in</a> to proceed.</p> + <p>Ended up here on accident? Click <a href="/">here</a> to return to the homepage</u>!</p> +@stop diff --git a/resources/views/includes/admin/header.blade.php b/resources/views/includes/admin/header.blade.php new file mode 100644 index 0000000..edb2fd7 --- /dev/null +++ b/resources/views/includes/admin/header.blade.php @@ -0,0 +1,12 @@ + <nav> + <div> + <a href="/">public home</a> | + <a href="/admin">admin home</a> | + <a href="/admin/guestbook">guestbook</a> + @if (auth()->check()) + | ({{ auth()->user()->name }}) <a href="/logout">logout</a> + @else + | <a href="/login">login</a> + @endif + </div> + </nav> diff --git a/resources/views/includes/header.blade.php b/resources/views/includes/header.blade.php index 53d44e2..01de256 100644 --- a/resources/views/includes/header.blade.php +++ b/resources/views/includes/header.blade.php @@ -1,12 +1,18 @@ <nav> <div> <a href="/">home</a> | - <a href="//git.diskfloppy.me/">cgit</a> | + <a href="//git.diskfloppy.me/">cgit</a> | <a href="//wiki.diskfloppy.me/">wiki</a> | <a href="/projects/">projects</a> | <a href="/calculators/">calculators</a> | <a href="/computers/">computers</a> | <a href="/bookmarks/">bookmarks</a> | <a href="/guestbook/">guestbook</a> + @if (auth()->check()) + | <a href="/admin/">admin</a> + | ({{ auth()->user()->name }}) <a href="/logout">logout</a> + @else + | <a href="/login">login</a> + @endif </div> </nav> diff --git a/resources/views/layouts/default-admin.blade.php b/resources/views/layouts/default-admin.blade.php new file mode 100644 index 0000000..5a16524 --- /dev/null +++ b/resources/views/layouts/default-admin.blade.php @@ -0,0 +1,23 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<html lang="en"> +<head> + @include('includes.head') +</head> + +<body> +<div class="page"> +<div class="header"> + @include('includes.admin.header') +</div> <!-- header --> + +<div id="pagebody"> + <div id="content"> +@yield('content') + </div> <!-- content --> + <div id="footer" class="pagefooter"> + @include('includes.footer') + </div> <!-- footer --> +</div> <!-- pagebody --> +</div> <!-- page --> +</body> +</html> diff --git a/resources/views/pages/admin/guestbook-del-confirm.blade.php b/resources/views/pages/admin/guestbook-del-confirm.blade.php new file mode 100644 index 0000000..99d2a4c --- /dev/null +++ b/resources/views/pages/admin/guestbook-del-confirm.blade.php @@ -0,0 +1,33 @@ +@extends('layouts.minimal') +@section('title', 'Delete confirm') +@section('content') + <h1>Delete Confirmation</h1> + <hr/> + <p>Are you sure you want to delete this entry?</p> + + <h3>Entry Details:</h3> + <table class="gb_entry_details"> + <tr> + <td><b>ID:</b></td> + <td>{{ $entry->id }}</td> + </tr> + <tr> + <td><b>Name:</b></td> + <td>{{ $entry->name }}</td> + </tr> + <tr> + <td><b>Date:</b></td> + <td>{{ gmdate("H:i:s - Y-m-d", $entry->timestamp) }}</td> + </tr> + <tr> + <td><b>Message:</b></td> + <td>{{ $entry->message }}</td> + </tr> + </table> + + <form action="/admin/guestbook/delete" method="POST"> + @csrf + <input type="hidden" name="id" value="{{ $entry->id }}"> + <button type="submit">Confirm Delete</button> + </form> +@stop diff --git a/resources/views/pages/admin/guestbook.blade.php b/resources/views/pages/admin/guestbook.blade.php new file mode 100644 index 0000000..56323ef --- /dev/null +++ b/resources/views/pages/admin/guestbook.blade.php @@ -0,0 +1,27 @@ +@extends('layouts.default-admin') +@section('title', 'guestbook') +@section('content') + @php + $entries = DB::select('SELECT id, name, timestamp, message FROM guestbook_entries ORDER BY id DESC'); + @endphp + <h1>Entries <small>({{ count($entries) }} total)</small></h1> + @foreach ($entries as $entry) + <table class="gb_admin"> + <tr> + <td> + Name: {{ $entry->name }}<br/> + Date: {{ gmdate("H:i:s - Y-m-d", $entry->timestamp) }} + </td> + <td class="gb_del"> + <a href="/admin/guestbook/delete?id={{ $entry->id }}">del</a> + </td> + </tr> + <tr> + <td colspan="2" class="gb_message"> + <br/> + {{ htmlspecialchars($entry->message) }} + </td> + </tr></table> + @endforeach +@stop + diff --git a/resources/views/pages/admin/index.blade.php b/resources/views/pages/admin/index.blade.php new file mode 100644 index 0000000..fd34313 --- /dev/null +++ b/resources/views/pages/admin/index.blade.php @@ -0,0 +1,9 @@ +@extends('layouts.default-admin') +@section('title', 'Page Title') +@section('description', 'Page description goes here') +@php + $user = auth()->user(); +@endphp +@section('content') + <p>You are logged in as {{ $user->name }} ({{ $user->email }})</p> +@stop diff --git a/routes/web.php b/routes/web.php index 6185449..7284bc3 100644 --- a/routes/web.php +++ b/routes/web.php @@ -40,4 +40,46 @@ Route::post('/guestbook', 'App\Http\Controllers\GuestbookController@guestbookpos ->name('guestbookPost') ->middleware('rate_limit'); +Route::get('/admin', function () { + if (!auth()->check()) { + return view('errors.no-auth'); + } + return view('pages.admin.index'); +}); + +Route::get('/admin/guestbook', function () { + if (!auth()->check()) { + return view('errors.no-auth'); + } + return view('pages.admin.guestbook'); +}); + +Route::get('/admin/guestbook/delete', function () { + if (!auth()->check()) { + return view('errors.no-auth'); + } + + $id = request()->input('id'); + $entry = DB::table('guestbook_entries')->find($id); + + if ($entry) { + // Render a confirmation view + return View::make('pages.admin.guestbook-del-confirm', compact('entry')); + } else { + return view('errors.generic-error') + ->with('error', "Entry not found") + ->with('description', "The specified entry does not exist!"); + } +}); + +Route::post('/admin/guestbook/delete', function () { + if (!auth()->check()) { + return view('errors.no-auth'); + } + + $id = request()->input('id'); + DB::table('guestbook_entries')->where('id', $id)->delete(); + + return back()->with('success', 'Entry deleted successfully!'); +}); |