From 197e7da9cc67c6595c192e540c029702fa12a15e Mon Sep 17 00:00:00 2001 From: Adrian Hopek Date: Wed, 12 Jan 2022 15:28:48 +0100 Subject: [PATCH 01/20] #2 - wip --- .env.example | 4 + app/Http/Controllers/GoogleController.php | 43 + app/Http/Middleware/Authenticate.php | 6 +- app/Http/Middleware/HandleInertiaRequests.php | 10 + .../Middleware/RedirectIfAuthenticated.php | 3 +- app/Models/User.php | 19 +- app/Providers/RouteServiceProvider.php | 2 - composer.json | 1 + composer.lock | 1411 ++--------------- config/services.php | 8 +- database/factories/UserFactory.php | 3 - .../2014_10_12_000000_create_users_table.php | 4 +- public/img/logo-white.png | Bin 0 -> 6896 bytes resources/js/Pages/Dashboard.vue | 943 ++++------- resources/js/Pages/Login.vue | 61 + resources/js/Shared/Layout/AppLayout.vue | 19 + resources/js/Shared/Layout/GuestLayout.vue | 11 + resources/js/Shared/MainMenu.vue | 285 ++++ resources/js/app.js | 14 +- resources/lang/pl.json | 3 + routes/web.php | 25 +- tailwind.config.js | 14 + 22 files changed, 994 insertions(+), 1895 deletions(-) create mode 100644 app/Http/Controllers/GoogleController.php create mode 100644 public/img/logo-white.png create mode 100644 resources/js/Pages/Login.vue create mode 100644 resources/js/Shared/Layout/AppLayout.vue create mode 100644 resources/js/Shared/Layout/GuestLayout.vue create mode 100644 resources/js/Shared/MainMenu.vue create mode 100644 resources/lang/pl.json diff --git a/.env.example b/.env.example index 7a33236..30e2550 100644 --- a/.env.example +++ b/.env.example @@ -44,3 +44,7 @@ MAIL_FROM_ADDRESS=null MAIL_FROM_NAME="${APP_NAME}" DOCKER_INSTALL_XDEBUG=false + +GOOGLE_CLIENT_ID= +GOOGLE_CLIENT_SECRET= +GOOGLE_REDIRECT= diff --git a/app/Http/Controllers/GoogleController.php b/app/Http/Controllers/GoogleController.php new file mode 100644 index 0000000..0e01966 --- /dev/null +++ b/app/Http/Controllers/GoogleController.php @@ -0,0 +1,43 @@ +driver("google")->redirect(); + } + + public function callback(AuthFactory $auth, SocialiteManager $socialiteManager): RedirectResponse + { + $socialUser = $socialiteManager->driver("google")->user(); + + try { + /** @var User $user */ + $user = User::query() + ->where("email", $socialUser->getEmail()) + ->firstOrFail(); + + $auth->guard()->login($user, true); + + $user->syncGoogleData($socialUser); + + return redirect()->route("dashboard"); + } catch (ModelNotFoundException) { + return redirect() + ->route("login") + ->withErrors([ + "oauth" => __("User does not exist."), + ]); + } + } +} diff --git a/app/Http/Middleware/Authenticate.php b/app/Http/Middleware/Authenticate.php index eaeb6c6..8192db0 100644 --- a/app/Http/Middleware/Authenticate.php +++ b/app/Http/Middleware/Authenticate.php @@ -8,10 +8,8 @@ use Illuminate\Auth\Middleware\Authenticate as Middleware; class Authenticate extends Middleware { - protected function redirectTo($request) + protected function redirectTo($request): ?string { - if (!$request->expectsJson()) { - return route("login"); - } + return route("login"); } } diff --git a/app/Http/Middleware/HandleInertiaRequests.php b/app/Http/Middleware/HandleInertiaRequests.php index c39bc7c..c71c54f 100644 --- a/app/Http/Middleware/HandleInertiaRequests.php +++ b/app/Http/Middleware/HandleInertiaRequests.php @@ -11,7 +11,17 @@ class HandleInertiaRequests extends Middleware { public function share(Request $request): array { + $user = $request->user(); + return array_merge(parent::share($request), [ + "auth" => fn() => [ + "user" => $user ? [ + "name" => $user->name, + "email" => $user->email, + "role" => "Human Resources Manager", + "imageUrl" => $user->avatar, + ] : null, + ], "flash" => fn() => [ "success" => $request->session()->get("success"), "error" => $request->session()->get("error"), diff --git a/app/Http/Middleware/RedirectIfAuthenticated.php b/app/Http/Middleware/RedirectIfAuthenticated.php index 73c3d10..3a0367a 100644 --- a/app/Http/Middleware/RedirectIfAuthenticated.php +++ b/app/Http/Middleware/RedirectIfAuthenticated.php @@ -8,7 +8,6 @@ use Closure; use Illuminate\Http\Request; use Illuminate\Support\Facades\Auth; use Symfony\Component\HttpFoundation\Response; -use Toby\Providers\RouteServiceProvider; class RedirectIfAuthenticated { @@ -18,7 +17,7 @@ class RedirectIfAuthenticated foreach ($guards as $guard) { if (Auth::guard($guard)->check()) { - return redirect(RouteServiceProvider::HOME); + return redirect()->route("login"); } } diff --git a/app/Models/User.php b/app/Models/User.php index 880eb84..335a09e 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -7,7 +7,15 @@ namespace Toby\Models; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Foundation\Auth\User as Authenticatable; use Illuminate\Notifications\Notifiable; +use Laravel\Socialite\Two\User as SocialUser; +/** + * @property int $id + * @property string $name + * @property string $email + * @property string $avatar + * @property string $google_id + */ class User extends Authenticatable { use HasFactory; @@ -16,15 +24,22 @@ class User extends Authenticatable protected $fillable = [ "name", "email", - "password", ]; protected $hidden = [ - "password", "remember_token", ]; protected $casts = [ "email_verified_at" => "datetime", ]; + + public function syncGoogleData(SocialUser $user): void + { + $this->name = $user->getName(); + $this->avatar = $user->getAvatar(); + $this->google_id = $user->getId(); + + $this->save(); + } } diff --git a/app/Providers/RouteServiceProvider.php b/app/Providers/RouteServiceProvider.php index 2b6a7cb..d3c423c 100644 --- a/app/Providers/RouteServiceProvider.php +++ b/app/Providers/RouteServiceProvider.php @@ -12,8 +12,6 @@ use Illuminate\Support\Facades\Route; class RouteServiceProvider extends ServiceProvider { - public const HOME = "/home"; - public function boot(): void { $this->configureRateLimiting(); diff --git a/composer.json b/composer.json index fcf7c40..83abbee 100644 --- a/composer.json +++ b/composer.json @@ -11,6 +11,7 @@ "guzzlehttp/guzzle": "^7.0.1", "inertiajs/inertia-laravel": "^0.5.1", "laravel/framework": "^8.75", + "laravel/socialite": "^5.2", "laravel/telescope": "^4.6", "laravel/tinker": "^2.5" }, diff --git a/composer.lock b/composer.lock index 7d273d9..2b1c5e9 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "1f888e8a9e8764750ed43fbb8697721e", + "content-hash": "85ceb3ddf8f14cb162c2e9e68ba1fd6c", "packages": [ { "name": "asm89/stack-cors", @@ -290,32 +290,28 @@ }, { "name": "doctrine/lexer", - "version": "1.2.1", + "version": "1.2.2", "source": { "type": "git", "url": "https://github.com/doctrine/lexer.git", - "reference": "e864bbf5904cb8f5bb334f99209b48018522f042" + "reference": "9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/lexer/zipball/e864bbf5904cb8f5bb334f99209b48018522f042", - "reference": "e864bbf5904cb8f5bb334f99209b48018522f042", + "url": "https://api.github.com/repos/doctrine/lexer/zipball/9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c", + "reference": "9c50f840f257bbb941e6f4a0e94ccf5db5c3f76c", "shasum": "" }, "require": { - "php": "^7.2 || ^8.0" + "php": "^7.1 || ^8.0" }, "require-dev": { - "doctrine/coding-standard": "^6.0", - "phpstan/phpstan": "^0.11.8", - "phpunit/phpunit": "^8.2" + "doctrine/coding-standard": "^9.0", + "phpstan/phpstan": "1.3", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", + "vimeo/psalm": "^4.11" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.2.x-dev" - } - }, "autoload": { "psr-4": { "Doctrine\\Common\\Lexer\\": "lib/Doctrine/Common/Lexer" @@ -350,7 +346,7 @@ ], "support": { "issues": "https://github.com/doctrine/lexer/issues", - "source": "https://github.com/doctrine/lexer/tree/1.2.1" + "source": "https://github.com/doctrine/lexer/tree/1.2.2" }, "funding": [ { @@ -366,7 +362,7 @@ "type": "tidelift" } ], - "time": "2020-05-25T17:44:05+00:00" + "time": "2022-01-12T08:27:12+00:00" }, { "name": "dragonmantank/cron-expression", @@ -1263,6 +1259,75 @@ }, "time": "2021-11-30T15:53:04+00:00" }, + { + "name": "laravel/socialite", + "version": "v5.2.6", + "source": { + "type": "git", + "url": "https://github.com/laravel/socialite.git", + "reference": "b5c67f187ddcf15529ff7217fa735b132620dfac" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/socialite/zipball/b5c67f187ddcf15529ff7217fa735b132620dfac", + "reference": "b5c67f187ddcf15529ff7217fa735b132620dfac", + "shasum": "" + }, + "require": { + "ext-json": "*", + "guzzlehttp/guzzle": "^6.0|^7.0", + "illuminate/http": "^6.0|^7.0|^8.0", + "illuminate/support": "^6.0|^7.0|^8.0", + "league/oauth1-client": "^1.0", + "php": "^7.2|^8.0" + }, + "require-dev": { + "illuminate/contracts": "^6.0|^7.0", + "mockery/mockery": "^1.0", + "orchestra/testbench": "^4.0|^5.0|^6.0", + "phpunit/phpunit": "^8.0|^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.x-dev" + }, + "laravel": { + "providers": [ + "Laravel\\Socialite\\SocialiteServiceProvider" + ], + "aliases": { + "Socialite": "Laravel\\Socialite\\Facades\\Socialite" + } + } + }, + "autoload": { + "psr-4": { + "Laravel\\Socialite\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + } + ], + "description": "Laravel wrapper around OAuth 1 & OAuth 2 libraries.", + "homepage": "https://laravel.com", + "keywords": [ + "laravel", + "oauth" + ], + "support": { + "issues": "https://github.com/laravel/socialite/issues", + "source": "https://github.com/laravel/socialite" + }, + "time": "2021-12-07T16:32:57+00:00" + }, { "name": "laravel/telescope", "version": "v4.6.10", @@ -1733,6 +1798,82 @@ ], "time": "2021-11-21T11:48:40+00:00" }, + { + "name": "league/oauth1-client", + "version": "v1.10.0", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/oauth1-client.git", + "reference": "88dd16b0cff68eb9167bfc849707d2c40ad91ddc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/oauth1-client/zipball/88dd16b0cff68eb9167bfc849707d2c40ad91ddc", + "reference": "88dd16b0cff68eb9167bfc849707d2c40ad91ddc", + "shasum": "" + }, + "require": { + "ext-json": "*", + "ext-openssl": "*", + "guzzlehttp/guzzle": "^6.0|^7.0", + "guzzlehttp/psr7": "^1.7|^2.0", + "php": ">=7.1||>=8.0" + }, + "require-dev": { + "ext-simplexml": "*", + "friendsofphp/php-cs-fixer": "^2.17", + "mockery/mockery": "^1.3.3", + "phpstan/phpstan": "^0.12.42", + "phpunit/phpunit": "^7.5||9.5" + }, + "suggest": { + "ext-simplexml": "For decoding XML-based responses." + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev", + "dev-develop": "2.0-dev" + } + }, + "autoload": { + "psr-4": { + "League\\OAuth1\\Client\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ben Corlett", + "email": "bencorlett@me.com", + "homepage": "http://www.webcomm.com.au", + "role": "Developer" + } + ], + "description": "OAuth 1.0 Client Library", + "keywords": [ + "Authentication", + "SSO", + "authorization", + "bitbucket", + "identity", + "idp", + "oauth", + "oauth1", + "single sign on", + "trello", + "tumblr", + "twitter" + ], + "support": { + "issues": "https://github.com/thephpleague/oauth1-client/issues", + "source": "https://github.com/thephpleague/oauth1-client/tree/v1.10.0" + }, + "time": "2021-08-15T23:05:49+00:00" + }, { "name": "monolog/monolog", "version": "2.3.5", @@ -5505,548 +5646,6 @@ }, "time": "2022-01-04T07:21:36+00:00" }, - { - "name": "composer/ca-bundle", - "version": "1.3.1", - "source": { - "type": "git", - "url": "https://github.com/composer/ca-bundle.git", - "reference": "4c679186f2aca4ab6a0f1b0b9cf9252decb44d0b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/composer/ca-bundle/zipball/4c679186f2aca4ab6a0f1b0b9cf9252decb44d0b", - "reference": "4c679186f2aca4ab6a0f1b0b9cf9252decb44d0b", - "shasum": "" - }, - "require": { - "ext-openssl": "*", - "ext-pcre": "*", - "php": "^5.3.2 || ^7.0 || ^8.0" - }, - "require-dev": { - "phpstan/phpstan": "^0.12.55", - "psr/log": "^1.0", - "symfony/phpunit-bridge": "^4.2 || ^5", - "symfony/process": "^2.5 || ^3.0 || ^4.0 || ^5.0 || ^6.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Composer\\CaBundle\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be", - "homepage": "http://seld.be" - } - ], - "description": "Lets you find a path to the system CA bundle, and includes a fallback to the Mozilla CA bundle.", - "keywords": [ - "cabundle", - "cacert", - "certificate", - "ssl", - "tls" - ], - "support": { - "irc": "irc://irc.freenode.org/composer", - "issues": "https://github.com/composer/ca-bundle/issues", - "source": "https://github.com/composer/ca-bundle/tree/1.3.1" - }, - "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": "2021-10-28T20:44:15+00:00" - }, - { - "name": "composer/composer", - "version": "2.2.4", - "source": { - "type": "git", - "url": "https://github.com/composer/composer.git", - "reference": "8a5ad75194f901e3b39ece4bbd22cbdabc79ae8f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/composer/composer/zipball/8a5ad75194f901e3b39ece4bbd22cbdabc79ae8f", - "reference": "8a5ad75194f901e3b39ece4bbd22cbdabc79ae8f", - "shasum": "" - }, - "require": { - "composer/ca-bundle": "^1.0", - "composer/metadata-minifier": "^1.0", - "composer/pcre": "^1.0", - "composer/semver": "^3.0", - "composer/spdx-licenses": "^1.2", - "composer/xdebug-handler": "^2.0", - "justinrainbow/json-schema": "^5.2.11", - "php": "^5.3.2 || ^7.0 || ^8.0", - "psr/log": "^1.0 || ^2.0", - "react/promise": "^1.2 || ^2.7", - "seld/jsonlint": "^1.4", - "seld/phar-utils": "^1.0", - "symfony/console": "^2.8.52 || ^3.4.35 || ^4.4 || ^5.0", - "symfony/filesystem": "^2.8.52 || ^3.4.35 || ^4.4 || ^5.0 || ^6.0", - "symfony/finder": "^2.8.52 || ^3.4.35 || ^4.4 || ^5.0 || ^6.0", - "symfony/process": "^2.8.52 || ^3.4.35 || ^4.4 || ^5.0 || ^6.0" - }, - "require-dev": { - "phpspec/prophecy": "^1.10", - "symfony/phpunit-bridge": "^4.2 || ^5.0 || ^6.0" - }, - "suggest": { - "ext-openssl": "Enabling the openssl extension allows you to access https URLs for repositories and packages", - "ext-zip": "Enabling the zip extension allows you to unzip archives", - "ext-zlib": "Allow gzip compression of HTTP requests" - }, - "bin": [ - "bin/composer" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "2.2-dev" - } - }, - "autoload": { - "psr-4": { - "Composer\\": "src/Composer" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nils Adermann", - "email": "naderman@naderman.de", - "homepage": "https://www.naderman.de" - }, - { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be", - "homepage": "https://seld.be" - } - ], - "description": "Composer helps you declare, manage and install dependencies of PHP projects. It ensures you have the right stack everywhere.", - "homepage": "https://getcomposer.org/", - "keywords": [ - "autoload", - "dependency", - "package" - ], - "support": { - "irc": "ircs://irc.libera.chat:6697/composer", - "issues": "https://github.com/composer/composer/issues", - "source": "https://github.com/composer/composer/tree/2.2.4" - }, - "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-01-08T11:30:42+00:00" - }, - { - "name": "composer/metadata-minifier", - "version": "1.0.0", - "source": { - "type": "git", - "url": "https://github.com/composer/metadata-minifier.git", - "reference": "c549d23829536f0d0e984aaabbf02af91f443207" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/composer/metadata-minifier/zipball/c549d23829536f0d0e984aaabbf02af91f443207", - "reference": "c549d23829536f0d0e984aaabbf02af91f443207", - "shasum": "" - }, - "require": { - "php": "^5.3.2 || ^7.0 || ^8.0" - }, - "require-dev": { - "composer/composer": "^2", - "phpstan/phpstan": "^0.12.55", - "symfony/phpunit-bridge": "^4.2 || ^5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Composer\\MetadataMinifier\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be", - "homepage": "http://seld.be" - } - ], - "description": "Small utility library that handles metadata minification and expansion.", - "keywords": [ - "composer", - "compression" - ], - "support": { - "issues": "https://github.com/composer/metadata-minifier/issues", - "source": "https://github.com/composer/metadata-minifier/tree/1.0.0" - }, - "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": "2021-04-07T13:37:33+00:00" - }, - { - "name": "composer/pcre", - "version": "1.0.0", - "source": { - "type": "git", - "url": "https://github.com/composer/pcre.git", - "reference": "3d322d715c43a1ac36c7fe215fa59336265500f2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/composer/pcre/zipball/3d322d715c43a1ac36c7fe215fa59336265500f2", - "reference": "3d322d715c43a1ac36c7fe215fa59336265500f2", - "shasum": "" - }, - "require": { - "php": "^5.3.2 || ^7.0 || ^8.0" - }, - "require-dev": { - "phpstan/phpstan": "^1", - "phpstan/phpstan-strict-rules": "^1.1", - "symfony/phpunit-bridge": "^4.2 || ^5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Composer\\Pcre\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be", - "homepage": "http://seld.be" - } - ], - "description": "PCRE wrapping library that offers type-safe preg_* replacements.", - "keywords": [ - "PCRE", - "preg", - "regex", - "regular expression" - ], - "support": { - "issues": "https://github.com/composer/pcre/issues", - "source": "https://github.com/composer/pcre/tree/1.0.0" - }, - "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": "2021-12-06T15:17:27+00:00" - }, - { - "name": "composer/semver", - "version": "3.2.7", - "source": { - "type": "git", - "url": "https://github.com/composer/semver.git", - "reference": "deac27056b57e46faf136fae7b449eeaa71661ee" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/composer/semver/zipball/deac27056b57e46faf136fae7b449eeaa71661ee", - "reference": "deac27056b57e46faf136fae7b449eeaa71661ee", - "shasum": "" - }, - "require": { - "php": "^5.3.2 || ^7.0 || ^8.0" - }, - "require-dev": { - "phpstan/phpstan": "^0.12.54", - "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.2.7" - }, - "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-01-04T09:57:54+00:00" - }, - { - "name": "composer/spdx-licenses", - "version": "1.5.6", - "source": { - "type": "git", - "url": "https://github.com/composer/spdx-licenses.git", - "reference": "a30d487169d799745ca7280bc90fdfa693536901" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/composer/spdx-licenses/zipball/a30d487169d799745ca7280bc90fdfa693536901", - "reference": "a30d487169d799745ca7280bc90fdfa693536901", - "shasum": "" - }, - "require": { - "php": "^5.3.2 || ^7.0 || ^8.0" - }, - "require-dev": { - "phpstan/phpstan": "^0.12.55", - "symfony/phpunit-bridge": "^4.2 || ^5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Composer\\Spdx\\": "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": "SPDX licenses list and validation library.", - "keywords": [ - "license", - "spdx", - "validator" - ], - "support": { - "irc": "irc://irc.freenode.org/composer", - "issues": "https://github.com/composer/spdx-licenses/issues", - "source": "https://github.com/composer/spdx-licenses/tree/1.5.6" - }, - "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": "2021-11-18T10:14:14+00:00" - }, - { - "name": "composer/xdebug-handler", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/composer/xdebug-handler.git", - "reference": "0c1a3925ec58a4ec98e992b9c7d171e9e184be0a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/0c1a3925ec58a4ec98e992b9c7d171e9e184be0a", - "reference": "0c1a3925ec58a4ec98e992b9c7d171e9e184be0a", - "shasum": "" - }, - "require": { - "composer/pcre": "^1", - "php": "^5.3.2 || ^7.0 || ^8.0", - "psr/log": "^1 || ^2 || ^3" - }, - "require-dev": { - "phpstan/phpstan": "^1.0", - "phpstan/phpstan-strict-rules": "^1.1", - "symfony/phpunit-bridge": "^4.2 || ^5.0 || ^6.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Composer\\XdebugHandler\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "John Stevenson", - "email": "john-stevenson@blueyonder.co.uk" - } - ], - "description": "Restarts a process without Xdebug.", - "keywords": [ - "Xdebug", - "performance" - ], - "support": { - "irc": "irc://irc.freenode.org/composer", - "issues": "https://github.com/composer/xdebug-handler/issues", - "source": "https://github.com/composer/xdebug-handler/tree/2.0.4" - }, - "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-01-04T17:06:45+00:00" - }, { "name": "doctrine/instantiator", "version": "1.4.0", @@ -6116,159 +5715,6 @@ ], "time": "2020-11-10T18:47:58+00:00" }, - { - "name": "enlightn/enlightn", - "version": "v1.22.1", - "source": { - "type": "git", - "url": "https://github.com/enlightn/enlightn.git", - "reference": "b4743d1abbcaf8340729a9cada2cceced33ff2c6" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/enlightn/enlightn/zipball/b4743d1abbcaf8340729a9cada2cceced33ff2c6", - "reference": "b4743d1abbcaf8340729a9cada2cceced33ff2c6", - "shasum": "" - }, - "require": { - "enlightn/security-checker": "^1.1", - "ext-json": "*", - "guzzlehttp/guzzle": "^5.0|^6.0|^7.0", - "laravel/framework": "^6.0|^7.0|^8.0", - "nikic/php-parser": "^4.0", - "nunomaduro/larastan": "^0.6.11|^0.7", - "php": "^7.2|^8.0", - "phpstan/phpstan": "^0.12.59", - "symfony/finder": "^4.0|^5.0" - }, - "require-dev": { - "barryvdh/laravel-ide-helper": "^2.8", - "brianium/paratest": "^6.1", - "fideloper/proxy": "^4.4", - "friendsofphp/php-cs-fixer": "^2.18", - "mockery/mockery": "^1.3", - "orchestra/testbench": "^4.0|^5.0|^6.0", - "phpunit/phpunit": "^7.5|^8.0|^9.0", - "predis/predis": "*" - }, - "type": "library", - "extra": { - "laravel": { - "providers": [ - "Enlightn\\Enlightn\\EnlightnServiceProvider" - ] - } - }, - "autoload": { - "psr-4": { - "Enlightn\\Enlightn\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "LGPL-3.0-or-later" - ], - "authors": [ - { - "name": "Paras Malhotra", - "email": "paras@laravel-enlightn.com" - }, - { - "name": "Miguel Piedrafita", - "email": "soy@miguelpiedrafita.com" - }, - { - "name": "Lars Klopstra", - "email": "lars@flowframe.nl" - } - ], - "description": "Enlightn - Your performance & security consultant, an artisan command away.", - "homepage": "https://www.laravel-enlightn.com/", - "keywords": [ - "Audit", - "analysis tool", - "dynamic analysis", - "dynamic analyzer", - "laravel", - "package", - "performance", - "security", - "static analysis", - "static analyzer" - ], - "support": { - "docs": "https://www.laravel-enlightn.com/docs/", - "issues": "https://github.com/enlightn/enlightn/issues", - "source": "https://github.com/enlightn/enlightn/tree/v1.22.1" - }, - "time": "2021-05-03T07:32:51+00:00" - }, - { - "name": "enlightn/security-checker", - "version": "v1.9.0", - "source": { - "type": "git", - "url": "https://github.com/enlightn/security-checker.git", - "reference": "dc5bce653fa4d9c792e9dcffa728c0642847c1e1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/enlightn/security-checker/zipball/dc5bce653fa4d9c792e9dcffa728c0642847c1e1", - "reference": "dc5bce653fa4d9c792e9dcffa728c0642847c1e1", - "shasum": "" - }, - "require": { - "ext-json": "*", - "guzzlehttp/guzzle": "^6.3|^7.0", - "php": ">=5.6", - "symfony/console": "^3.4|^4|^5", - "symfony/finder": "^3|^4|^5", - "symfony/process": "^3.4|^4|^5", - "symfony/yaml": "^3.4|^4|^5" - }, - "require-dev": { - "ext-zip": "*", - "friendsofphp/php-cs-fixer": "^2.18", - "phpunit/phpunit": "^5.5|^6|^7|^8|^9" - }, - "bin": [ - "security-checker" - ], - "type": "library", - "autoload": { - "psr-4": { - "Enlightn\\SecurityChecker\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Paras Malhotra", - "email": "paras@laravel-enlightn.com" - }, - { - "name": "Miguel Piedrafita", - "email": "soy@miguelpiedrafita.com" - } - ], - "description": "A PHP dependency vulnerabilities scanner based on the Security Advisories Database.", - "keywords": [ - "package", - "php", - "scanner", - "security", - "security advisories", - "vulnerability scanner" - ], - "support": { - "issues": "https://github.com/enlightn/security-checker/issues", - "source": "https://github.com/enlightn/security-checker/tree/v1.9.0" - }, - "time": "2021-05-06T09:03:35+00:00" - }, { "name": "facade/flare-client-php", "version": "1.9.1", @@ -6652,76 +6098,6 @@ }, "time": "2020-07-09T08:09:16+00:00" }, - { - "name": "justinrainbow/json-schema", - "version": "5.2.11", - "source": { - "type": "git", - "url": "https://github.com/justinrainbow/json-schema.git", - "reference": "2ab6744b7296ded80f8cc4f9509abbff393399aa" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/justinrainbow/json-schema/zipball/2ab6744b7296ded80f8cc4f9509abbff393399aa", - "reference": "2ab6744b7296ded80f8cc4f9509abbff393399aa", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "~2.2.20||~2.15.1", - "json-schema/json-schema-test-suite": "1.2.0", - "phpunit/phpunit": "^4.8.35" - }, - "bin": [ - "bin/validate-json" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "JsonSchema\\": "src/JsonSchema/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Bruno Prieto Reis", - "email": "bruno.p.reis@gmail.com" - }, - { - "name": "Justin Rainbow", - "email": "justin.rainbow@gmail.com" - }, - { - "name": "Igor Wiedler", - "email": "igor@wiedler.ch" - }, - { - "name": "Robert Schönthal", - "email": "seroscho@googlemail.com" - } - ], - "description": "A library to validate a json schema.", - "homepage": "https://github.com/justinrainbow/json-schema", - "keywords": [ - "json", - "schema" - ], - "support": { - "issues": "https://github.com/justinrainbow/json-schema/issues", - "source": "https://github.com/justinrainbow/json-schema/tree/5.2.11" - }, - "time": "2021-07-22T09:24:00+00:00" - }, { "name": "mockery/mockery", "version": "1.4.4", @@ -6854,16 +6230,16 @@ }, { "name": "nunomaduro/collision", - "version": "v5.10.0", + "version": "v5.11.0", "source": { "type": "git", "url": "https://github.com/nunomaduro/collision.git", - "reference": "3004cfa49c022183395eabc6d0e5207dfe498d00" + "reference": "8b610eef8582ccdc05d8f2ab23305e2d37049461" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nunomaduro/collision/zipball/3004cfa49c022183395eabc6d0e5207dfe498d00", - "reference": "3004cfa49c022183395eabc6d0e5207dfe498d00", + "url": "https://api.github.com/repos/nunomaduro/collision/zipball/8b610eef8582ccdc05d8f2ab23305e2d37049461", + "reference": "8b610eef8582ccdc05d8f2ab23305e2d37049461", "shasum": "" }, "require": { @@ -6925,7 +6301,7 @@ }, "funding": [ { - "url": "https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=66BYDWAT92N6L", + "url": "https://www.paypal.com/paypalme/enunomaduro", "type": "custom" }, { @@ -6937,105 +6313,7 @@ "type": "patreon" } ], - "time": "2021-09-20T15:06:32+00:00" - }, - { - "name": "nunomaduro/larastan", - "version": "v0.7.15", - "source": { - "type": "git", - "url": "https://github.com/nunomaduro/larastan.git", - "reference": "fffd371277aeca7951a841818d21f1015a0a2662" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nunomaduro/larastan/zipball/fffd371277aeca7951a841818d21f1015a0a2662", - "reference": "fffd371277aeca7951a841818d21f1015a0a2662", - "shasum": "" - }, - "require": { - "composer/composer": "^1.0 || ^2.0", - "ext-json": "*", - "illuminate/console": "^6.0 || ^7.0 || ^8.0 || ^9.0", - "illuminate/container": "^6.0 || ^7.0 || ^8.0 || ^9.0", - "illuminate/contracts": "^6.0 || ^7.0 || ^8.0 || ^9.0", - "illuminate/database": "^6.0 || ^7.0 || ^8.0 || ^9.0", - "illuminate/http": "^6.0 || ^7.0 || ^8.0 || ^9.0", - "illuminate/pipeline": "^6.0 || ^7.0 || ^8.0 || ^9.0", - "illuminate/support": "^6.0 || ^7.0 || ^8.0 || ^9.0", - "mockery/mockery": "^0.9 || ^1.0", - "php": "^7.2 || ^8.0", - "phpstan/phpstan": "^0.12.90", - "symfony/process": "^4.3 || ^5.0 || ^6.0" - }, - "require-dev": { - "nikic/php-parser": "4.12.0", - "orchestra/testbench": "^4.0 || ^5.0 || ^6.0 || ^7.0", - "phpunit/phpunit": "^7.3 || ^8.2 || ^9.3" - }, - "suggest": { - "orchestra/testbench": "Using Larastan for analysing a package needs Testbench" - }, - "type": "phpstan-extension", - "extra": { - "branch-alias": { - "dev-master": "0.7-dev" - }, - "phpstan": { - "includes": [ - "extension.neon" - ] - } - }, - "autoload": { - "psr-4": { - "NunoMaduro\\Larastan\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nuno Maduro", - "email": "enunomaduro@gmail.com" - } - ], - "description": "Larastan - Discover bugs in your code without running it. A phpstan/phpstan wrapper for Laravel", - "keywords": [ - "PHPStan", - "code analyse", - "code analysis", - "larastan", - "laravel", - "package", - "php", - "static analysis" - ], - "support": { - "issues": "https://github.com/nunomaduro/larastan/issues", - "source": "https://github.com/nunomaduro/larastan/tree/v0.7.15" - }, - "funding": [ - { - "url": "https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=66BYDWAT92N6L", - "type": "custom" - }, - { - "url": "https://github.com/canvural", - "type": "github" - }, - { - "url": "https://github.com/nunomaduro", - "type": "github" - }, - { - "url": "https://www.patreon.com/nunomaduro", - "type": "patreon" - } - ], - "time": "2021-10-26T11:07:56+00:00" + "time": "2022-01-10T16:22:52+00:00" }, { "name": "phar-io/manifest", @@ -7375,70 +6653,6 @@ }, "time": "2021-12-08T12:19:24+00:00" }, - { - "name": "phpstan/phpstan", - "version": "0.12.99", - "source": { - "type": "git", - "url": "https://github.com/phpstan/phpstan.git", - "reference": "b4d40f1d759942f523be267a1bab6884f46ca3f7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/b4d40f1d759942f523be267a1bab6884f46ca3f7", - "reference": "b4d40f1d759942f523be267a1bab6884f46ca3f7", - "shasum": "" - }, - "require": { - "php": "^7.1|^8.0" - }, - "conflict": { - "phpstan/phpstan-shim": "*" - }, - "bin": [ - "phpstan", - "phpstan.phar" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "0.12-dev" - } - }, - "autoload": { - "files": [ - "bootstrap.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "PHPStan - PHP Static Analysis Tool", - "support": { - "issues": "https://github.com/phpstan/phpstan/issues", - "source": "https://github.com/phpstan/phpstan/tree/0.12.99" - }, - "funding": [ - { - "url": "https://github.com/ondrejmirtes", - "type": "github" - }, - { - "url": "https://github.com/phpstan", - "type": "github" - }, - { - "url": "https://www.patreon.com/phpstan", - "type": "patreon" - }, - { - "url": "https://tidelift.com/funding/github/packagist/phpstan/phpstan", - "type": "tidelift" - } - ], - "time": "2021-09-12T20:09:55+00:00" - }, { "name": "phpunit/php-code-coverage", "version": "9.2.10", @@ -7860,56 +7074,6 @@ ], "time": "2021-12-25T07:07:57+00:00" }, - { - "name": "react/promise", - "version": "v2.8.0", - "source": { - "type": "git", - "url": "https://github.com/reactphp/promise.git", - "reference": "f3cff96a19736714524ca0dd1d4130de73dbbbc4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/reactphp/promise/zipball/f3cff96a19736714524ca0dd1d4130de73dbbbc4", - "reference": "f3cff96a19736714524ca0dd1d4130de73dbbbc4", - "shasum": "" - }, - "require": { - "php": ">=5.4.0" - }, - "require-dev": { - "phpunit/phpunit": "^7.0 || ^6.5 || ^5.7 || ^4.8.36" - }, - "type": "library", - "autoload": { - "psr-4": { - "React\\Promise\\": "src/" - }, - "files": [ - "src/functions_include.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jan Sorgalla", - "email": "jsorgalla@gmail.com" - } - ], - "description": "A lightweight implementation of CommonJS Promises/A for PHP", - "keywords": [ - "promise", - "promises" - ], - "support": { - "issues": "https://github.com/reactphp/promise/issues", - "source": "https://github.com/reactphp/promise/tree/v2.8.0" - }, - "time": "2020-05-12T15:16:56+00:00" - }, { "name": "sebastian/cli-parser", "version": "1.0.1", @@ -8874,255 +8038,6 @@ ], "time": "2020-09-28T06:39:44+00:00" }, - { - "name": "seld/jsonlint", - "version": "1.8.3", - "source": { - "type": "git", - "url": "https://github.com/Seldaek/jsonlint.git", - "reference": "9ad6ce79c342fbd44df10ea95511a1b24dee5b57" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Seldaek/jsonlint/zipball/9ad6ce79c342fbd44df10ea95511a1b24dee5b57", - "reference": "9ad6ce79c342fbd44df10ea95511a1b24dee5b57", - "shasum": "" - }, - "require": { - "php": "^5.3 || ^7.0 || ^8.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0" - }, - "bin": [ - "bin/jsonlint" - ], - "type": "library", - "autoload": { - "psr-4": { - "Seld\\JsonLint\\": "src/Seld/JsonLint/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be", - "homepage": "http://seld.be" - } - ], - "description": "JSON Linter", - "keywords": [ - "json", - "linter", - "parser", - "validator" - ], - "support": { - "issues": "https://github.com/Seldaek/jsonlint/issues", - "source": "https://github.com/Seldaek/jsonlint/tree/1.8.3" - }, - "funding": [ - { - "url": "https://github.com/Seldaek", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/seld/jsonlint", - "type": "tidelift" - } - ], - "time": "2020-11-11T09:19:24+00:00" - }, - { - "name": "seld/phar-utils", - "version": "1.2.0", - "source": { - "type": "git", - "url": "https://github.com/Seldaek/phar-utils.git", - "reference": "9f3452c93ff423469c0d56450431562ca423dcee" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Seldaek/phar-utils/zipball/9f3452c93ff423469c0d56450431562ca423dcee", - "reference": "9f3452c93ff423469c0d56450431562ca423dcee", - "shasum": "" - }, - "require": { - "php": ">=5.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Seld\\PharUtils\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be" - } - ], - "description": "PHAR file format utilities, for when PHP phars you up", - "keywords": [ - "phar" - ], - "support": { - "issues": "https://github.com/Seldaek/phar-utils/issues", - "source": "https://github.com/Seldaek/phar-utils/tree/1.2.0" - }, - "time": "2021-12-10T11:20:11+00:00" - }, - { - "name": "symfony/filesystem", - "version": "v6.0.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/filesystem.git", - "reference": "52b3c9cce673b014915445a432339f282e002ce6" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/52b3c9cce673b014915445a432339f282e002ce6", - "reference": "52b3c9cce673b014915445a432339f282e002ce6", - "shasum": "" - }, - "require": { - "php": ">=8.0.2", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-mbstring": "~1.8" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\Filesystem\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides basic utilities for the filesystem", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/filesystem/tree/v6.0.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2021-10-29T07:35:21+00:00" - }, - { - "name": "symfony/yaml", - "version": "v5.4.2", - "source": { - "type": "git", - "url": "https://github.com/symfony/yaml.git", - "reference": "b9eb163846a61bb32dfc147f7859e274fab38b58" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/b9eb163846a61bb32dfc147f7859e274fab38b58", - "reference": "b9eb163846a61bb32dfc147f7859e274fab38b58", - "shasum": "" - }, - "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-ctype": "^1.8" - }, - "conflict": { - "symfony/console": "<5.3" - }, - "require-dev": { - "symfony/console": "^5.3|^6.0" - }, - "suggest": { - "symfony/console": "For validating YAML files using the lint command" - }, - "bin": [ - "Resources/bin/yaml-lint" - ], - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\Yaml\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Loads and dumps YAML files", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/yaml/tree/v5.4.2" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2021-12-16T21:58:21+00:00" - }, { "name": "symplify/easy-coding-standard", "version": "10.0.8", diff --git a/config/services.php b/config/services.php index 0dae23d..e535c9e 100644 --- a/config/services.php +++ b/config/services.php @@ -2,4 +2,10 @@ declare(strict_types=1); -return []; +return [ + "google" => [ + "client_id" => env("GOOGLE_CLIENT_ID"), + "client_secret" => env("GOOGLE_CLIENT_SECRET"), + "redirect" => env("GOOGLE_REDIRECT"), + ], +]; diff --git a/database/factories/UserFactory.php b/database/factories/UserFactory.php index 52145f4..4ddc304 100644 --- a/database/factories/UserFactory.php +++ b/database/factories/UserFactory.php @@ -5,7 +5,6 @@ declare(strict_types=1); namespace Database\Factories; use Illuminate\Database\Eloquent\Factories\Factory; -use Illuminate\Support\Facades\Hash; use Illuminate\Support\Str; class UserFactory extends Factory @@ -15,8 +14,6 @@ class UserFactory extends Factory return [ "name" => $this->faker->name(), "email" => $this->faker->unique()->safeEmail(), - "email_verified_at" => now(), - "password" => Hash::make("secret123"), "remember_token" => Str::random(10), ]; } diff --git a/database/migrations/2014_10_12_000000_create_users_table.php b/database/migrations/2014_10_12_000000_create_users_table.php index 4ceb0bd..3408253 100644 --- a/database/migrations/2014_10_12_000000_create_users_table.php +++ b/database/migrations/2014_10_12_000000_create_users_table.php @@ -12,9 +12,9 @@ return new class() extends Migration { Schema::create("users", function (Blueprint $table): void { $table->id(); $table->string("name"); + $table->string("avatar")->nullable(); $table->string("email")->unique(); - $table->timestamp("email_verified_at")->nullable(); - $table->string("password"); + $table->string("google_id")->nullable(); $table->rememberToken(); $table->timestamps(); }); diff --git a/public/img/logo-white.png b/public/img/logo-white.png new file mode 100644 index 0000000000000000000000000000000000000000..853f4e3246748a95fbccdacd0182ed1f985d60d5 GIT binary patch literal 6896 zcmb`M_di_E*T8kcN|dm>dhcbe&I&>F5WUy6N^FEp)X(ZYR%a0+AxcDxE{U+(>Rq%b zVTlMKN|Xe7*7t9C?hp6Qea$(qnRCv}nVI(_Juud#r)8rhAt9mH*V8s5At5y&mYr#+ zi0{;UsrkeY#S=|^3mW2srg2XsAz`b~*S>2J?DX>mU7O|fV*l2j)6)Q91MP${VHHkJ zeSlI$S2ms(nPjK_Is1+>xS6Dqcwc0@gt^SYklQqN%KPKJ(y9Bo%jch} zKD9Q_vBAgQ&lUN!oH*?V7oG2Z!f&eM&&HMiJ#kpgka;*GqWc2+3LrwhJ%IbQ))Qv= z5mRTwrVoBVl^rGLp%Dj7dE8;;Nc_E!d8N6XCY(}6l=U8oq(!i;qH8`7RnOoWaZ}tT zY=%UksXS7aA-Rroy8wg+_*Z`rC%Y@3{@Y7rtz&_;cEH+xEd~p~ube{?st3oS`y=Dbb9cVU6#O`~0a& z>+{c8#8)yN@`<)aSqa+Nx*q?YbAD+?79PyaIC^cPCeR@EI|XB@MOje;r{RKG3%YWs z0BZ;q83n{jWedg{Ju=0nvzPT*P<6WyT?4?%-y)hIG6{I|0Q>z*MVvLUH3*2tQY3%C zKX2f?4kBhX0&CiFG$NCK4}I|by5{fiow;Iz95HjVd|U%!*a~rOhIJn9uXF%P77+bJ z(WBv|sq8iJYPLz}rJL1zH^@B`E?OVh{!%?$cWYzw)d10d4>CbC_e7{~aV;GV@TZ|G zjq;(oSPB%w5h_RAy69P(qS%ei&rmV)Aq^B*@6Q;Ab_00%r|rGlgZ*z#s0V98Nki{n z{k2CrWw)xp-%7iCcqqJpB8I-r`(4&t4}=~Kv$#X7y{~t)-q_uzZ&@;?6nZ;f?j-Y- z8_NBu6S(M{@5NZpR#{eADX0c48Wku!dW>wlvLf1k?84*ixNraX)9?1TmQ`a~0%d(3 zsPV7wyKhH2KdKcBiI6lU`yEcwRAH33Ih^}AWJIPPqa|^_>qo`)pu%aG#b)jW@_(qQ zpQ*4_yjFayn!`O$9^^=Rt{4zc6*(s;hJ?QMb|JTOaFw|3v{$PHBi$Wmo)XlStO zjo*HJ9l=Wgg;;i?d)Thg6(w^5Pp&(dd_ zXYTe^s98TXgev?{fw_;M?2#HP`^jgj@YRkm?ANdDr@ISBCKLGQ48u9%LB79#eBOt~ zRldCLjxiM(;}Dzt!($Br1Z;9+1%CvU0;e6LeAL#RMkS6bop}1_Jv~!30EEngNhMv! zvfow4*E1_NN@La(DkLg9BP857ko)8(gwpN;ONbE6#TY*Su-N=-)kUAZ^z<(7gMV0e z09x*y(H=#H>3ESEXP^YQxZ}?canGxZbNo9m6NpZoIcXgS2V&UFHbAH+J&#%NM`Z#lHCA$5z3}=Xb*Xc$w#&MNQIU zJj(qJFALGa`P~L@oq063%|hNs-D4a?i-f!vM)fVb=eB1u9?QOh`r7G<#0=@(lxa+w zk?y=$7iWir#+dfs1_Qi{KhlK*9Mt&4v*o53yNh^p<++r zX)G~+4va(PkBipH57CgN^_gm0^WIugP-`AvH193bB~<}$+dZMP`#4BB;>?@gyGHYd z4jtsmZSYk7!Z3&Eaws$-XKSnC<0C^Z#Uo_$n=9g&egzQ7igKqzK! zay~-;O90>p#S()-Cd0MFiBk-Dr3t1TeV%k3c6X{wwH?RI_md6cwylybl9;ba^eku)Jd9Kwf2GE*40u7(8QBAhE5QV- zs{zZeHj4zKDJRhH}KW!vFqkwLc^jTt%Cf z5j&DQWrrNHnqTy@xruqS8+(pk{t)oE+PU-UpFWWHgt#08jlqtLn2n-VnN484Ra4@< zIzwCWhx-_MIzrIDt4q3uh0ci1qs!A()ke>81&Bj~Z)f8@dW;?W0cAby3V~h|36x7NF%e>X7%j@)M6R*j)1W znL6iA%NQ#9J<8YK67d4J8PzV2r-K?1PYz4&CGUMBnCrd5y$Ku?%v~~ex@4eSh-crz zDFu%yZ&jCf1T`FOB4lol>hefAHR)yv-Tz>&s0|QVmk0&Af zpE3?MpykR@nm#7>^|<*P@yKS2;--wJd6$UvrFO7lZ1jPf%4mUN8uCeFQlzyE?hP&8 z0`ei!)hZLl;Pmya!{x&4Ed1wUb42m)?4R+{lJ@Ju64}x8I?9lBJ8hlX3#2vuK zqQF|>0XMq>@(ji;I_Ie`MzYn}&on1-#|AFiid294sHO3KJtjrn&efm$)qJSXQBa58 zor_;Rv&c5-*D!4qH{U{7ckB(r8XjJX+co>Fno(vV$&I4P^AmFSRrgE+mCJHwKLq$} zwGmPcZ3MdB+`#*|JZ*lPSj?BGJ1RS-M95$M7_{m^W6Un?bSws{%`;4{d6}!HlcnkN z<1~d`F+8qw%FVaupJBT;ROM6C8RPe2pflRvN-XnoLhDuttD$!0mhco^!*3L7=}~Z8tK|eXPO~5iAC>(-FA80a96d&x)z*{jx2D;TZ~WmT*}rxDx381wJiR zSX$iifcnGJ?J53@<1$`)?tJg33HHKfKs$pJa7XYn*30C?yPG9$dIauzj*u=&V4>4Y z(_req167#PosXye1InbncQO1^OXMexKd>`hRj{vAf>l?gM>#mAlW) zp9?zZG)g`7ywiJZIYobJ&?-Ai4668H&dU2I6?I9sA?qVEQKY?l_g!{3l7BANFxSI= z&zN(2aEy2~-)Tt{{cDfs=;O=6vra0n?CZ=(lT?+I`&1r+-@=m~^` zql&}n=El)}jxuc#EaP|nB3}n^*BuIr7fxH&l#{+baz{;wWx5phxX(BGAvxJJ1o~lT zUtOR(Q0z&oi?4&odDq2J$_?@EA1hv zBUc7Kda+Ly8W3afG_bHLoti-ih`Gy)67R#8$wZ1Fcai89a@~^dI9m_2Gn}2J&!SWF zS}63(E1J}3Kx~`4qr7%zYf>eSv76#XdBJYUdbH}q0PKEtX{XbX(i8^Sub_`cKjQM% zDZ38@skduSic|s~{zGSE%K=i*-AKRximE;<0QO8c@3`YVr?5icD+y#8fU=&J*EJaO zHd=-qqoTlomwovy2I{`pTVJWKg$z$6~8GzrgCmbeTUG=(QZe`T{$u zDa5>&yOwGrd`gMYgG6i5OkWp@4Bv=+(0I2_2mXxi+j|c z)4gTYhKIN&iJ`|jF4@!sZ;1QF>i6LBZ$}&}iF!g|4Kp?*Kob@NtH-#s#MlG#!O?;^ zy}(lOjKs1);E&}PcbJi#)YNC=8GUg^%s>3Yh^`WEcGjBLYcrq!L_+`b{>ilnF<)LC zXS1-&A{+r97yKZ{_hZ8B&U5-^xx>%aV#=G&!<$g*fpng;%V?_v`;y3R8vqx$)~~T; zFNXyLcEL~*#Oxh{Lz7Rd#rN~Kv#snKCN3;RI4ii3?Dmyth%ar(@UXAaz@FQNOF#N2 z@J>=Y+a)gOzP5LTAKe3*44za+QT*zXz4MZIfS@7dCvt$-f;g72!XPai$c0W@{>pB8l0coU@on+>0;ZM6>7lf_$XfY&S?oLKspLC-V{O#lyzu9 z5A|C6FQxNpsYLm6gYYW2@ld->>vu6C2esz@wBKcGXv+vjapDA=%sQmdKj&lVU&fXr zexwtEOl!;_?P&maL76U<)vseJUfw?^tsJ6nmJ9&h#s%2V&NL_q5Y8aPOU-H%U39 zCLHf;(Jd~T9VctfnWgSXT8=f5@svj+Y|KsoeBNr`z?hK(LcefWg8hTuzhMk9L()0^ z?xyPyL((#YGSsLZ@MgzxV$*dYuIyoF$WcyE7#Hr>w94T~|6>ZJUti3Oo;{c<0l1+T zRjBrI6D*Rq;7icl-|6tSh*@4r2$iRY2b+CCrIoX2+D>xDGfHER{CBi!tQWjkSSdm| zlT*@m&N1kPpn>0tO@^of2$TR&h>jhEn!rA2>Kr+r-{_(VNV<*w8+s?-vc{sYUJmGH zqz1_SzRkGd+5X>Bn|~uH<4ha_Ql=n~?b$2rh!akKl=Gx?aP{7n2r_#nhn$CO)wHg# z-D+z_4CeaDNe=Jni)#FOm7x~efE^!iW9oKaS}jT-)vnzEc}(QtGAO%a?kmP(4Q*#{ z4+VRey+AkHk~mevaA#R00}e4S9bo`zo1puV^*Jv@R)JL-_lz)*zf1;zZ?lqoO**Gt zk=3*!W3nP&7`i}I@$)7Sl{=_U-oZ=4$x|teX1(TdQz(8AvPdI+5=82j|Fmin5U)zy zgg0f6y;KBMpfsJCy-gcZ#^f12PKNojXO|USs-IHoNlXM>q%LbTU*gR6{)Df47naCG zPAEfLB*#rkZeqe*F2Dfg_3rO&5n9{vtG)muMq+jwP8nz{ybOv~f2XbgwpC)3f$pyF zm#ubM9*-#;DCsU>yiOkL7s^vT`%@L;ER{MoZbJ9D3hgq$?zJ2<=5C-SjnU5%N{ZVz zb~=!Q$xv}cT=-MJ=IjU+XyL%k-_)VrJJqr0*jxLgm2fl15hc2fp}T9|P?}Kppth#S zoz)O~JYdQ&u69~jC!=F-i}RwxbJ}!*;k3Zc*46O8O;5(v=0ZC}YoZ*4P)-8Mkq7ZFOAJ_0+@?z!idMt4_bvfz4`9X2%FS+d6(dVlxL(< ztYyH)1Z9pGnz80NCwAp_vBg0~Mr#NExVot*f9b|#0xr=$H7aF@)rQIrBVrr0{0{CZ zBMe}*14)#xF#XKbU#NTkjZOCl72eKX@O$VSgZLT><%;Bhh`AW8b3t^3z459F!%bHy zl!CencW-+xuz|QEC+Pr$2JwZip1e&sI`+!|C~P+;g8aL;1%I_I9}sjyQgE6T@l5^d zkW&48BkRT9@<&xDooETqt*W!(5P>_a{|uG@#3hrMjOe;-Zs`bK6ht2gbHR3~&F!){ ziXY0Ah=n9iQb-GHN@tOo`Q{H`QCr+kNbzQnYDZ7wRAhpGy!_MU@|XiK=nyJT@mdvB z5xiNm)+Gb+9OI}U#*mTlDM>|0a|(-#M9q6FghHqEgbECPp@@%U*NgP#I}V< zjE5WvjFDw~R;MmC!`Eb`t+I|d8tCx85ZVvQrFDIlrDgYx$kdu#y2uFR!}Zn1L;#^S zY+hl^>B9kO=sI&A0tX@Qh4WF=OU*4SFo31Y${O;4!;4}qWtI{D0Kd90d6!4ims}8+ zNVsY&Afs@E`eTvNdLD|plWlz4AyjhIwzVC9TNtVCW5~A~?G@fB!y~Dy{D*h4wuUFF zo(_=z$S634@z#&^I6B}^iR)|To@R~=7r@cZAgNOUE}ezyhHACM{hl_>VwsuPF1ccH zawzj2!bqFMy(c!YY&6QB`eTsOyEuNVe3uPQ_PcViXAjMka~xDpfxI{K$WdG3k#5+Z z!H3^Q^6MfenK69!^RG64iPe(xZ9LS=nJs@=(%Y9|+MmCYfEntKQRiA(!Q);{sM2dtErVav>?k~3a6C5Q(KRhEaIi$GLaGkJS;#i;YWBb&v z&fpc+bxs+qqMpwCYrA<>Ud4AL;3eTCUGo$=(nui>BAHPvSk6U-D7b~}sQ~3ENWAIwB{Y zCX|S=ivId}adEIe3(LGbKsmFjgvC=o%#nP2?xLs2idnu0TVhRf&E|&pY!F1pX+S$j z@3rB1_VgwwmGR=OF37iG>gj+R^q~FuK;w-4MXw(4;mDAgVr5mfa;RPsD#d745m#pOLYckdL;zkw+>MqBTEf1y*0#p9LM-MH9&ZpH56!vZSV{bVYUC5dkMchxc}w zp?VDisYf0t*BHNkbKW(hG^8Ox-jl!%eA=rc`;vtjXsBiuO?u8Ye87P6#~R+vf5w-Y znRxtP+npplO+)l~P5Zi+G^hc-^#p>E{LC|4Wiu2BBv;Yd?n{psCvxmX*;ktRCuxyP z*EbbTMBE-KQ@VCdeou(y@=N|#6e8r;8e-W_0Pi*;2P;)07xd>uIPTfydA8b|@>E<- zzb49fcWX4nLEklpn4ZEto-eW2lwZrz5XqKt277Ve^`*xQf=KoQ_EWG%L>g*Fq@l59 zCr;&hVVa^;_6Hp_g8ZY}*A>ykipAF5KN<-+0 zQnjb>)?rJxre2VYyT;|ZQ9H14jJm72Xx7>YxjI-6ZKUi0Nc%l7OWoIIGbO4Sz{sO$ z%HBoFnAHD(HuuVwun@aMir|Tl()h44^p@CJ5%RKpBD0%92Q~W=9l$_Cv^i?x4bL?d xe11&@M}w?)%86o8*Hn-ug|_7XU*+spo-wqXdqpgbc!foxf6rLER?{W={{UNO2qXXi literal 0 HcmV?d00001 diff --git a/resources/js/Pages/Dashboard.vue b/resources/js/Pages/Dashboard.vue index b080cdb..57c5ad3 100644 --- a/resources/js/Pages/Dashboard.vue +++ b/resources/js/Pages/Dashboard.vue @@ -1,681 +1,368 @@ \ No newline at end of file diff --git a/resources/js/Shared/Layout/AppLayout.vue b/resources/js/Shared/Layout/AppLayout.vue new file mode 100644 index 0000000..ea11dfa --- /dev/null +++ b/resources/js/Shared/Layout/AppLayout.vue @@ -0,0 +1,19 @@ + + + diff --git a/resources/js/Shared/Layout/GuestLayout.vue b/resources/js/Shared/Layout/GuestLayout.vue new file mode 100644 index 0000000..e28def1 --- /dev/null +++ b/resources/js/Shared/Layout/GuestLayout.vue @@ -0,0 +1,11 @@ + + + diff --git a/resources/js/Shared/MainMenu.vue b/resources/js/Shared/MainMenu.vue new file mode 100644 index 0000000..16e4625 --- /dev/null +++ b/resources/js/Shared/MainMenu.vue @@ -0,0 +1,285 @@ + + + + diff --git a/resources/js/app.js b/resources/js/app.js index 1ef93aa..95cc0c5 100644 --- a/resources/js/app.js +++ b/resources/js/app.js @@ -1,14 +1,24 @@ import {createApp, h} from 'vue'; -import {createInertiaApp} from '@inertiajs/inertia-vue3'; +import {createInertiaApp, Head, Link} from '@inertiajs/inertia-vue3'; import {InertiaProgress} from '@inertiajs/progress'; +import AppLayout from '@/Shared/Layout/AppLayout'; createInertiaApp({ - resolve: name => require(`./Pages/${name}`), + resolve: name => { + const page = require(`./Pages/${name}`).default; + + page.layout = page.layout || AppLayout; + + return page; + }, setup({el, App, props, plugin}) { createApp({render: () => h(App, props)}) .use(plugin) + .component('InertiaLink', Link) + .component('InertiaHead', Head) .mount(el); }, + title: title => `${title} - Toby`, }); InertiaProgress.init(); diff --git a/resources/lang/pl.json b/resources/lang/pl.json new file mode 100644 index 0000000..41d1f41 --- /dev/null +++ b/resources/lang/pl.json @@ -0,0 +1,3 @@ +{ + "User does not exist.": "Użytkownik nie istnieje." +} \ No newline at end of file diff --git a/routes/web.php b/routes/web.php index 99b6a46..75e22cc 100644 --- a/routes/web.php +++ b/routes/web.php @@ -2,6 +2,29 @@ declare(strict_types=1); +use Illuminate\Http\Request; +use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Route; +use Toby\Http\Controllers\GoogleController; -Route::get("/", fn() => inertia("Dashboard")); +Route::middleware("auth")->group(function (): void { + Route::get("/", fn() => inertia("Dashboard"))->name("dashboard"); + Route::get("/logout", function (Request $request) { + Auth::logout(); + + $request->session()->invalidate(); + + $request->session()->regenerateToken(); + + + return redirect()->route("login"); + }); +}); + +Route::middleware("guest")->group(function(): void { + Route::get("login", fn() => inertia("Login"))->name("login"); + Route::get("login/google/start", [GoogleController::class, "redirect"]) + ->name("login.google.start"); + Route::get("login/google/end", [GoogleController::class, "callback"]) + ->name("login.google.end"); +}); \ No newline at end of file diff --git a/tailwind.config.js b/tailwind.config.js index 40210da..cda7b7e 100644 --- a/tailwind.config.js +++ b/tailwind.config.js @@ -9,6 +9,20 @@ module.exports = { fontFamily: { sans: ['Inter var', ...defaultTheme.fontFamily.sans], }, + colors: { + 'blumilk': { + '50': '#D5DFEE', + '100': '#C7D4E9', + '200': '#AABDDD', + '300': '#8CA7D1', + '400': '#6F90C6', + '500': '#527ABA', + '600': '#3C5F97', + '700': '#2C466F', + '800': '#1C2D47', + '900': '#0C141F' + }, + } }, }, plugins: [ -- 2.52.0 From 38af769f7b6385dfa24a0f511c34f7826655bf93 Mon Sep 17 00:00:00 2001 From: Adrian Hopek Date: Thu, 13 Jan 2022 09:08:36 +0100 Subject: [PATCH 02/20] #2 - wip --- app/Http/Controllers/GoogleController.php | 4 +- app/Http/Controllers/LogoutController.php | 22 + app/Http/Middleware/HandleInertiaRequests.php | 8 +- app/Http/Resources/UserResource.php | 21 + app/Models/User.php | 16 - composer.lock | 1353 ++++++++++++++++- .../2014_10_12_000000_create_users_table.php | 2 - package-lock.json | 60 +- package.json | 6 +- phpunit.xml | 2 +- public/img/icon.png | Bin 0 -> 6821 bytes public/img/logo.png | Bin 0 -> 7045 bytes resources/js/Pages/Dashboard.vue | 2 +- resources/js/Shared/MainMenu.vue | 12 +- routes/web.php | 18 +- tests/Feature/AuthenticationTest.php | 43 + tests/Feature/InertiaTest.php | 9 +- 17 files changed, 1434 insertions(+), 144 deletions(-) create mode 100644 app/Http/Controllers/LogoutController.php create mode 100644 app/Http/Resources/UserResource.php create mode 100644 public/img/icon.png create mode 100644 public/img/logo.png create mode 100644 tests/Feature/AuthenticationTest.php diff --git a/app/Http/Controllers/GoogleController.php b/app/Http/Controllers/GoogleController.php index 0e01966..08a1eb2 100644 --- a/app/Http/Controllers/GoogleController.php +++ b/app/Http/Controllers/GoogleController.php @@ -6,9 +6,9 @@ namespace Toby\Http\Controllers; use Illuminate\Contracts\Auth\Factory as AuthFactory; use Illuminate\Database\Eloquent\ModelNotFoundException; -use Toby\Models\User; use Laravel\Socialite\SocialiteManager; use Symfony\Component\HttpFoundation\RedirectResponse; +use Toby\Models\User; class GoogleController extends Controller { @@ -29,8 +29,6 @@ class GoogleController extends Controller $auth->guard()->login($user, true); - $user->syncGoogleData($socialUser); - return redirect()->route("dashboard"); } catch (ModelNotFoundException) { return redirect() diff --git a/app/Http/Controllers/LogoutController.php b/app/Http/Controllers/LogoutController.php new file mode 100644 index 0000000..f7519b7 --- /dev/null +++ b/app/Http/Controllers/LogoutController.php @@ -0,0 +1,22 @@ +session()->invalidate(); + $request->session()->regenerateToken(); + + return redirect()->route("login"); + } +} diff --git a/app/Http/Middleware/HandleInertiaRequests.php b/app/Http/Middleware/HandleInertiaRequests.php index c71c54f..48117f8 100644 --- a/app/Http/Middleware/HandleInertiaRequests.php +++ b/app/Http/Middleware/HandleInertiaRequests.php @@ -6,6 +6,7 @@ namespace Toby\Http\Middleware; use Illuminate\Http\Request; use Inertia\Middleware; +use Toby\Http\Resources\UserResource; class HandleInertiaRequests extends Middleware { @@ -15,12 +16,7 @@ class HandleInertiaRequests extends Middleware return array_merge(parent::share($request), [ "auth" => fn() => [ - "user" => $user ? [ - "name" => $user->name, - "email" => $user->email, - "role" => "Human Resources Manager", - "imageUrl" => $user->avatar, - ] : null, + "user" => $user ? new UserResource($user) : null, ], "flash" => fn() => [ "success" => $request->session()->get("success"), diff --git a/app/Http/Resources/UserResource.php b/app/Http/Resources/UserResource.php new file mode 100644 index 0000000..b3e03f0 --- /dev/null +++ b/app/Http/Resources/UserResource.php @@ -0,0 +1,21 @@ + $this->id, + "name" => $this->name, + "email" => $this->email, + "role" => "Human Resources Manager", + "avatar" => "https://images.unsplash.com/photo-1550525811-e5869dd03032?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=facearea&facepad=2&w=256&h=256&q=80", + ]; + } +} diff --git a/app/Models/User.php b/app/Models/User.php index 335a09e..660b8f7 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -7,14 +7,11 @@ namespace Toby\Models; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Foundation\Auth\User as Authenticatable; use Illuminate\Notifications\Notifiable; -use Laravel\Socialite\Two\User as SocialUser; /** * @property int $id * @property string $name * @property string $email - * @property string $avatar - * @property string $google_id */ class User extends Authenticatable { @@ -29,17 +26,4 @@ class User extends Authenticatable protected $hidden = [ "remember_token", ]; - - protected $casts = [ - "email_verified_at" => "datetime", - ]; - - public function syncGoogleData(SocialUser $user): void - { - $this->name = $user->getName(); - $this->avatar = $user->getAvatar(); - $this->google_id = $user->getId(); - - $this->save(); - } } diff --git a/composer.lock b/composer.lock index 2b1c5e9..e9f029f 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "85ceb3ddf8f14cb162c2e9e68ba1fd6c", + "content-hash": "6c0c7586f9003a71d9299165b3d5030d", "packages": [ { "name": "asm89/stack-cors", @@ -366,16 +366,16 @@ }, { "name": "dragonmantank/cron-expression", - "version": "v3.2.3", + "version": "v3.2.4", "source": { "type": "git", "url": "https://github.com/dragonmantank/cron-expression.git", - "reference": "47c53bbb260d3c398fba9bfa9683dcf67add2579" + "reference": "9545dea2a1d92b60c8b3d06f02025c83e999bde0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/47c53bbb260d3c398fba9bfa9683dcf67add2579", - "reference": "47c53bbb260d3c398fba9bfa9683dcf67add2579", + "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/9545dea2a1d92b60c8b3d06f02025c83e999bde0", + "reference": "9545dea2a1d92b60c8b3d06f02025c83e999bde0", "shasum": "" }, "require": { @@ -415,7 +415,7 @@ ], "support": { "issues": "https://github.com/dragonmantank/cron-expression/issues", - "source": "https://github.com/dragonmantank/cron-expression/tree/v3.2.3" + "source": "https://github.com/dragonmantank/cron-expression/tree/v3.2.4" }, "funding": [ { @@ -423,7 +423,7 @@ "type": "github" } ], - "time": "2022-01-06T05:35:07+00:00" + "time": "2022-01-13T04:09:37+00:00" }, { "name": "egulias/email-validator", @@ -961,26 +961,26 @@ }, { "name": "inertiajs/inertia-laravel", - "version": "v0.5.1", + "version": "v0.5.2", "source": { "type": "git", "url": "https://github.com/inertiajs/inertia-laravel.git", - "reference": "1b2d57abcffc087f07d2d892f0197af559d23802" + "reference": "9c8c4201435aa0c11cb832242cf4c1b01bd8ef32" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/inertiajs/inertia-laravel/zipball/1b2d57abcffc087f07d2d892f0197af559d23802", - "reference": "1b2d57abcffc087f07d2d892f0197af559d23802", + "url": "https://api.github.com/repos/inertiajs/inertia-laravel/zipball/9c8c4201435aa0c11cb832242cf4c1b01bd8ef32", + "reference": "9c8c4201435aa0c11cb832242cf4c1b01bd8ef32", "shasum": "" }, "require": { "ext-json": "*", - "laravel/framework": "^6.0|^7.0|^8.74", + "laravel/framework": "^6.0|^7.0|^8.74|^9.0", "php": "^7.2|~8.0.0|~8.1.0" }, "require-dev": { "mockery/mockery": "^1.3.3", - "orchestra/testbench": "^4.0|^5.0|^6.4", + "orchestra/testbench": "^4.0|^5.0|^6.4|^7.0", "phpunit/phpunit": "^8.0|^9.5.8", "roave/security-advisories": "dev-master" }, @@ -1018,7 +1018,7 @@ ], "support": { "issues": "https://github.com/inertiajs/inertia-laravel/issues", - "source": "https://github.com/inertiajs/inertia-laravel/tree/v0.5.1" + "source": "https://github.com/inertiajs/inertia-laravel/tree/v0.5.2" }, "funding": [ { @@ -1026,20 +1026,20 @@ "type": "github" } ], - "time": "2022-01-07T18:18:00+00:00" + "time": "2022-01-12T16:18:26+00:00" }, { "name": "laravel/framework", - "version": "v8.78.1", + "version": "v8.79.0", "source": { "type": "git", "url": "https://github.com/laravel/framework.git", - "reference": "16359b5ebafba6579b397d7505b082a6d1bb2e31" + "reference": "8091f07558ff4a890435ff9d25fa9aca0189ad63" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/16359b5ebafba6579b397d7505b082a6d1bb2e31", - "reference": "16359b5ebafba6579b397d7505b082a6d1bb2e31", + "url": "https://api.github.com/repos/laravel/framework/zipball/8091f07558ff4a890435ff9d25fa9aca0189ad63", + "reference": "8091f07558ff4a890435ff9d25fa9aca0189ad63", "shasum": "" }, "require": { @@ -1071,7 +1071,7 @@ "symfony/routing": "^5.4", "symfony/var-dumper": "^5.4", "tijsverkoyen/css-to-inline-styles": "^2.2.2", - "vlucas/phpdotenv": "^5.2", + "vlucas/phpdotenv": "^5.4.1", "voku/portable-ascii": "^1.4.8" }, "conflict": { @@ -1128,6 +1128,7 @@ "symfony/cache": "^5.4" }, "suggest": { + "ably/ably-php": "Required to use the Ably broadcast driver (^1.0).", "aws/aws-sdk-php": "Required to use the SQS queue driver, DynamoDb failed job storage and SES mail driver (^3.198.1).", "brianium/paratest": "Required to run tests in parallel (^6.0).", "doctrine/dbal": "Required to rename columns and drop SQLite columns (^2.13.3|^3.1.4).", @@ -1198,7 +1199,7 @@ "issues": "https://github.com/laravel/framework/issues", "source": "https://github.com/laravel/framework" }, - "time": "2022-01-05T14:52:50+00:00" + "time": "2022-01-12T16:12:41+00:00" }, { "name": "laravel/serializable-closure", @@ -1261,30 +1262,30 @@ }, { "name": "laravel/socialite", - "version": "v5.2.6", + "version": "v5.3.0", "source": { "type": "git", "url": "https://github.com/laravel/socialite.git", - "reference": "b5c67f187ddcf15529ff7217fa735b132620dfac" + "reference": "4e6f7e40de9a54ad641de5b8e29cdf1e73842e10" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/socialite/zipball/b5c67f187ddcf15529ff7217fa735b132620dfac", - "reference": "b5c67f187ddcf15529ff7217fa735b132620dfac", + "url": "https://api.github.com/repos/laravel/socialite/zipball/4e6f7e40de9a54ad641de5b8e29cdf1e73842e10", + "reference": "4e6f7e40de9a54ad641de5b8e29cdf1e73842e10", "shasum": "" }, "require": { "ext-json": "*", "guzzlehttp/guzzle": "^6.0|^7.0", - "illuminate/http": "^6.0|^7.0|^8.0", - "illuminate/support": "^6.0|^7.0|^8.0", + "illuminate/http": "^6.0|^7.0|^8.0|^9.0", + "illuminate/support": "^6.0|^7.0|^8.0|^9.0", "league/oauth1-client": "^1.0", "php": "^7.2|^8.0" }, "require-dev": { - "illuminate/contracts": "^6.0|^7.0", + "illuminate/contracts": "^6.0|^7.0|^8.0|^9.0", "mockery/mockery": "^1.0", - "orchestra/testbench": "^4.0|^5.0|^6.0", + "orchestra/testbench": "^4.0|^5.0|^6.0|^7.0", "phpunit/phpunit": "^8.0|^9.3" }, "type": "library", @@ -1326,31 +1327,31 @@ "issues": "https://github.com/laravel/socialite/issues", "source": "https://github.com/laravel/socialite" }, - "time": "2021-12-07T16:32:57+00:00" + "time": "2022-01-12T18:05:39+00:00" }, { "name": "laravel/telescope", - "version": "v4.6.10", + "version": "v4.7.0", "source": { "type": "git", "url": "https://github.com/laravel/telescope.git", - "reference": "65f9fdfd978dd999b5c496cd5a8398abdf9056a2" + "reference": "4c7f170e20c2303321fa857bc3acceb69a588563" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/telescope/zipball/65f9fdfd978dd999b5c496cd5a8398abdf9056a2", - "reference": "65f9fdfd978dd999b5c496cd5a8398abdf9056a2", + "url": "https://api.github.com/repos/laravel/telescope/zipball/4c7f170e20c2303321fa857bc3acceb69a588563", + "reference": "4c7f170e20c2303321fa857bc3acceb69a588563", "shasum": "" }, "require": { "ext-json": "*", - "laravel/framework": "^8.29", + "laravel/framework": "^8.29|^9.0", "php": "^7.3|^8.0", - "symfony/var-dumper": "^5.0" + "symfony/var-dumper": "^5.0|^6.0" }, "require-dev": { "ext-gd": "*", - "orchestra/testbench": "^6.0" + "orchestra/testbench": "^6.0|^7.0" }, "type": "library", "extra": { @@ -1391,38 +1392,38 @@ ], "support": { "issues": "https://github.com/laravel/telescope/issues", - "source": "https://github.com/laravel/telescope/tree/v4.6.10" + "source": "https://github.com/laravel/telescope/tree/v4.7.0" }, - "time": "2022-01-03T13:08:00+00:00" + "time": "2022-01-12T17:03:58+00:00" }, { "name": "laravel/tinker", - "version": "v2.6.3", + "version": "v2.7.0", "source": { "type": "git", "url": "https://github.com/laravel/tinker.git", - "reference": "a9ddee4761ec8453c584e393b393caff189a3e42" + "reference": "5f2f9815b7631b9f586a3de7933c25f9327d4073" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/tinker/zipball/a9ddee4761ec8453c584e393b393caff189a3e42", - "reference": "a9ddee4761ec8453c584e393b393caff189a3e42", + "url": "https://api.github.com/repos/laravel/tinker/zipball/5f2f9815b7631b9f586a3de7933c25f9327d4073", + "reference": "5f2f9815b7631b9f586a3de7933c25f9327d4073", "shasum": "" }, "require": { - "illuminate/console": "^6.0|^7.0|^8.0", - "illuminate/contracts": "^6.0|^7.0|^8.0", - "illuminate/support": "^6.0|^7.0|^8.0", + "illuminate/console": "^6.0|^7.0|^8.0|^9.0", + "illuminate/contracts": "^6.0|^7.0|^8.0|^9.0", + "illuminate/support": "^6.0|^7.0|^8.0|^9.0", "php": "^7.2.5|^8.0", - "psy/psysh": "^0.10.4", - "symfony/var-dumper": "^4.3.4|^5.0" + "psy/psysh": "^0.10.4|^0.11.1", + "symfony/var-dumper": "^4.3.4|^5.0|^6.0" }, "require-dev": { "mockery/mockery": "~1.3.3|^1.4.2", "phpunit/phpunit": "^8.5.8|^9.3.3" }, "suggest": { - "illuminate/database": "The Illuminate Database package (^6.0|^7.0|^8.0)." + "illuminate/database": "The Illuminate Database package (^6.0|^7.0|^8.0|^9.0)." }, "type": "library", "extra": { @@ -1459,9 +1460,9 @@ ], "support": { "issues": "https://github.com/laravel/tinker/issues", - "source": "https://github.com/laravel/tinker/tree/v2.6.3" + "source": "https://github.com/laravel/tinker/tree/v2.7.0" }, - "time": "2021-12-07T16:41:42+00:00" + "time": "2022-01-10T08:52:49+00:00" }, { "name": "league/commonmark", @@ -2769,29 +2770,29 @@ }, { "name": "psy/psysh", - "version": "v0.10.12", + "version": "v0.11.1", "source": { "type": "git", "url": "https://github.com/bobthecow/psysh.git", - "reference": "a0d9981aa07ecfcbea28e4bfa868031cca121e7d" + "reference": "570292577277f06f590635381a7f761a6cf4f026" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/bobthecow/psysh/zipball/a0d9981aa07ecfcbea28e4bfa868031cca121e7d", - "reference": "a0d9981aa07ecfcbea28e4bfa868031cca121e7d", + "url": "https://api.github.com/repos/bobthecow/psysh/zipball/570292577277f06f590635381a7f761a6cf4f026", + "reference": "570292577277f06f590635381a7f761a6cf4f026", "shasum": "" }, "require": { "ext-json": "*", "ext-tokenizer": "*", - "nikic/php-parser": "~4.0|~3.0|~2.0|~1.3", - "php": "^8.0 || ^7.0 || ^5.5.9", - "symfony/console": "~5.0|~4.0|~3.0|^2.4.2|~2.3.10", - "symfony/var-dumper": "~5.0|~4.0|~3.0|~2.7" + "nikic/php-parser": "^4.0 || ^3.1", + "php": "^8.0 || ^7.0.8", + "symfony/console": "^6.0 || ^5.0 || ^4.0 || ^3.4", + "symfony/var-dumper": "^6.0 || ^5.0 || ^4.0 || ^3.4" }, "require-dev": { "bamarni/composer-bin-plugin": "^1.2", - "hoa/console": "3.17.*" + "hoa/console": "3.17.05.02" }, "suggest": { "ext-pcntl": "Enabling the PCNTL extension makes PsySH a lot happier :)", @@ -2806,7 +2807,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "0.10.x-dev" + "dev-main": "0.11.x-dev" } }, "autoload": { @@ -2838,9 +2839,9 @@ ], "support": { "issues": "https://github.com/bobthecow/psysh/issues", - "source": "https://github.com/bobthecow/psysh/tree/v0.10.12" + "source": "https://github.com/bobthecow/psysh/tree/v0.11.1" }, - "time": "2021-11-30T14:05:36+00:00" + "time": "2022-01-03T13:58:38+00:00" }, { "name": "ralouphie/getallheaders", @@ -5646,6 +5647,548 @@ }, "time": "2022-01-04T07:21:36+00:00" }, + { + "name": "composer/ca-bundle", + "version": "1.3.1", + "source": { + "type": "git", + "url": "https://github.com/composer/ca-bundle.git", + "reference": "4c679186f2aca4ab6a0f1b0b9cf9252decb44d0b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/composer/ca-bundle/zipball/4c679186f2aca4ab6a0f1b0b9cf9252decb44d0b", + "reference": "4c679186f2aca4ab6a0f1b0b9cf9252decb44d0b", + "shasum": "" + }, + "require": { + "ext-openssl": "*", + "ext-pcre": "*", + "php": "^5.3.2 || ^7.0 || ^8.0" + }, + "require-dev": { + "phpstan/phpstan": "^0.12.55", + "psr/log": "^1.0", + "symfony/phpunit-bridge": "^4.2 || ^5", + "symfony/process": "^2.5 || ^3.0 || ^4.0 || ^5.0 || ^6.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Composer\\CaBundle\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" + } + ], + "description": "Lets you find a path to the system CA bundle, and includes a fallback to the Mozilla CA bundle.", + "keywords": [ + "cabundle", + "cacert", + "certificate", + "ssl", + "tls" + ], + "support": { + "irc": "irc://irc.freenode.org/composer", + "issues": "https://github.com/composer/ca-bundle/issues", + "source": "https://github.com/composer/ca-bundle/tree/1.3.1" + }, + "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": "2021-10-28T20:44:15+00:00" + }, + { + "name": "composer/composer", + "version": "2.2.4", + "source": { + "type": "git", + "url": "https://github.com/composer/composer.git", + "reference": "8a5ad75194f901e3b39ece4bbd22cbdabc79ae8f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/composer/composer/zipball/8a5ad75194f901e3b39ece4bbd22cbdabc79ae8f", + "reference": "8a5ad75194f901e3b39ece4bbd22cbdabc79ae8f", + "shasum": "" + }, + "require": { + "composer/ca-bundle": "^1.0", + "composer/metadata-minifier": "^1.0", + "composer/pcre": "^1.0", + "composer/semver": "^3.0", + "composer/spdx-licenses": "^1.2", + "composer/xdebug-handler": "^2.0", + "justinrainbow/json-schema": "^5.2.11", + "php": "^5.3.2 || ^7.0 || ^8.0", + "psr/log": "^1.0 || ^2.0", + "react/promise": "^1.2 || ^2.7", + "seld/jsonlint": "^1.4", + "seld/phar-utils": "^1.0", + "symfony/console": "^2.8.52 || ^3.4.35 || ^4.4 || ^5.0", + "symfony/filesystem": "^2.8.52 || ^3.4.35 || ^4.4 || ^5.0 || ^6.0", + "symfony/finder": "^2.8.52 || ^3.4.35 || ^4.4 || ^5.0 || ^6.0", + "symfony/process": "^2.8.52 || ^3.4.35 || ^4.4 || ^5.0 || ^6.0" + }, + "require-dev": { + "phpspec/prophecy": "^1.10", + "symfony/phpunit-bridge": "^4.2 || ^5.0 || ^6.0" + }, + "suggest": { + "ext-openssl": "Enabling the openssl extension allows you to access https URLs for repositories and packages", + "ext-zip": "Enabling the zip extension allows you to unzip archives", + "ext-zlib": "Allow gzip compression of HTTP requests" + }, + "bin": [ + "bin/composer" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.2-dev" + } + }, + "autoload": { + "psr-4": { + "Composer\\": "src/Composer" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nils Adermann", + "email": "naderman@naderman.de", + "homepage": "https://www.naderman.de" + }, + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "https://seld.be" + } + ], + "description": "Composer helps you declare, manage and install dependencies of PHP projects. It ensures you have the right stack everywhere.", + "homepage": "https://getcomposer.org/", + "keywords": [ + "autoload", + "dependency", + "package" + ], + "support": { + "irc": "ircs://irc.libera.chat:6697/composer", + "issues": "https://github.com/composer/composer/issues", + "source": "https://github.com/composer/composer/tree/2.2.4" + }, + "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-01-08T11:30:42+00:00" + }, + { + "name": "composer/metadata-minifier", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/composer/metadata-minifier.git", + "reference": "c549d23829536f0d0e984aaabbf02af91f443207" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/composer/metadata-minifier/zipball/c549d23829536f0d0e984aaabbf02af91f443207", + "reference": "c549d23829536f0d0e984aaabbf02af91f443207", + "shasum": "" + }, + "require": { + "php": "^5.3.2 || ^7.0 || ^8.0" + }, + "require-dev": { + "composer/composer": "^2", + "phpstan/phpstan": "^0.12.55", + "symfony/phpunit-bridge": "^4.2 || ^5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Composer\\MetadataMinifier\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" + } + ], + "description": "Small utility library that handles metadata minification and expansion.", + "keywords": [ + "composer", + "compression" + ], + "support": { + "issues": "https://github.com/composer/metadata-minifier/issues", + "source": "https://github.com/composer/metadata-minifier/tree/1.0.0" + }, + "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": "2021-04-07T13:37:33+00:00" + }, + { + "name": "composer/pcre", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/composer/pcre.git", + "reference": "3d322d715c43a1ac36c7fe215fa59336265500f2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/composer/pcre/zipball/3d322d715c43a1ac36c7fe215fa59336265500f2", + "reference": "3d322d715c43a1ac36c7fe215fa59336265500f2", + "shasum": "" + }, + "require": { + "php": "^5.3.2 || ^7.0 || ^8.0" + }, + "require-dev": { + "phpstan/phpstan": "^1", + "phpstan/phpstan-strict-rules": "^1.1", + "symfony/phpunit-bridge": "^4.2 || ^5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Composer\\Pcre\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" + } + ], + "description": "PCRE wrapping library that offers type-safe preg_* replacements.", + "keywords": [ + "PCRE", + "preg", + "regex", + "regular expression" + ], + "support": { + "issues": "https://github.com/composer/pcre/issues", + "source": "https://github.com/composer/pcre/tree/1.0.0" + }, + "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": "2021-12-06T15:17:27+00:00" + }, + { + "name": "composer/semver", + "version": "3.2.7", + "source": { + "type": "git", + "url": "https://github.com/composer/semver.git", + "reference": "deac27056b57e46faf136fae7b449eeaa71661ee" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/composer/semver/zipball/deac27056b57e46faf136fae7b449eeaa71661ee", + "reference": "deac27056b57e46faf136fae7b449eeaa71661ee", + "shasum": "" + }, + "require": { + "php": "^5.3.2 || ^7.0 || ^8.0" + }, + "require-dev": { + "phpstan/phpstan": "^0.12.54", + "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.2.7" + }, + "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-01-04T09:57:54+00:00" + }, + { + "name": "composer/spdx-licenses", + "version": "1.5.6", + "source": { + "type": "git", + "url": "https://github.com/composer/spdx-licenses.git", + "reference": "a30d487169d799745ca7280bc90fdfa693536901" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/composer/spdx-licenses/zipball/a30d487169d799745ca7280bc90fdfa693536901", + "reference": "a30d487169d799745ca7280bc90fdfa693536901", + "shasum": "" + }, + "require": { + "php": "^5.3.2 || ^7.0 || ^8.0" + }, + "require-dev": { + "phpstan/phpstan": "^0.12.55", + "symfony/phpunit-bridge": "^4.2 || ^5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Composer\\Spdx\\": "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": "SPDX licenses list and validation library.", + "keywords": [ + "license", + "spdx", + "validator" + ], + "support": { + "irc": "irc://irc.freenode.org/composer", + "issues": "https://github.com/composer/spdx-licenses/issues", + "source": "https://github.com/composer/spdx-licenses/tree/1.5.6" + }, + "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": "2021-11-18T10:14:14+00:00" + }, + { + "name": "composer/xdebug-handler", + "version": "2.0.4", + "source": { + "type": "git", + "url": "https://github.com/composer/xdebug-handler.git", + "reference": "0c1a3925ec58a4ec98e992b9c7d171e9e184be0a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/0c1a3925ec58a4ec98e992b9c7d171e9e184be0a", + "reference": "0c1a3925ec58a4ec98e992b9c7d171e9e184be0a", + "shasum": "" + }, + "require": { + "composer/pcre": "^1", + "php": "^5.3.2 || ^7.0 || ^8.0", + "psr/log": "^1 || ^2 || ^3" + }, + "require-dev": { + "phpstan/phpstan": "^1.0", + "phpstan/phpstan-strict-rules": "^1.1", + "symfony/phpunit-bridge": "^4.2 || ^5.0 || ^6.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Composer\\XdebugHandler\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "John Stevenson", + "email": "john-stevenson@blueyonder.co.uk" + } + ], + "description": "Restarts a process without Xdebug.", + "keywords": [ + "Xdebug", + "performance" + ], + "support": { + "irc": "irc://irc.freenode.org/composer", + "issues": "https://github.com/composer/xdebug-handler/issues", + "source": "https://github.com/composer/xdebug-handler/tree/2.0.4" + }, + "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-01-04T17:06:45+00:00" + }, { "name": "doctrine/instantiator", "version": "1.4.0", @@ -5715,6 +6258,159 @@ ], "time": "2020-11-10T18:47:58+00:00" }, + { + "name": "enlightn/enlightn", + "version": "v1.22.1", + "source": { + "type": "git", + "url": "https://github.com/enlightn/enlightn.git", + "reference": "b4743d1abbcaf8340729a9cada2cceced33ff2c6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/enlightn/enlightn/zipball/b4743d1abbcaf8340729a9cada2cceced33ff2c6", + "reference": "b4743d1abbcaf8340729a9cada2cceced33ff2c6", + "shasum": "" + }, + "require": { + "enlightn/security-checker": "^1.1", + "ext-json": "*", + "guzzlehttp/guzzle": "^5.0|^6.0|^7.0", + "laravel/framework": "^6.0|^7.0|^8.0", + "nikic/php-parser": "^4.0", + "nunomaduro/larastan": "^0.6.11|^0.7", + "php": "^7.2|^8.0", + "phpstan/phpstan": "^0.12.59", + "symfony/finder": "^4.0|^5.0" + }, + "require-dev": { + "barryvdh/laravel-ide-helper": "^2.8", + "brianium/paratest": "^6.1", + "fideloper/proxy": "^4.4", + "friendsofphp/php-cs-fixer": "^2.18", + "mockery/mockery": "^1.3", + "orchestra/testbench": "^4.0|^5.0|^6.0", + "phpunit/phpunit": "^7.5|^8.0|^9.0", + "predis/predis": "*" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Enlightn\\Enlightn\\EnlightnServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Enlightn\\Enlightn\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "LGPL-3.0-or-later" + ], + "authors": [ + { + "name": "Paras Malhotra", + "email": "paras@laravel-enlightn.com" + }, + { + "name": "Miguel Piedrafita", + "email": "soy@miguelpiedrafita.com" + }, + { + "name": "Lars Klopstra", + "email": "lars@flowframe.nl" + } + ], + "description": "Enlightn - Your performance & security consultant, an artisan command away.", + "homepage": "https://www.laravel-enlightn.com/", + "keywords": [ + "Audit", + "analysis tool", + "dynamic analysis", + "dynamic analyzer", + "laravel", + "package", + "performance", + "security", + "static analysis", + "static analyzer" + ], + "support": { + "docs": "https://www.laravel-enlightn.com/docs/", + "issues": "https://github.com/enlightn/enlightn/issues", + "source": "https://github.com/enlightn/enlightn/tree/v1.22.1" + }, + "time": "2021-05-03T07:32:51+00:00" + }, + { + "name": "enlightn/security-checker", + "version": "v1.9.0", + "source": { + "type": "git", + "url": "https://github.com/enlightn/security-checker.git", + "reference": "dc5bce653fa4d9c792e9dcffa728c0642847c1e1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/enlightn/security-checker/zipball/dc5bce653fa4d9c792e9dcffa728c0642847c1e1", + "reference": "dc5bce653fa4d9c792e9dcffa728c0642847c1e1", + "shasum": "" + }, + "require": { + "ext-json": "*", + "guzzlehttp/guzzle": "^6.3|^7.0", + "php": ">=5.6", + "symfony/console": "^3.4|^4|^5", + "symfony/finder": "^3|^4|^5", + "symfony/process": "^3.4|^4|^5", + "symfony/yaml": "^3.4|^4|^5" + }, + "require-dev": { + "ext-zip": "*", + "friendsofphp/php-cs-fixer": "^2.18", + "phpunit/phpunit": "^5.5|^6|^7|^8|^9" + }, + "bin": [ + "security-checker" + ], + "type": "library", + "autoload": { + "psr-4": { + "Enlightn\\SecurityChecker\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Paras Malhotra", + "email": "paras@laravel-enlightn.com" + }, + { + "name": "Miguel Piedrafita", + "email": "soy@miguelpiedrafita.com" + } + ], + "description": "A PHP dependency vulnerabilities scanner based on the Security Advisories Database.", + "keywords": [ + "package", + "php", + "scanner", + "security", + "security advisories", + "vulnerability scanner" + ], + "support": { + "issues": "https://github.com/enlightn/security-checker/issues", + "source": "https://github.com/enlightn/security-checker/tree/v1.9.0" + }, + "time": "2021-05-06T09:03:35+00:00" + }, { "name": "facade/flare-client-php", "version": "1.9.1", @@ -6098,6 +6794,76 @@ }, "time": "2020-07-09T08:09:16+00:00" }, + { + "name": "justinrainbow/json-schema", + "version": "5.2.11", + "source": { + "type": "git", + "url": "https://github.com/justinrainbow/json-schema.git", + "reference": "2ab6744b7296ded80f8cc4f9509abbff393399aa" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/justinrainbow/json-schema/zipball/2ab6744b7296ded80f8cc4f9509abbff393399aa", + "reference": "2ab6744b7296ded80f8cc4f9509abbff393399aa", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "~2.2.20||~2.15.1", + "json-schema/json-schema-test-suite": "1.2.0", + "phpunit/phpunit": "^4.8.35" + }, + "bin": [ + "bin/validate-json" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "JsonSchema\\": "src/JsonSchema/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Bruno Prieto Reis", + "email": "bruno.p.reis@gmail.com" + }, + { + "name": "Justin Rainbow", + "email": "justin.rainbow@gmail.com" + }, + { + "name": "Igor Wiedler", + "email": "igor@wiedler.ch" + }, + { + "name": "Robert Schönthal", + "email": "seroscho@googlemail.com" + } + ], + "description": "A library to validate a json schema.", + "homepage": "https://github.com/justinrainbow/json-schema", + "keywords": [ + "json", + "schema" + ], + "support": { + "issues": "https://github.com/justinrainbow/json-schema/issues", + "source": "https://github.com/justinrainbow/json-schema/tree/5.2.11" + }, + "time": "2021-07-22T09:24:00+00:00" + }, { "name": "mockery/mockery", "version": "1.4.4", @@ -6315,6 +7081,104 @@ ], "time": "2022-01-10T16:22:52+00:00" }, + { + "name": "nunomaduro/larastan", + "version": "v0.7.15", + "source": { + "type": "git", + "url": "https://github.com/nunomaduro/larastan.git", + "reference": "fffd371277aeca7951a841818d21f1015a0a2662" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nunomaduro/larastan/zipball/fffd371277aeca7951a841818d21f1015a0a2662", + "reference": "fffd371277aeca7951a841818d21f1015a0a2662", + "shasum": "" + }, + "require": { + "composer/composer": "^1.0 || ^2.0", + "ext-json": "*", + "illuminate/console": "^6.0 || ^7.0 || ^8.0 || ^9.0", + "illuminate/container": "^6.0 || ^7.0 || ^8.0 || ^9.0", + "illuminate/contracts": "^6.0 || ^7.0 || ^8.0 || ^9.0", + "illuminate/database": "^6.0 || ^7.0 || ^8.0 || ^9.0", + "illuminate/http": "^6.0 || ^7.0 || ^8.0 || ^9.0", + "illuminate/pipeline": "^6.0 || ^7.0 || ^8.0 || ^9.0", + "illuminate/support": "^6.0 || ^7.0 || ^8.0 || ^9.0", + "mockery/mockery": "^0.9 || ^1.0", + "php": "^7.2 || ^8.0", + "phpstan/phpstan": "^0.12.90", + "symfony/process": "^4.3 || ^5.0 || ^6.0" + }, + "require-dev": { + "nikic/php-parser": "4.12.0", + "orchestra/testbench": "^4.0 || ^5.0 || ^6.0 || ^7.0", + "phpunit/phpunit": "^7.3 || ^8.2 || ^9.3" + }, + "suggest": { + "orchestra/testbench": "Using Larastan for analysing a package needs Testbench" + }, + "type": "phpstan-extension", + "extra": { + "branch-alias": { + "dev-master": "0.7-dev" + }, + "phpstan": { + "includes": [ + "extension.neon" + ] + } + }, + "autoload": { + "psr-4": { + "NunoMaduro\\Larastan\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nuno Maduro", + "email": "enunomaduro@gmail.com" + } + ], + "description": "Larastan - Discover bugs in your code without running it. A phpstan/phpstan wrapper for Laravel", + "keywords": [ + "PHPStan", + "code analyse", + "code analysis", + "larastan", + "laravel", + "package", + "php", + "static analysis" + ], + "support": { + "issues": "https://github.com/nunomaduro/larastan/issues", + "source": "https://github.com/nunomaduro/larastan/tree/v0.7.15" + }, + "funding": [ + { + "url": "https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=66BYDWAT92N6L", + "type": "custom" + }, + { + "url": "https://github.com/canvural", + "type": "github" + }, + { + "url": "https://github.com/nunomaduro", + "type": "github" + }, + { + "url": "https://www.patreon.com/nunomaduro", + "type": "patreon" + } + ], + "time": "2021-10-26T11:07:56+00:00" + }, { "name": "phar-io/manifest", "version": "2.0.3", @@ -6653,6 +7517,70 @@ }, "time": "2021-12-08T12:19:24+00:00" }, + { + "name": "phpstan/phpstan", + "version": "0.12.99", + "source": { + "type": "git", + "url": "https://github.com/phpstan/phpstan.git", + "reference": "b4d40f1d759942f523be267a1bab6884f46ca3f7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/b4d40f1d759942f523be267a1bab6884f46ca3f7", + "reference": "b4d40f1d759942f523be267a1bab6884f46ca3f7", + "shasum": "" + }, + "require": { + "php": "^7.1|^8.0" + }, + "conflict": { + "phpstan/phpstan-shim": "*" + }, + "bin": [ + "phpstan", + "phpstan.phar" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "0.12-dev" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "PHPStan - PHP Static Analysis Tool", + "support": { + "issues": "https://github.com/phpstan/phpstan/issues", + "source": "https://github.com/phpstan/phpstan/tree/0.12.99" + }, + "funding": [ + { + "url": "https://github.com/ondrejmirtes", + "type": "github" + }, + { + "url": "https://github.com/phpstan", + "type": "github" + }, + { + "url": "https://www.patreon.com/phpstan", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpstan/phpstan", + "type": "tidelift" + } + ], + "time": "2021-09-12T20:09:55+00:00" + }, { "name": "phpunit/php-code-coverage", "version": "9.2.10", @@ -7074,6 +8002,56 @@ ], "time": "2021-12-25T07:07:57+00:00" }, + { + "name": "react/promise", + "version": "v2.8.0", + "source": { + "type": "git", + "url": "https://github.com/reactphp/promise.git", + "reference": "f3cff96a19736714524ca0dd1d4130de73dbbbc4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/reactphp/promise/zipball/f3cff96a19736714524ca0dd1d4130de73dbbbc4", + "reference": "f3cff96a19736714524ca0dd1d4130de73dbbbc4", + "shasum": "" + }, + "require": { + "php": ">=5.4.0" + }, + "require-dev": { + "phpunit/phpunit": "^7.0 || ^6.5 || ^5.7 || ^4.8.36" + }, + "type": "library", + "autoload": { + "psr-4": { + "React\\Promise\\": "src/" + }, + "files": [ + "src/functions_include.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jan Sorgalla", + "email": "jsorgalla@gmail.com" + } + ], + "description": "A lightweight implementation of CommonJS Promises/A for PHP", + "keywords": [ + "promise", + "promises" + ], + "support": { + "issues": "https://github.com/reactphp/promise/issues", + "source": "https://github.com/reactphp/promise/tree/v2.8.0" + }, + "time": "2020-05-12T15:16:56+00:00" + }, { "name": "sebastian/cli-parser", "version": "1.0.1", @@ -8038,6 +9016,255 @@ ], "time": "2020-09-28T06:39:44+00:00" }, + { + "name": "seld/jsonlint", + "version": "1.8.3", + "source": { + "type": "git", + "url": "https://github.com/Seldaek/jsonlint.git", + "reference": "9ad6ce79c342fbd44df10ea95511a1b24dee5b57" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Seldaek/jsonlint/zipball/9ad6ce79c342fbd44df10ea95511a1b24dee5b57", + "reference": "9ad6ce79c342fbd44df10ea95511a1b24dee5b57", + "shasum": "" + }, + "require": { + "php": "^5.3 || ^7.0 || ^8.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0" + }, + "bin": [ + "bin/jsonlint" + ], + "type": "library", + "autoload": { + "psr-4": { + "Seld\\JsonLint\\": "src/Seld/JsonLint/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" + } + ], + "description": "JSON Linter", + "keywords": [ + "json", + "linter", + "parser", + "validator" + ], + "support": { + "issues": "https://github.com/Seldaek/jsonlint/issues", + "source": "https://github.com/Seldaek/jsonlint/tree/1.8.3" + }, + "funding": [ + { + "url": "https://github.com/Seldaek", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/seld/jsonlint", + "type": "tidelift" + } + ], + "time": "2020-11-11T09:19:24+00:00" + }, + { + "name": "seld/phar-utils", + "version": "1.2.0", + "source": { + "type": "git", + "url": "https://github.com/Seldaek/phar-utils.git", + "reference": "9f3452c93ff423469c0d56450431562ca423dcee" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Seldaek/phar-utils/zipball/9f3452c93ff423469c0d56450431562ca423dcee", + "reference": "9f3452c93ff423469c0d56450431562ca423dcee", + "shasum": "" + }, + "require": { + "php": ">=5.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Seld\\PharUtils\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be" + } + ], + "description": "PHAR file format utilities, for when PHP phars you up", + "keywords": [ + "phar" + ], + "support": { + "issues": "https://github.com/Seldaek/phar-utils/issues", + "source": "https://github.com/Seldaek/phar-utils/tree/1.2.0" + }, + "time": "2021-12-10T11:20:11+00:00" + }, + { + "name": "symfony/filesystem", + "version": "v6.0.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/filesystem.git", + "reference": "52b3c9cce673b014915445a432339f282e002ce6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/52b3c9cce673b014915445a432339f282e002ce6", + "reference": "52b3c9cce673b014915445a432339f282e002ce6", + "shasum": "" + }, + "require": { + "php": ">=8.0.2", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-mbstring": "~1.8" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Filesystem\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Provides basic utilities for the filesystem", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/filesystem/tree/v6.0.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-10-29T07:35:21+00:00" + }, + { + "name": "symfony/yaml", + "version": "v5.4.2", + "source": { + "type": "git", + "url": "https://github.com/symfony/yaml.git", + "reference": "b9eb163846a61bb32dfc147f7859e274fab38b58" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/yaml/zipball/b9eb163846a61bb32dfc147f7859e274fab38b58", + "reference": "b9eb163846a61bb32dfc147f7859e274fab38b58", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/polyfill-ctype": "^1.8" + }, + "conflict": { + "symfony/console": "<5.3" + }, + "require-dev": { + "symfony/console": "^5.3|^6.0" + }, + "suggest": { + "symfony/console": "For validating YAML files using the lint command" + }, + "bin": [ + "Resources/bin/yaml-lint" + ], + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\Yaml\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Loads and dumps YAML files", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/yaml/tree/v5.4.2" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2021-12-16T21:58:21+00:00" + }, { "name": "symplify/easy-coding-standard", "version": "10.0.8", diff --git a/database/migrations/2014_10_12_000000_create_users_table.php b/database/migrations/2014_10_12_000000_create_users_table.php index 3408253..d1943d9 100644 --- a/database/migrations/2014_10_12_000000_create_users_table.php +++ b/database/migrations/2014_10_12_000000_create_users_table.php @@ -12,9 +12,7 @@ return new class() extends Migration { Schema::create("users", function (Blueprint $table): void { $table->id(); $table->string("name"); - $table->string("avatar")->nullable(); $table->string("email")->unique(); - $table->string("google_id")->nullable(); $table->rememberToken(); $table->timestamps(); }); diff --git a/package-lock.json b/package-lock.json index a58928e..f5d5036 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,5 +1,5 @@ { - "name": "application", + "name": "toby", "lockfileVersion": 2, "requires": true, "packages": { @@ -11,15 +11,15 @@ "@inertiajs/inertia-vue3": "^0.6.0", "@inertiajs/progress": "^0.2.7", "@tailwindcss/forms": "^0.4.0", - "@tailwindcss/line-clamp": "^0.3.0", + "@tailwindcss/line-clamp": "^0.3.1", "@tailwindcss/typography": "^0.5.0", "@vue/compiler-sfc": "^3.2.26", "autoprefixer": "^10.4.2", "laravel-mix": "^6.0.6", "postcss": "^8.4.5", - "tailwindcss": "^3.0.12", + "tailwindcss": "^3.0.13", "vue": "^3.2.26", - "vue-loader": "^16.8.3" + "vue-loader": "^17.0.0" }, "devDependencies": { "eslint": "^8.6.0", @@ -1782,9 +1782,9 @@ } }, "node_modules/@tailwindcss/line-clamp": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@tailwindcss/line-clamp/-/line-clamp-0.3.0.tgz", - "integrity": "sha512-ffDDclrqr3sy8cpChCozedDUAN8enxqAiWeH8d4dGQ2hcXlxf51+7KleveFi/n/TxEuRVApoL7hICeDOdYPKpg==", + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@tailwindcss/line-clamp/-/line-clamp-0.3.1.tgz", + "integrity": "sha512-pNr0T8LAc3TUx/gxCfQZRe9NB2dPEo/cedPHzUGIPxqDMhgjwNm6jYxww4W5l0zAsAddxr+XfZcqttGiFDgrGg==", "peerDependencies": { "tailwindcss": ">=2.0.0 || >=3.0.0 || >=3.0.0-alpha.1" } @@ -4166,9 +4166,9 @@ } }, "node_modules/eslint-plugin-vue": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-8.2.0.tgz", - "integrity": "sha512-cLIdTuOAMXyHeQ4drYKcZfoyzdwdBpH279X8/N0DgmotEI9yFKb5O/cAgoie/CkQZCH/MOmh0xw/KEfS90zY2A==", + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-8.3.0.tgz", + "integrity": "sha512-IIuLHw4vQxGlHcoP2dG6t/2OVdQf2qoyAzEGAxreU1afZOHGA7y3TWq8I+r3ZA6Wjs6xpeUWGHlT31QGr9Rb5g==", "dev": true, "dependencies": { "eslint-utils": "^3.0.0", @@ -8451,9 +8451,9 @@ } }, "node_modules/tailwindcss": { - "version": "3.0.12", - "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.0.12.tgz", - "integrity": "sha512-VqhF86z2c34sJyS5ZS8Q2nYuN0KzqZw1GGsuQQO9kJ3mY1oG7Fsag0vICkxUVXk6P+1sUkTkjMjKWCjEF0hNHw==", + "version": "3.0.13", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.0.13.tgz", + "integrity": "sha512-raRPGFwQSGXn/3h0ttHND9jyPYfqk/ur2NXtlQuK25+ZnrCjlH1s1j4/oPswHGMoZzGNykUVycZ/LcROanUE0A==", "dependencies": { "arg": "^5.0.1", "chalk": "^4.1.2", @@ -8474,7 +8474,7 @@ "postcss-selector-parser": "^6.0.8", "postcss-value-parser": "^4.2.0", "quick-lru": "^5.1.1", - "resolve": "^1.20.0" + "resolve": "^1.21.0" }, "bin": { "tailwind": "lib/cli.js", @@ -8893,9 +8893,9 @@ } }, "node_modules/vue-loader": { - "version": "16.8.3", - "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-16.8.3.tgz", - "integrity": "sha512-7vKN45IxsKxe5GcVCbc2qFU5aWzyiLrYJyUuMz4BQLKctCj/fmCa0w6fGiiQ2cLFetNcek1ppGJQDCup0c1hpA==", + "version": "17.0.0", + "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-17.0.0.tgz", + "integrity": "sha512-OWSXjrzIvbF2LtOUmxT3HYgwwubbfFelN8PAP9R9dwpIkj48TVioHhWWSx7W7fk+iF5cgg3CBJRxwTdtLU4Ecg==", "dependencies": { "chalk": "^4.1.0", "hash-sum": "^2.0.0", @@ -10639,9 +10639,9 @@ } }, "@tailwindcss/line-clamp": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@tailwindcss/line-clamp/-/line-clamp-0.3.0.tgz", - "integrity": "sha512-ffDDclrqr3sy8cpChCozedDUAN8enxqAiWeH8d4dGQ2hcXlxf51+7KleveFi/n/TxEuRVApoL7hICeDOdYPKpg==", + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@tailwindcss/line-clamp/-/line-clamp-0.3.1.tgz", + "integrity": "sha512-pNr0T8LAc3TUx/gxCfQZRe9NB2dPEo/cedPHzUGIPxqDMhgjwNm6jYxww4W5l0zAsAddxr+XfZcqttGiFDgrGg==", "requires": {} }, "@tailwindcss/typography": { @@ -12614,9 +12614,9 @@ } }, "eslint-plugin-vue": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-8.2.0.tgz", - "integrity": "sha512-cLIdTuOAMXyHeQ4drYKcZfoyzdwdBpH279X8/N0DgmotEI9yFKb5O/cAgoie/CkQZCH/MOmh0xw/KEfS90zY2A==", + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-8.3.0.tgz", + "integrity": "sha512-IIuLHw4vQxGlHcoP2dG6t/2OVdQf2qoyAzEGAxreU1afZOHGA7y3TWq8I+r3ZA6Wjs6xpeUWGHlT31QGr9Rb5g==", "dev": true, "requires": { "eslint-utils": "^3.0.0", @@ -15646,9 +15646,9 @@ } }, "tailwindcss": { - "version": "3.0.12", - "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.0.12.tgz", - "integrity": "sha512-VqhF86z2c34sJyS5ZS8Q2nYuN0KzqZw1GGsuQQO9kJ3mY1oG7Fsag0vICkxUVXk6P+1sUkTkjMjKWCjEF0hNHw==", + "version": "3.0.13", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.0.13.tgz", + "integrity": "sha512-raRPGFwQSGXn/3h0ttHND9jyPYfqk/ur2NXtlQuK25+ZnrCjlH1s1j4/oPswHGMoZzGNykUVycZ/LcROanUE0A==", "requires": { "arg": "^5.0.1", "chalk": "^4.1.2", @@ -15669,7 +15669,7 @@ "postcss-selector-parser": "^6.0.8", "postcss-value-parser": "^4.2.0", "quick-lru": "^5.1.1", - "resolve": "^1.20.0" + "resolve": "^1.21.0" }, "dependencies": { "glob-parent": { @@ -15971,9 +15971,9 @@ } }, "vue-loader": { - "version": "16.8.3", - "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-16.8.3.tgz", - "integrity": "sha512-7vKN45IxsKxe5GcVCbc2qFU5aWzyiLrYJyUuMz4BQLKctCj/fmCa0w6fGiiQ2cLFetNcek1ppGJQDCup0c1hpA==", + "version": "17.0.0", + "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-17.0.0.tgz", + "integrity": "sha512-OWSXjrzIvbF2LtOUmxT3HYgwwubbfFelN8PAP9R9dwpIkj48TVioHhWWSx7W7fk+iF5cgg3CBJRxwTdtLU4Ecg==", "requires": { "chalk": "^4.1.0", "hash-sum": "^2.0.0", diff --git a/package.json b/package.json index 7c19be4..4ac8b9c 100644 --- a/package.json +++ b/package.json @@ -18,15 +18,15 @@ "@inertiajs/inertia-vue3": "^0.6.0", "@inertiajs/progress": "^0.2.7", "@tailwindcss/forms": "^0.4.0", - "@tailwindcss/line-clamp": "^0.3.0", + "@tailwindcss/line-clamp": "^0.3.1", "@tailwindcss/typography": "^0.5.0", "@vue/compiler-sfc": "^3.2.26", "autoprefixer": "^10.4.2", "laravel-mix": "^6.0.6", "postcss": "^8.4.5", - "tailwindcss": "^3.0.12", + "tailwindcss": "^3.0.13", "vue": "^3.2.26", - "vue-loader": "^16.8.3" + "vue-loader": "^17.0.0" }, "devDependencies": { "eslint": "^8.6.0", diff --git a/phpunit.xml b/phpunit.xml index 0994cf1..c4a1bad 100644 --- a/phpunit.xml +++ b/phpunit.xml @@ -22,7 +22,7 @@ - + diff --git a/public/img/icon.png b/public/img/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..c6124b409d86ae91383ccae99ea4ccab8a06108c GIT binary patch literal 6821 zcmcI}2T)W|lP;iuqJW4<7?2DCf|7GkfguP;jzbX1IfsEkM9CQjBn)ZDFd#XDN|GE0 zBn%)3Lk^PjUjF}8?R#%`Yqx55Z`G|+)2C0L?mm6H`#Tf%RuxQ4L_>swgF~#SAgh6c zgKK^B-XQ=ezRPB4U?6y>43-5(;5mKW6aWl&ofY)maBxUEZeCnC7YPU;61pp@$Pq5z zr6YNa!!M!@@X_!o%D&X{p5DUvcxxZF?CcFWZM7sk;EVh8NpXeaKJE_*k++s5eALyU zS=HSW=Lh2xI-eIR$S6dywf=)XzK%PR8O3PRhVc8-NIq?u2hVhF6UpMrJ$m_r_Eo;* z#WsB&)>iIzU}?=HtnJEy{`mQPjW@PV_sCco??%`E!ZXm{$$_+67>nq~WYT{*C2W4k%QNSs>V*G( zf#(z|Bz9@I7%4I)@3G?3Q#oQzxMh-HRZe9cHPx{vV^mq|-LqtF{Qkja)};>&gmqbr zJi)A_bpMj83OdS5+cueEq8i7I#$VL$?;zlT+HYF2eJ7dL#bds~qUC~gKEg>?jwP$N(&*{+iT|5& z8^?1vBYZzxL$NC5wqFh}GsAG}3!lMWDC@o(8!o*fLaWl2)4aapr-3;OQOri>-8Jo&IXRHjC}uilDgAv$l)pNK(FV`vqb@FiljLCrOE|cmQYELV=B^Kt}fW#cO;a zc=&7Y3pv%-%@H#C7vT|r3S6e6oAB3B{Thq+pU#BIB|S4Uj??D z3(}rk*Gh2fESL>*ZChgftqeY%|I&C^sQ(<1n}swT?iAMPiZe&;)V}QU-WjkJq1ATq z??=^bGrO+;XiIb_6%^e`cdl^c)JM>3*`spHTE!V7-G>sNG&aTx3@xApGck+5ZrOShSaQyMB?-_IN~ zl$y(4V&Rx7v@NnZ@o@B!bFddJZ=U_}^k=i^JAtiF>#ptPmZoEUIu(M**RauDrE}BT z*>ecjaTWyV@2P%Cb60rBJI?FXTtj8+C!wFFlboI!{up5xrrhirmClv7-=#2jcVN1@ z_^t3JU|K)>3X;Z&aXryf(s;`{2IZ1O*O+uf!!P~! zHqjUnn%ifyE;s43Xoz$FRk|Br!r{sB`Nnn_29nvAZH`Vo|MOTIJ?<8NqGz0-g@M{- z({>{ufpL6HT|6mo8`-!6qDxYCB}VYPuuO?0bV<0uXO;r0_R z=`+vuH!Yqp?^myh(l{RdIc_ppwi4D*szf?KXHOqS#JQ>nOca2tK$P3lH9y(bT^NQ< zOjRcD5?;4c4LCztsf!pTC928|gf6d59J9hlplpSma|9-=7zLQ>Z10?+78+%Jb$V? zK(uxOTzk=iI_afoaHh76LX6+!9MMwm28IJXBPCL{1TVYXGSjQGbDW2?wmxHYQd7zr zO4Z^!pp1w8ITF)I2=cYIjGGo7I_bSuD~}cx)6vJS49ds5?^@SL6^Wp}WA-I|_!*3X zWkjOSJbKWqi+uP`Jba%Og9RkU-@1_~RwH&jFMoC9 zQWyj-K2(&0m)J=;=Nf?3(1ignGpwtn^H>PcNC-I!dK{a>tII=3XtDW4Rd-15TxvLBrPNneBWz|vfk-sf4N6Z@ZR2V-Lu4+HWtbr)qF3~~yBGpF2Zt1EX_Kp~ zV~uQAG*$TG;c4)kfu`vCnon=Qo(eN_^FEF{E7+VczT;0M2f6WZY4}0mh6{;UswA?` zx3;amn_4V-By4Jr8iQY$y3dc#t&gpxZAsn21qb;GppRO*Jr=8*OqixBc0K|ASf3XA zE#10q_?fQi@Owdl`>I})q4FvONE6IJnrK$Z^0)n)t}UHdbIqAdulK+?@+K$1@Kv6# zwUHAM2z-TR)HZu*!O`1u_w8rqmU>my)I*Y}$NNJfc{$hPOQg3--)cu0VpFLh&W8@5 z-pS`Dp)%+F9aAOSiJR9+ee*f)kq1Z)Nr8HBRo~xvWfFXWLaU599_eDvWabu&W3rl` z4y6;PHjf5E;$Pt&uE!!h3`sd?J(lD2aeHQm9abYL`-CN+A7##$E4wz~bs%KHY;+ax zsPx?I>&b)0<`}q=B9X1kOU+9g-Ot4k-&es0lilpC5SZ+i;rl{4M^3r@?8q)f+nHyt zogAfEl3Q1jIlGM~offJqw?LF9M^8rY?hAee%9~0O;o>tzFN|K69n>Vn>T20CZx!qH zm}6|&Fi759r%kV3MO<2f=R{LInHD3KgM{Auy6(Z&lc+dRN5A_fl@9WV!(glRB)I+x|tEjG0p{?S#HMvzi7A8w_WprA1g#~e)N!IbyYYODO(KSFMcWh@$1y2|#i zS|~=%8uyLI(Fv?IdJ>{6%?kUg;3(8jDMd zYopTgY{sIA^eLUD^(dol+)l}eHKJqobe6+qpe#mO-$TAGH|3Fl^^SJcl99VP7~6Bc``fjczL<0Yf_?>UhWzqa z@QYH11O}AU<&i8cRp*6<%0FFmDgp=O`;B%-rmfz=z7*}?NoK#da5C>#QY;HVILv10 zr24$pRqM}lsB*UuAhGE?-=5oTD`qQofJWO|oAI-LuGdYTcejUUYib{!EsQDY8qX^@ zXd)|)fDbU~p>+)PwOWZUL8)ecl6nWp}a>4u$8 z!4xZ8R13f{k2PtQd2WmUUb!?Qx)-d{$2tGi6hH7NG^|S3%kvQw!sp{yzC0~8aL}%Z zk@SiAGpK7(EJcHco?}{mU+?vbZC&NY7gV0aE>Tf<3;@v-q7A{0QszfekDsR6?6kDO zzN_MGRW9oHi5r0JSjT3!YVNOR6hOnFKlhy7eLa4NLA9+IYb zuB0?N1yykJ*m^SR`rdJ!_x)M9SBw7Rx|p1pa~ZX#kc7N15UwKBhRb$R0kmz5pU3l4 zie%Y#E9fc^nbP;0!`}a;Jb2AK=ea)X4 zmW*H}c7?LaL0k{3iaxuzsi3KlFi4v1^>0pp-wuo#>z3r(qLqdybUwAP?%y;Z9fWt3 zLP^DH*N2hU4sCOX6CYE((@l&_F4BxD8})Q1n_8lO9I3bm&~~1-1&E7B!+h?OLY;mc%g}I@*E>|inVzGi?J1DT_6uou}v-LJ)v}%X`zwQHUCFM zUD&iZ({Cd~`9~U)6Deh7NFWe&h5X(O`2D0pLh}!XwS9Q}t@_v5@G#$)AbjQUKkFfp z;t+Vz6wnih4oVND(Gpn?()o{P=QYi5=wBV->b7l#a~P1lVK`WXyP@0c;dv*OfQSRK?UH)d84P@a02{Ls~_7%YFA=+E@1UQ ziqt(Q!2GL^YVng(M-z+Fi`K4zD$T>;ekR>A%8b(DB@+w0dg!Y_v6{v2KVT&8K@-fv z{Boq2DXTDn1zQ`hU+(2#Kf3mnRDI>f(bJZ}v zQP9j5c8D|X$<3$5hg9fcR3$fp0hLqG&cKP_Wma25f0rU>3t(3ji1p9Ve4ah9%X4noLgHnkU`JXn;lKe!&C!)1u_51psh&gX;c)+x{<9cLVPJ3H|=h?7u=k0Q3Fp?0*gn|2rGd zXaFeVnI(0H?j1fn9LK_YV8QDKR52=s?>-*!H!j-^X5Wh`)O5wp?RG$`<{Tif!I?g~ zP$|*Q7l1|OB0l-5ZkcmAmm$Se1c3w#6zrTE2fLa(s|n0j|0IOOOcov#NtZ0jqCn5- z>t;Ogh!?`osuv@bGGX9ut_>p}f3AIwK!Oi#RXYnd1O8`p+BzW^!%r3GcLi|#2Ith& z*5V50wY61#VLt0MrOVvH`#1eS5zytcxF&a?w2BS>qD;BoOF)K1*~bEnfLiK ztF=ln*bi_FOS5#FZnnv@i-;d{p>7>wmZ}m%2{O0ppG`PO<_4HFkMRpjSB?fL)6;3I z0^HTwPV~b8&00JgaL^dFWXnOt$TjVb8|yF*Pfwo{EZ52yvxLCc-}l=dVVgg0x4$d! z!O6a-(cjl`*?6Z~-@utk)EgVmekOPE!o=|x=>kZ<-nYD9(LVQjjLT*zvL>&c8J5B; zZjD1(r(83tS>9Z(E9}3SCvv^N=!3N4KAI{8B;I=*p?_(q-!Rd_jSPAWSty)FUgD$z+1_7U(82onDYV(DK2qo)!KOI~F15<}Punciv zow3L7!j)tP^bu(^)RNz+^l}^6D|7FB6WFR;3j!K3AF>~T(nD8H0}s2t6h&a8jMMMz zvk&787Tuh7K%E?vM9X*O_;ZwKLUKQSgM@lCZXm%fD|^Yhz;O@vw8`(30y%_B?%wl3 z`qOS%F_PN=%BGdnFBvVE8v#&E#;Ly<%Iz{DCT2F#y89!btP=%$vG&=Y$8=KaOHugx z+8vQy&!B#PCS)a^+@|@!vL@3>ExEba4r%N7HB>5KJJrl9{_yY%a3^xMYnu1O$2X#h z)ax?mGO&=Y!TRb~OPHV09f8<|BbY`}NWgJ)v0aNx3?tWmYuG0+&sp*YDa%>KZ%0oV zyb=+0l#j)Z@6*9)i$`>=pG3&58RF!SI{TTJd`+wMmdf0L@43Iw$}3Tl9V4e)JT5qQ z*J}m<$G8pZSo%9?oCHrQm6!kd`89~(p#emsn9^h(8zlllMY5oySqA~lbG^Li(Ke)h z@7k&MO;WOlPoxv)^aj*V`EEq5qUgZ0^P+~_5*d%uTYrIL3YmbYnwksZF;RKJd2d_P z2RkjNnL`^@-o;A7fQu+B^{5(bhJ2NUo9@vbJ7JrVuzvNb^h|aGF&R#;2k%j5 z9L8Z`WyjZcg+9+?gD!47xb^PkIhe-_(9o*JIyFCY&Y;lrTYXzx?RwhgC*y{-tK?Bp zz8g=@A>0nWIRK^AmyyuY`Nc15(Kt3BA_2UBJkR$vXXm!Lb3>3Sa7xZ^yskAi4nMH# z%(EK>a#DKKK}+3Z&INC#(bves-=CrdfM~_P)wH}eXDC6wW)^q$vm}hh21rB71cyJz zTI!AxmjV?)Qzb}`L*~C^!J}<#)tJZCfZAK^iT)})kqc#CD zCY3B)qgb=g0|(M<9tnG|a#7UKMyclav(l}pZ?bS@Mt5_P8lmsJ)MTfXmS`+)`_tWM zniIJ?^U6zYw^!9*Qdo(Ur+K4HIs~v)fo7yU5B8$<8z?S`?Ma{HRlp_H4L^u_sttZa zC%3B@%|$kJKQ`8FWLqtu1`arxYR&P9epE_2g#JkTMoVQrTN&j`(^rAINp5bc{wK$< zFu+vjwYcqhB`;W01pCChyv5D4pVvUZI!_S4Hh{8?#<$r0-PHC1#GM%BI?>Nefx?82 zOd_nfcNDU47fSEy){PvvAez4>=7zegJOsGX_u8jz*9%F?%G;?h8W#)Uo zCFmcyp-Yt>ijD#(S1@*e6>-cN>S%jAC(i|-3}$=F5@I$jb5S<*Ysr@y0L3VJ*r2oh#UXQ)z)f{(p+~ ze^kl=CSdLVVk!Th*}z#p#T#-0TrwOfwaFVO#q$4gvu!7n%jw76v+8LcahVb$a(|*- zLl%tlP0(oZA5F@?*%)v$;FW*eUT>+)Qs90296AFP>Tt@6lKkOAxPa#;p9MTE5O<1Iu=dbPo*nW{7nb}x)v z;))>9(X@?=&e$#wEOL$Gx4b;{&97oG<{4g_ufI*QkGQA?= z324uz`I@2ir1&_#TfT)NLXPmKH3-WVTVL9LCL=N)u-6>dT7O`3;qF|<1tIUhJ2_N6 zk*H)lxJJYhNs8J`&)b)meonoSOy7I5r+`s!WLtKJoET1g*^B3nAJ@=mtrtxM6?_q_ zoKWIrCQq{0n+4-1S1TvM-Su=r{;Up#uPy)h6P2c<@W1d!%s*MYzhB>yYrB`& T67{D2hN38^DqHr-^y9w(#OBGM literal 0 HcmV?d00001 diff --git a/public/img/logo.png b/public/img/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..89b800d7316bad3bcdc02b19e97133b85a481131 GIT binary patch literal 7045 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 literal 0 HcmV?d00001 diff --git a/resources/js/Pages/Dashboard.vue b/resources/js/Pages/Dashboard.vue index 57c5ad3..605d48d 100644 --- a/resources/js/Pages/Dashboard.vue +++ b/resources/js/Pages/Dashboard.vue @@ -18,7 +18,7 @@
diff --git a/resources/js/Shared/MainMenu.vue b/resources/js/Shared/MainMenu.vue index 16e4625..d709004 100644 --- a/resources/js/Shared/MainMenu.vue +++ b/resources/js/Shared/MainMenu.vue @@ -42,7 +42,7 @@ Open user menu @@ -62,7 +62,9 @@ > {{ item.name }} @@ -209,8 +211,10 @@ {{ item.name }} @@ -270,7 +274,7 @@ export default { const userNavigation = [ {name: 'Your Profile', href: '#'}, {name: 'Settings', href: '#'}, - {name: 'Sign out', href: '#'}, + {name: 'Sign out', href: '/logout', method: 'post', as: 'button'}, ]; return { diff --git a/routes/web.php b/routes/web.php index 75e22cc..f4434c3 100644 --- a/routes/web.php +++ b/routes/web.php @@ -2,29 +2,19 @@ declare(strict_types=1); -use Illuminate\Http\Request; -use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Route; use Toby\Http\Controllers\GoogleController; +use Toby\Http\Controllers\LogoutController; Route::middleware("auth")->group(function (): void { Route::get("/", fn() => inertia("Dashboard"))->name("dashboard"); - Route::get("/logout", function (Request $request) { - Auth::logout(); - - $request->session()->invalidate(); - - $request->session()->regenerateToken(); - - - return redirect()->route("login"); - }); + Route::post("/logout", LogoutController::class); }); -Route::middleware("guest")->group(function(): void { +Route::middleware("guest")->group(function (): void { Route::get("login", fn() => inertia("Login"))->name("login"); Route::get("login/google/start", [GoogleController::class, "redirect"]) ->name("login.google.start"); Route::get("login/google/end", [GoogleController::class, "callback"]) ->name("login.google.end"); -}); \ No newline at end of file +}); diff --git a/tests/Feature/AuthenticationTest.php b/tests/Feature/AuthenticationTest.php new file mode 100644 index 0000000..f9431e7 --- /dev/null +++ b/tests/Feature/AuthenticationTest.php @@ -0,0 +1,43 @@ +get("/") + ->assertRedirect(); + } + + public function testUserIsNotRedirectedFromDashboard(): void + { + $user = User::factory()->create(); + + $this->actingAs($user) + ->get("/") + ->assertOk(); + } + + public function testUserCanLogout(): void + { + $user = User::factory()->create(); + + $this->actingAs($user); + + $this->assertAuthenticated(); + + $this->post("/logout") + ->assertRedirect(); + + $this->assertGuest(); + } +} diff --git a/tests/Feature/InertiaTest.php b/tests/Feature/InertiaTest.php index 555c618..617ba60 100644 --- a/tests/Feature/InertiaTest.php +++ b/tests/Feature/InertiaTest.php @@ -4,14 +4,21 @@ declare(strict_types=1); namespace Tests\Feature; +use Illuminate\Foundation\Testing\DatabaseMigrations; use Inertia\Testing\AssertableInertia as Assert; use Tests\TestCase; +use Toby\Models\User; class InertiaTest extends TestCase { + use DatabaseMigrations; + public function testInertia(): void { - $response = $this->get("/"); + $user = User::factory()->create(); + + $response = $this->actingAs($user) + ->get("/"); $response->assertOk(); $response->assertInertia(fn(Assert $page) => $page->component("Dashboard")); -- 2.52.0 From 8a23217345fd7b51dfc15b461bda8dcbfc6b5cf4 Mon Sep 17 00:00:00 2001 From: EwelinaLasowy Date: Thu, 13 Jan 2022 12:42:48 +0100 Subject: [PATCH 03/20] #2 - ui fixes to login page --- readme.md | 2 +- resources/js/Pages/Login.vue | 65 +++++++++++++++------- resources/js/Shared/Layout/GuestLayout.vue | 5 +- tailwind.config.js | 1 + 4 files changed, 49 insertions(+), 24 deletions(-) diff --git a/readme.md b/readme.md index 93d67ea..a45dbc4 100644 --- a/readme.md +++ b/readme.md @@ -62,7 +62,7 @@ If xDebug is installed, set environment variable **XDEBUG_MODE=off** to improve dcr php php vendor/bin/ecs check --fix dcr php composer ecsf dcr node npm run lint - dcr node rpm run lintf + dcr node npm run lintf ### xDebug diff --git a/resources/js/Pages/Login.vue b/resources/js/Pages/Login.vue index e47341f..9c8e6e3 100644 --- a/resources/js/Pages/Login.vue +++ b/resources/js/Pages/Login.vue @@ -1,17 +1,53 @@ \ No newline at end of file + diff --git a/resources/js/Shared/Layout/GuestLayout.vue b/resources/js/Shared/Layout/GuestLayout.vue index e28def1..65cd67e 100644 --- a/resources/js/Shared/Layout/GuestLayout.vue +++ b/resources/js/Shared/Layout/GuestLayout.vue @@ -1,5 +1,6 @@ + @@ -8,4 +9,4 @@ export default { name: 'GuestLayout', }; - + \ No newline at end of file diff --git a/tailwind.config.js b/tailwind.config.js index cda7b7e..d48c4d3 100644 --- a/tailwind.config.js +++ b/tailwind.config.js @@ -11,6 +11,7 @@ module.exports = { }, colors: { 'blumilk': { + '25': '#F4F8FD', '50': '#D5DFEE', '100': '#C7D4E9', '200': '#AABDDD', -- 2.52.0 From fb23be4850644c51082e226d0c343f8f160bc26a Mon Sep 17 00:00:00 2001 From: Adrian Hopek Date: Thu, 13 Jan 2022 12:51:47 +0100 Subject: [PATCH 04/20] #2 - fix --- resources/js/Pages/Login.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/js/Pages/Login.vue b/resources/js/Pages/Login.vue index 9c8e6e3..736b54d 100644 --- a/resources/js/Pages/Login.vue +++ b/resources/js/Pages/Login.vue @@ -22,7 +22,7 @@