aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFrankie B <git@diskfloppy.me>2023-07-16 21:02:51 +0100
committerGitHub <noreply@github.com>2023-07-16 21:02:51 +0100
commit7c16dc53b55aa50d6c9ac0bdea2f51fbbf2b20b0 (patch)
treed81c7682b4696d4182ab375d64fa69c4ff755647
parent691d0d933d9c2d9289fa01c7153371e45998ac53 (diff)
feat: site admin (#8)
-rw-r--r--.gitignore1
-rw-r--r--composer.json1
-rw-r--r--composer.lock1171
-rw-r--r--config/auth0.php56
-rw-r--r--public/css/master.css26
-rw-r--r--public/css/minimal.css4
-rw-r--r--resources/views/errors/generic-error.blade.php9
-rw-r--r--resources/views/errors/no-auth.blade.php8
-rw-r--r--resources/views/includes/admin/header.blade.php12
-rw-r--r--resources/views/includes/header.blade.php8
-rw-r--r--resources/views/layouts/default-admin.blade.php23
-rw-r--r--resources/views/pages/admin/guestbook-del-confirm.blade.php33
-rw-r--r--resources/views/pages/admin/guestbook.blade.php27
-rw-r--r--resources/views/pages/admin/index.blade.php9
-rw-r--r--routes/web.php42
15 files changed, 1378 insertions, 52 deletions
diff --git a/.gitignore b/.gitignore
index 7fe978f..044550c 100644
--- a/.gitignore
+++ b/.gitignore
@@ -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:&nbsp;{{ $entry->name }}<br/>
+ Date:&nbsp;{{ 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!');
+});