From afa735f0b85365f100f5596a17253ee0481af3c6 Mon Sep 17 00:00:00 2001 From: Alexis Gousseau Date: Wed, 16 Aug 2023 10:36:05 +0200 Subject: [PATCH] split admin users and random users to customers - issue #10 --- README.md | 3 + app/Console/Commands/CreateAdmin.php | 57 - .../Commands/DeleteNotConfirmedUser.php | 10 +- app/Console/Commands/UserCreate.php | 228 +++ app/Enums/Users/RoleEnum.php | 34 + .../Controllers/Bo/Auth/LoginController.php | 54 + app/Http/Controllers/LoginController.php | 134 +- app/Http/Controllers/RegisterController.php | 6 +- .../Controllers/WinningProofController.php | 4 +- app/Http/Middleware/Authenticate.php | 22 +- app/Mail/VerifyEmail.php | 5 +- app/Models/Customer.php | 91 ++ app/Models/Participation.php | 2 +- app/Models/User.php | 69 +- app/Providers/RouteServiceProvider.php | 13 +- composer.json | 1 + composer.lock | 1314 ++++++++--------- config/auth.php | 23 +- .../2014_10_12_000000_create_users_table.php | 29 +- ...23_08_16_092101_create_customers_table.php | 46 + resources/views/bo/auth/login.blade.php | 67 + resources/views/bo/banned-ip/index.blade.php | 2 +- resources/views/bo/codes-ean/index.blade.php | 2 +- resources/views/bo/codes/index.blade.php | 2 +- resources/views/bo/codes/search.blade.php | 2 +- resources/views/bo/content/manage.blade.php | 2 +- resources/views/bo/dashboard/index.blade.php | 2 +- .../views/bo/faq-questions/index.blade.php | 2 +- resources/views/bo/faq-themes/index.blade.php | 2 +- resources/views/bo/gain-views/index.blade.php | 2 +- .../views/bo/instant-win/index.blade.php | 2 +- resources/views/bo/layout.blade.php | 59 + resources/views/bo/layouts/head.blade.php | 21 + resources/views/bo/layouts/nav-menu.blade.php | 39 + resources/views/bo/mails/job-failed.blade.php | 6 +- resources/views/bo/prizes/index.blade.php | 2 +- resources/views/bo/products/create.blade.php | 2 +- resources/views/bo/products/edit.blade.php | 2 +- resources/views/bo/products/index.blade.php | 2 +- resources/views/bo/ranges/create.blade.php | 2 +- resources/views/bo/ranges/edit.blade.php | 2 +- resources/views/bo/ranges/index.blade.php | 2 +- resources/views/bo/settings/manage.blade.php | 2 +- .../views/bo/winners-list/arcadia.blade.php | 2 +- .../views/bo/winners-list/index.blade.php | 2 +- resources/views/layouts/app.blade.php | 80 - resources/views/layouts/bo.blade.php | 125 -- ...age.blade.php => flash-messages.blade.php} | 0 routes/web-bo.php | 134 +- routes/web.php | 33 +- 50 files changed, 1566 insertions(+), 1183 deletions(-) delete mode 100644 app/Console/Commands/CreateAdmin.php create mode 100644 app/Console/Commands/UserCreate.php create mode 100644 app/Enums/Users/RoleEnum.php create mode 100644 app/Http/Controllers/Bo/Auth/LoginController.php create mode 100644 app/Models/Customer.php create mode 100644 database/migrations/2023_08_16_092101_create_customers_table.php create mode 100644 resources/views/bo/auth/login.blade.php create mode 100644 resources/views/bo/layout.blade.php create mode 100644 resources/views/bo/layouts/head.blade.php create mode 100644 resources/views/bo/layouts/nav-menu.blade.php delete mode 100644 resources/views/layouts/app.blade.php delete mode 100644 resources/views/layouts/bo.blade.php rename resources/views/modules/{flashMessage.blade.php => flash-messages.blade.php} (100%) diff --git a/README.md b/README.md index 68d37bd..569171c 100644 --- a/README.md +++ b/README.md @@ -16,6 +16,9 @@ php artisan create:admin php artisan users:deletenc à mettre 1 fois par jour ``` +## THEME +Choisir un thème dans le dépôt des thèmes `gen-game-web`, puis copier les fichiers et les coller/remplacer directement dans le projet. + ## TODO ``` - SH - Soucis de connexion / déconnexion quand le jeu est terminé et que l'adresse du jeu redirige vers une autre adresse : si on se déconnecte et qu'on revient sur le bo, on est toujours connecté diff --git a/app/Console/Commands/CreateAdmin.php b/app/Console/Commands/CreateAdmin.php deleted file mode 100644 index 89584dc..0000000 --- a/app/Console/Commands/CreateAdmin.php +++ /dev/null @@ -1,57 +0,0 @@ -ask('What is the firstname?', 'Equipe'); - $lastname = $this->ask('What is the lastname?', 'Web'); - $email = $this->ask('What is the email?', 'equipe.web@ldc.fr'); - $pwd = $this->secret('What is the password?'); - $role = $this->ask('Role ?', '1'); - - $user = new User(); - $user->firstname = $firstname; - $user->lastname = $lastname; - $user->birth_date = now(); - $user->email = $email; - $user->password = Hash::make($pwd); - $user->address = "-"; - $user->town = "Le Mans"; - $user->postal_code = "72000"; - $user->country = "France"; - $user->email_verify_token = "-"; - $user->email_verified = 1; - $user->role = $role; - $user->save(); - - $this->info('User created.'); - - return 0; - } -} diff --git a/app/Console/Commands/DeleteNotConfirmedUser.php b/app/Console/Commands/DeleteNotConfirmedUser.php index b009a3a..3d98790 100644 --- a/app/Console/Commands/DeleteNotConfirmedUser.php +++ b/app/Console/Commands/DeleteNotConfirmedUser.php @@ -2,7 +2,7 @@ namespace App\Console\Commands; -use App\Models\User; +use App\Models\Customer; use Carbon\Carbon; use Illuminate\Console\Command; @@ -25,15 +25,13 @@ class DeleteNotConfirmedUser extends Command /** * Execute the console command. * - * @return integer + * @return void */ - public function handle() + public function handle(): void { - $users = User::where([['email_verified', 0], ['created_at', '<', Carbon::now()->subDay()]])->get(); + $users = Customer::where([['email_verified', 0], ['created_at', '<', Carbon::now()->subDay()]])->get(); foreach ($users as $user) { $user->delete(); } - - return 0; } } diff --git a/app/Console/Commands/UserCreate.php b/app/Console/Commands/UserCreate.php new file mode 100644 index 0000000..ce74442 --- /dev/null +++ b/app/Console/Commands/UserCreate.php @@ -0,0 +1,228 @@ +firstname = null; + $this->addFirstname(); + + $this->lastname = null; + $this->addLastname(); + + $this->email = null; + $this->addEmail(); + + $this->password = null; + $this->addPassword(); + + $this->role = null; + $this->addRole(); + + $user = new User([ + 'firstname' => $this->firstname, + 'lastname' => $this->lastname, + 'email' => $this->email, + 'password' => $this->password, + 'role' => $this->role, + 'published' => true, + 'published_at' => Carbon::now(), + ]); + $user->saveOrFail(); + + $this->info('User created 👌'); + + return 0; + } + + /** + * Add a firstname to the user. + * + * @return void + */ + private function addFirstname(): void + { + while (is_null($this->firstname)) { + try { + $tmp = $this->ask('Type the wanted user firstname', 'Admin'); + $validator = Validator::make(['firstname' => $tmp], [ + 'firstname' => 'required|min:3|max:255' + ]); + $validator->validate(); + $this->firstname = $tmp; + } catch (ValidationException $e) { + $this->error(sprintf( + 'Please provide a valid firstname %s', + \implode(',', collect($e->errors())->flatten()->all()) + )); + continue; + } //end try + }; //end while + } + + /** + * Add a lastname to the user. + * + * @return void + */ + private function addLastname(): void + { + while (is_null($this->lastname)) { + try { + $tmp = $this->ask('Type the wanted user lastname', 'Saïtama'); + $validator = Validator::make(['lastname' => $tmp], [ + 'lastname' => 'required|min:3|max:255' + ]); + $validator->validate(); + $this->lastname = $tmp; + } catch (ValidationException $e) { + $this->error(sprintf( + 'Please provide a valid lastname %s', + \implode(',', collect($e->errors())->flatten()->all()) + )); + continue; + } //end try + }; //end while + } + + /** + * Add an email to the user. + * + * @return void + */ + private function addEmail(): void + { + while (is_null($this->email)) { + try { + $tmp = $this->ask('Type the wanted user email', 'equipe.web@ldc.fr'); + $validator = Validator::make(['email' => $tmp], [ + 'email' => 'required|unique:users,email|email:rfc,dns' + ]); + $validator->validate(); + $this->email = $tmp; + } catch (ValidationException $e) { + $this->error(sprintf( + 'Please provide a valid email %s', + \implode(',', collect($e->errors())->flatten()->all()) + )); + continue; + } //end try + }; //end while + } + + /** + * Add a password to the user. + * + * @return void + */ + private function addPassword(): void + { + while ( + ($this->password = $this->secret( + (!\is_null($this->password) ? 'Failed to confirm, ' : '') . 'Type the wanted user password' + )) !== $this->secret('Confirm the password') + ) { + continue; + }; //end while + } + + /** + * Add a role to the user. + * + * @return void + */ + private function addRole(): void + { + while (is_null($this->role)) { + try { + $tmp = $this->choice( + 'Select his role', + [RoleEnum::conceptor()->label, RoleEnum::admin()->label], + RoleEnum::admin()->label, + $maxAttempts = null, + $allowMultipleSelections = false + ); + if ($tmp === RoleEnum::conceptor()->label) { + $tmp = RoleEnum::conceptor(); + } + if ($tmp === RoleEnum::admin()->label) { + $tmp = RoleEnum::admin(); + } + $validator = Validator::make(['role' => $tmp], [ + 'role' => 'required' + ]); + $validator->validate(); + $this->role = $tmp; + } catch (ValidationException $e) { + $this->error(sprintf( + 'Please choose from the selection', + \implode(',', collect($e->errors())->flatten()->all()) + )); + continue; + } //end try + }; //end while + } +} diff --git a/app/Enums/Users/RoleEnum.php b/app/Enums/Users/RoleEnum.php new file mode 100644 index 0000000..64525de --- /dev/null +++ b/app/Enums/Users/RoleEnum.php @@ -0,0 +1,34 @@ + 1, + 'admin' => 2, + ]; + } + + /** + * @return array + */ + protected static function labels(): array + { + return [ + 'conceptor' => trans('Concepteur'), + 'admin' => trans('Administrator'), + ]; + } +} diff --git a/app/Http/Controllers/Bo/Auth/LoginController.php b/app/Http/Controllers/Bo/Auth/LoginController.php new file mode 100644 index 0000000..59b4a71 --- /dev/null +++ b/app/Http/Controllers/Bo/Auth/LoginController.php @@ -0,0 +1,54 @@ +middleware('guest:backend')->except('logout'); + } + + /** + * Get the guard to be used during authentication. + * + * @return \Illuminate\Contracts\Auth\StatefulGuard + */ + protected function guard(): StatefulGuard + { + return Auth::guard('backend'); + } + + /** + * Show the application's login form. + * + * @return \Illuminate\Contracts\View\View + */ + public function showLoginForm(): View + { + return view('bo.auth.login'); + } + + /** + * Where to redirect users after login. + * + * @return string + */ + protected function redirectTo(): string + { + return response()->redirectToIntended()->getTargetUrl(); + } +} diff --git a/app/Http/Controllers/LoginController.php b/app/Http/Controllers/LoginController.php index b10ee2b..a697b9c 100644 --- a/app/Http/Controllers/LoginController.php +++ b/app/Http/Controllers/LoginController.php @@ -4,18 +4,24 @@ namespace App\Http\Controllers; use App\Mail\PasswordReset; use App\Mail\VerifyEmail; +use App\Models\Customer; use App\Models\Settings; use Illuminate\Http\Request; use Illuminate\Support\Facades\Auth; use Illuminate\Support\Str; -use App\Models\User; use Illuminate\Support\Facades\Hash; use Illuminate\Support\Facades\Mail; class LoginController extends Controller { + /** @var \LDCCRM\ApiV1 $apiCrm */ private $apiCrm; + /** + * Create a new controller instance. + * + * @return void + */ public function __construct() { $this->middleware('guest')->except('logout'); @@ -23,7 +29,8 @@ class LoginController extends Controller } /** - * index + * Get the view of the index. + * * @return \Illuminate\View\View */ public function index() @@ -31,6 +38,12 @@ class LoginController extends Controller return view('front.basic.login'); } + /** + * Authenticate the user. + * + * @param \Illuminate\Http\Request $request + * @return \Illuminate\Http\RedirectResponse + */ public function authenticate(Request $request) { $request->validate([ @@ -40,44 +53,45 @@ class LoginController extends Controller $email = filter_var($request->email, FILTER_SANITIZE_EMAIL); $password = $request->password; - $remember = $request->remember !== null ? true : false; - - $userLocal = User::where('email', $email)->first(); + /** @var \App\Models\Customer $userLocal */ + $userLocal = Customer::where('email', $email)->first(); if ($userLocal) { if ($userLocal->email_verified === 1) { - if ($userLocal->role > 2) { - $connect = $this->apiCrm->loginCustomer($email, $password); + $connect = $this->apiCrm->loginCustomer($email, $password); - if ($connect->status === 'KO') { - if ($connect->code === 500) { - return back()->withInput($request->except("password")) - ->withErrors("La connexion est impossible pour le moment, veuillez réessayer plus tard."); - } else { - return back()->withInput($request->except("password")) - ->withErrors("Email ou mot de passe incorrect."); - } + if ($connect->status === 'KO') { + if ($connect->code === 500) { + return redirect()->back() + ->withInput($request->except("password")) + ->withErrors("La connexion est impossible pour le moment, veuillez réessayer plus tard."); + } else { + return redirect()->back() + ->withInput($request->except("password")) + ->withErrors("Email ou mot de passe incorrect."); } } } else { $userLocal->email_verify_token = Str::uuid(); $userLocal->save(); Mail::to($email)->send(new VerifyEmail($userLocal)); - return back()->withInput($request->except("password")) - ->withErrors("Votre compte existe mais votre email n'est pas confirmé, merci de vérifier vos emails."); + return redirect()->back() + ->withInput($request->except("password")) + ->withErrors("Votre compte existe mais votre email n'est pas confirmé, + merci de vérifier vos emails."); }//end if } else { $connect = $this->apiCrm->loginCustomer($email, $password); if ($connect->status === 'OK') { - $userLocal = User::create([ + /** @var \App\Models\Customer $userLocal */ + $userLocal = Customer::create([ 'crm_id' => $connect->user->crm_id, 'firstname' => $connect->user->firstname, 'lastname' => $connect->user->lastname, 'birth_date' => $connect->user->birth_date, 'email' => $email, - // TODO : MOTDEPASSE ???. - 'password' => Hash::make("MOTDEPASSE"), + 'password' => Hash::make($password), 'address' => $connect->user->address, 'address2' => $connect->user->address2, 'town' => $connect->user->city, @@ -88,14 +102,14 @@ class LoginController extends Controller } else { // Compte existant mais non activé. if ($connect->code === 116) { - $userLocal = User::create([ + /** @var \App\Models\Customer $userLocal */ + $userLocal = Customer::create([ 'crm_id' => $connect->user->crm_id, 'firstname' => $connect->user->firstname, 'lastname' => $connect->user->lastname, 'birth_date' => $connect->user->birth_date, 'email' => $email, - // TODO : MOTDEPASSE ???. - 'password' => Hash::make("MOTDEPASSE"), + 'password' => Hash::make($password), 'address' => $connect->user->address, 'address2' => $connect->user->address2, 'town' => $connect->user->city, @@ -106,37 +120,29 @@ class LoginController extends Controller $userLocal->email_verify_token = Str::uuid(); $userLocal->save(); Mail::to($email)->send(new VerifyEmail($userLocal)); - return back()->withInput($request->except("password")) - ->withErrors("Votre compte existe mais votre email n'est pas confirmé, merci de vérifier vos emails."); + return redirect()->back() + ->withInput($request->except("password")) + ->withErrors("Votre compte existe mais votre email n'est pas confirmé, + merci de vérifier vos emails."); } elseif ($connect->code === 500) { - return back()->withInput($request->except("password")) + return redirect()->back() + ->withInput($request->except("password")) ->withErrors("La connexion est impossible pour le moment, veuillez réessayer plus tard."); } else { - return back()->withInput($request->except("password")) - ->withErrors("Email ou mot de passe incorrect."); + return redirect()->back() + ->withInput($request->except("password")) + ->withErrors("Email ou mot de passe incorrect."); } //end if } //end if - }//end if + } //end if - // phpcs:ignore - // TODO : Modifier avec separation guard. - $tmpPwd = "MOTDEPASSE"; - if ($userLocal->role <= 2) { - $tmpPwd = $password; - } - - if (Auth::attempt(["email" => $email, "password" => $tmpPwd], $remember)) { - if ($userLocal->role <= 2) { - return redirect()->route('bo.dashboard'); - } - return redirect()->route('saisir-code'); - } else { - return back()->withInput($request->except('password'))->withErrors('Les identifiants entrés sont incorrects.'); - } + Auth::login($userLocal); + return redirect()->route('saisir-code'); } /** - * logout + * Logout. + * * @return Illuminate\Http\RedirectResponse */ public function logout() @@ -144,15 +150,17 @@ class LoginController extends Controller Auth::logout(); return redirect()->route('home'); } + /** - * confirm email + * Confirm email. + * * @param string $verifyToken * @return \Illuminate\View\View|Illuminate\Http\RedirectResponse */ public function confirmEmail(string $verifyToken) { $result = false; - $user = User::where('email_verify_token', $verifyToken)->first(); + $user = Customer::where('email_verify_token', $verifyToken)->first(); if (!$user) { return view('front.basic.confirm-email', compact('result')); } @@ -194,7 +202,7 @@ class LoginController extends Controller ->withErrors("Le lien de changement de votre mot de passe n'est plus valide, veuillez réessayer."); } $tokenValid = false; - $user = User::where('password_token', $token)->first(); + $user = Customer::where('password_token', $token)->first(); if (!$user) { return redirect()->route('forgot-password', compact('tokenValid')) ->withErrors('Le lien de changement du mot de passe est incorrect.'); @@ -206,12 +214,12 @@ class LoginController extends Controller public function mailPassword(Request $request) { $email = filter_var($request->email, FILTER_SANITIZE_STRING); - $user = User::where('email', $email)->first(); + $user = Customer::where('email', $email)->first(); if (!$user) { $userCrm = $this->apiCrm->getCustomerByEmail($email); if ($userCrm->status === 'OK') { - $user = User::create([ + $user = Customer::create([ 'crm_id' => $userCrm->user->crm_id, 'firstname' => $userCrm->user->firstname, 'lastname' => $userCrm->user->lastname, @@ -233,14 +241,17 @@ class LoginController extends Controller $user->save(); Mail::to($email)->send(new VerifyEmail($user)); return back()->withInput($request->except("password")) - ->withErrors("Votre compte existe mais votre email n'est pas confirmé, merci de vérifier vos emails."); + ->withErrors("Votre compte existe mais votre email n'est pas confirmé, + merci de vérifier vos emails."); } } else { if ($userCrm->code === 101) { - return back()->withInput($request->only('email')) + return redirect()->back() + ->withInput($request->only('email')) ->withErrors("Le mail que vous avez entré n'est pas enregistré dans nos services."); } else { - return back()->withErrors("Une erreur est survenue, veuillez réessayer plus tard."); + return redirect()->back() + ->withErrors("Une erreur est survenue, veuillez réessayer plus tard."); } } //end if }//end if @@ -251,7 +262,7 @@ class LoginController extends Controller $settings = app(Settings::class); Mail::to($email)->send(new PasswordReset($user, $settings)); return redirect()->route('login') - ->with('success', 'Un mail de réinitialisation de votre mot de passe vous a été envoyé(e).'); + ->with('success', 'Un mail de réinitialisation de votre mot de passe vous a été envoyé(e).'); } public function changePassword(Request $request) @@ -260,9 +271,10 @@ class LoginController extends Controller 'password' => 'required|min:8|confirmed', ]); - $user = User::where('password_token', filter_var($request->token, FILTER_SANITIZE_STRING))->first(); + $user = Customer::where('password_token', filter_var($request->token, FILTER_SANITIZE_STRING))->first(); if (!$user) { - return back()->withErrors('Le lien de changement de votre mot de passe est incorrect, veuillez réessayer.'); + return redirect()->back() + ->withErrors('Le lien de changement de votre mot de passe est incorrect, veuillez réessayer.'); } // TODO : Ajouter controle du contenu du mot de passe. @@ -274,13 +286,15 @@ class LoginController extends Controller $user->password_token = null; $user->save(); return redirect()->route('login') - ->with('success', 'Vous pouvez désormais vous connecter avec votre nouveau mot de passe.'); + ->with('success', 'Vous pouvez désormais vous connecter avec votre nouveau mot de passe.'); } else { if ($update->code === 123) { - return back() - ->withErrors("Il semblerait que vous ayez déjà utilisé ce mot de passe pour votre compte. Veuillez réessayer en changeant de mot de passe."); + return redirect()->back() + ->withErrors("Il semblerait que vous ayez déjà utilisé ce mot de passe pour votre compte. + Veuillez réessayer en changeant de mot de passe."); } else { - return back()->withErrors("Une erreur est survenue, veuillez réessayer plus tard."); + return redirect()->back() + ->withErrors("Une erreur est survenue, veuillez réessayer plus tard."); } } } diff --git a/app/Http/Controllers/RegisterController.php b/app/Http/Controllers/RegisterController.php index b28a8fc..1e9f0c3 100644 --- a/app/Http/Controllers/RegisterController.php +++ b/app/Http/Controllers/RegisterController.php @@ -3,8 +3,8 @@ namespace App\Http\Controllers; use App\Mail\VerifyEmail; +use App\Models\Customer; use App\Providers\RouteServiceProvider; -use App\Models\User; use Carbon\Carbon; use Illuminate\Foundation\Auth\RegistersUsers; use Illuminate\Http\Request; @@ -89,14 +89,14 @@ class RegisterController extends Controller $crmUser = $this->apiCrm->createCustomer($email, $password, $firstname, $lastname, $optin, $birthdate, null, $address, $address2, $town, $postcode, ucfirst($country)); if ($crmUser->status === 'OK') { - $user = User::create([ + $user = Customer::create([ 'crm_id' => $crmUser->user->crm_id, 'firstname' => $firstname, 'lastname' => $lastname, 'birth_date' => $birthdate, 'email' => $email, 'password' => Hash::make("MOTDEPASSE"), -// TODO : ??? + // TODO : ??? 'address' => $address, 'address2' => $address2, 'town' => $town, diff --git a/app/Http/Controllers/WinningProofController.php b/app/Http/Controllers/WinningProofController.php index 3adf997..ec300df 100644 --- a/app/Http/Controllers/WinningProofController.php +++ b/app/Http/Controllers/WinningProofController.php @@ -4,9 +4,9 @@ namespace App\Http\Controllers; use App\Mail\NotifAdmin; use App\Mail\WinningProof; +use App\Models\Customer; use App\Models\Participation; use App\Models\Settings; -use App\Models\User; use Illuminate\Http\Request; use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Log; @@ -61,7 +61,7 @@ class WinningProofController extends Controller $barcode = $request->barcode; // Mise à jour de l'utilisateur en local. - $user = User::find(Auth::user()->id); + $user = Customer::find(Auth::user()->id); $user->lastname = $lastname; $user->firstname = $firstname; $user->address = $address; diff --git a/app/Http/Middleware/Authenticate.php b/app/Http/Middleware/Authenticate.php index aeb9d80..c458585 100644 --- a/app/Http/Middleware/Authenticate.php +++ b/app/Http/Middleware/Authenticate.php @@ -3,6 +3,7 @@ namespace App\Http\Middleware; use Illuminate\Auth\Middleware\Authenticate as Middleware; +use Illuminate\Support\Facades\Session; class Authenticate extends Middleware { @@ -12,10 +13,27 @@ class Authenticate extends Middleware * @param \Illuminate\Http\Request $request * @return string|null */ - protected function redirectTo($request) + protected function redirectTo($request): ?string { - if (! $request->expectsJson()) { + $logins = [ + 'backend' => route('bo.login') + ]; + if (!$request->expectsJson()) { + // * Notify must login + Session::flash('warning', trans('Veuillez vous connecter pour continuer')); + + foreach ($request->route()->gatherMiddleware() as $middleware) { + if (\is_string($middleware) and strpos($middleware, 'auth:') !== false) { + $route = $logins[str_replace('auth:', '', $middleware)] ?? null; + if ($route) { + return $route; + } + } + } return route('login'); } + abort(401); + + return null; } } diff --git a/app/Mail/VerifyEmail.php b/app/Mail/VerifyEmail.php index 5448704..3c62360 100644 --- a/app/Mail/VerifyEmail.php +++ b/app/Mail/VerifyEmail.php @@ -2,6 +2,7 @@ namespace App\Mail; +use App\Models\Customer; use Illuminate\Bus\Queueable; use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Mail\Mailable; @@ -12,14 +13,16 @@ class VerifyEmail extends Mailable implements ShouldQueue use Queueable; use SerializesModels; + /** @var \App\Models\Customer $user */ protected $user; /** * Create a new message instance. * + * @param \App\Models\Customer $user * @return void */ - public function __construct($user) + public function __construct(Customer $user) { $this->user = $user; } diff --git a/app/Models/Customer.php b/app/Models/Customer.php new file mode 100644 index 0000000..d338ca5 --- /dev/null +++ b/app/Models/Customer.php @@ -0,0 +1,91 @@ + 'datetime', + ]; + + /** + * Perform any actions required after the model boots. + * + * @return void + */ + protected static function booted() + { + // * EVENT CLOSURES. + static::creating(function (self $model) { + static::updatePassword($model); + }); + static::updating(function (self $model) { + static::updatePassword($model); + }); + } + + /** + * Update password. + * + * @param self $model + * @return void + */ + private static function updatePassword(self $model): void + { + if (Hash::needsRehash($model->password)) { + $model->password = Hash::make($model->password); + } + } + + /** + * Has Many Participation relation + * + * @return \Illuminate\Database\Eloquent\Relations\HasMany + */ + public function participations() + { + return $this->hasMany(Participation::class, 'user_id'); + } +} diff --git a/app/Models/Participation.php b/app/Models/Participation.php index 6919406..074a1b2 100644 --- a/app/Models/Participation.php +++ b/app/Models/Participation.php @@ -13,7 +13,7 @@ class Participation extends Model */ public function user() { - return $this->belongsTo(User::class); + return $this->belongsTo(Customer::class); } /** diff --git a/app/Models/User.php b/app/Models/User.php index cc656bb..a4c8761 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -2,11 +2,15 @@ namespace App\Models; +use App\Enums\Users\RoleEnum; +use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Foundation\Auth\User as Authenticatable; use Illuminate\Notifications\Notifiable; +use Illuminate\Support\Facades\Hash; class User extends Authenticatable { + use HasFactory; use Notifiable; /** @@ -15,47 +19,76 @@ class User extends Authenticatable * @var array */ protected $fillable = [ - 'crm_id', - 'civility', 'firstname', 'lastname', - 'birth_date', 'email', 'password', - 'address', - 'address2', - 'town', - 'postal_code', - 'country', - 'email_verify_token', - 'email_verified' + 'role', + 'published', + 'published_at', + 'order', ]; /** - * The attributes that should be hidden for arrays. + * The attributes that should be hidden for serialization. * * @var array */ protected $hidden = [ - 'password', 'remember_token', + 'password', + 'remember_token', ]; /** - * The attributes that should be cast to native types. + * Cast the property to an enum. * * @var array */ - protected $casts = [ + protected $enumCasts = [ + 'role' => RoleEnum::class, 'email_verified_at' => 'datetime', ]; /** - * Has Many Participation relation + * Perform any actions required after the model boots. * - * @return \Illuminate\Database\Eloquent\Relations\HasMany + * @return void */ - public function participations() + protected static function booted() { - return $this->hasMany(Participation::class, 'user_id'); + // * EVENT CLOSURES. + static::creating(function (self $model) { + static::updatePassword($model); + static::setOrder($model); + }); + static::updating(function (self $model) { + static::updatePassword($model); + }); + } + + // * METHODS + + /** + * Set order after the last element of the list. + * + * @param self $model + * @return void + */ + private static function setOrder(self $model): void + { + $model->order = \intval(self::query()->max('order')) + 1; + } + + /** + * Update password. + * + * @param self $model + * @return void + */ + private static function updatePassword(self $model): void + { + if (Hash::needsRehash($model->password)) { + $model->password = Hash::make($model->password); + } } } diff --git a/app/Providers/RouteServiceProvider.php b/app/Providers/RouteServiceProvider.php index 2f541bd..27381dc 100644 --- a/app/Providers/RouteServiceProvider.php +++ b/app/Providers/RouteServiceProvider.php @@ -31,17 +31,16 @@ class RouteServiceProvider extends ServiceProvider public function boot() { $this->routes(function () { + Route::middleware('web') + ->namespace($this->namespace) + ->group(base_path('routes/web.php')); Route::middleware('web') - ->namespace($this->namespace) - ->group(base_path('routes/web.php')); + ->namespace($this->namespace) + ->group(base_path('routes/web-bo.php')); Route::middleware('web') - ->namespace($this->namespace) - ->group(base_path('routes/web-bo.php')); - - Route::middleware('web') - ->namespace($this->namespace) + ->namespace($this->namespace) ->group(base_path('routes/web-re7.php')); }); } diff --git a/composer.json b/composer.json index a1e13a2..f601b82 100644 --- a/composer.json +++ b/composer.json @@ -14,6 +14,7 @@ "fideloper/proxy": "^4.2", "fruitcake/laravel-cors": "^2.0", "guzzlehttp/guzzle": "^7.0.1", + "kwaadpepper/enum": "^2.1", "kwaadpepper/exception-handler": "^0.0.6", "kwaadpepper/serial-int-caster": "^1.0", "laravel/framework": "^8.0", diff --git a/composer.lock b/composer.lock index c4a6ed6..8a1e145 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": "bd553522eb8eb68c6c6662ee2c92d282", + "content-hash": "7b08999e5a20a4f175350f32648b750e", "packages": [ { "name": "asm89/stack-cors", @@ -124,28 +124,28 @@ }, { "name": "doctrine/inflector", - "version": "2.0.4", + "version": "2.0.8", "source": { "type": "git", "url": "https://github.com/doctrine/inflector.git", - "reference": "8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89" + "reference": "f9301a5b2fb1216b2b08f02ba04dc45423db6bff" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/inflector/zipball/8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89", - "reference": "8b7ff3e4b7de6b2c84da85637b59fd2880ecaa89", + "url": "https://api.github.com/repos/doctrine/inflector/zipball/f9301a5b2fb1216b2b08f02ba04dc45423db6bff", + "reference": "f9301a5b2fb1216b2b08f02ba04dc45423db6bff", "shasum": "" }, "require": { "php": "^7.2 || ^8.0" }, "require-dev": { - "doctrine/coding-standard": "^8.2", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpstan/phpstan-strict-rules": "^0.12", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0", - "vimeo/psalm": "^4.10" + "doctrine/coding-standard": "^11.0", + "phpstan/phpstan": "^1.8", + "phpstan/phpstan-phpunit": "^1.1", + "phpstan/phpstan-strict-rules": "^1.3", + "phpunit/phpunit": "^8.5 || ^9.5", + "vimeo/psalm": "^4.25 || ^5.4" }, "type": "library", "autoload": { @@ -195,7 +195,7 @@ ], "support": { "issues": "https://github.com/doctrine/inflector/issues", - "source": "https://github.com/doctrine/inflector/tree/2.0.4" + "source": "https://github.com/doctrine/inflector/tree/2.0.8" }, "funding": [ { @@ -211,7 +211,7 @@ "type": "tidelift" } ], - "time": "2021-10-22T20:16:43+00:00" + "time": "2023-06-16T13:40:37+00:00" }, { "name": "doctrine/lexer", @@ -291,16 +291,16 @@ }, { "name": "dragonmantank/cron-expression", - "version": "v3.3.1", + "version": "v3.3.3", "source": { "type": "git", "url": "https://github.com/dragonmantank/cron-expression.git", - "reference": "be85b3f05b46c39bbc0d95f6c071ddff669510fa" + "reference": "adfb1f505deb6384dc8b39804c5065dd3c8c8c0a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/be85b3f05b46c39bbc0d95f6c071ddff669510fa", - "reference": "be85b3f05b46c39bbc0d95f6c071ddff669510fa", + "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/adfb1f505deb6384dc8b39804c5065dd3c8c8c0a", + "reference": "adfb1f505deb6384dc8b39804c5065dd3c8c8c0a", "shasum": "" }, "require": { @@ -340,7 +340,7 @@ ], "support": { "issues": "https://github.com/dragonmantank/cron-expression/issues", - "source": "https://github.com/dragonmantank/cron-expression/tree/v3.3.1" + "source": "https://github.com/dragonmantank/cron-expression/tree/v3.3.3" }, "funding": [ { @@ -348,7 +348,7 @@ "type": "github" } ], - "time": "2022-01-18T15:43:28+00:00" + "time": "2023-08-10T19:36:49+00:00" }, { "name": "egulias/email-validator", @@ -553,28 +553,29 @@ "type": "github" } ], + "abandoned": true, "time": "2022-02-23T14:25:13+00:00" }, { "name": "graham-campbell/result-type", - "version": "v1.1.0", + "version": "v1.1.1", "source": { "type": "git", "url": "https://github.com/GrahamCampbell/Result-Type.git", - "reference": "a878d45c1914464426dc94da61c9e1d36ae262a8" + "reference": "672eff8cf1d6fe1ef09ca0f89c4b287d6a3eb831" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/a878d45c1914464426dc94da61c9e1d36ae262a8", - "reference": "a878d45c1914464426dc94da61c9e1d36ae262a8", + "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/672eff8cf1d6fe1ef09ca0f89c4b287d6a3eb831", + "reference": "672eff8cf1d6fe1ef09ca0f89c4b287d6a3eb831", "shasum": "" }, "require": { "php": "^7.2.5 || ^8.0", - "phpoption/phpoption": "^1.9" + "phpoption/phpoption": "^1.9.1" }, "require-dev": { - "phpunit/phpunit": "^8.5.28 || ^9.5.21" + "phpunit/phpunit": "^8.5.32 || ^9.6.3 || ^10.0.12" }, "type": "library", "autoload": { @@ -603,7 +604,7 @@ ], "support": { "issues": "https://github.com/GrahamCampbell/Result-Type/issues", - "source": "https://github.com/GrahamCampbell/Result-Type/tree/v1.1.0" + "source": "https://github.com/GrahamCampbell/Result-Type/tree/v1.1.1" }, "funding": [ { @@ -615,26 +616,26 @@ "type": "tidelift" } ], - "time": "2022-07-30T15:56:11+00:00" + "time": "2023-02-25T20:23:15+00:00" }, { "name": "guzzlehttp/guzzle", - "version": "7.4.5", + "version": "7.7.0", "source": { "type": "git", "url": "https://github.com/guzzle/guzzle.git", - "reference": "1dd98b0564cb3f6bd16ce683cb755f94c10fbd82" + "reference": "fb7566caccf22d74d1ab270de3551f72a58399f5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/1dd98b0564cb3f6bd16ce683cb755f94c10fbd82", - "reference": "1dd98b0564cb3f6bd16ce683cb755f94c10fbd82", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/fb7566caccf22d74d1ab270de3551f72a58399f5", + "reference": "fb7566caccf22d74d1ab270de3551f72a58399f5", "shasum": "" }, "require": { "ext-json": "*", - "guzzlehttp/promises": "^1.5", - "guzzlehttp/psr7": "^1.9 || ^2.4", + "guzzlehttp/promises": "^1.5.3 || ^2.0", + "guzzlehttp/psr7": "^1.9.1 || ^2.4.5", "php": "^7.2.5 || ^8.0", "psr/http-client": "^1.0", "symfony/deprecation-contracts": "^2.2 || ^3.0" @@ -643,10 +644,11 @@ "psr/http-client-implementation": "1.0" }, "require-dev": { - "bamarni/composer-bin-plugin": "^1.4.1", + "bamarni/composer-bin-plugin": "^1.8.1", "ext-curl": "*", - "php-http/client-integration-tests": "^3.0", - "phpunit/phpunit": "^8.5.5 || ^9.3.5", + "php-http/client-integration-tests": "dev-master#2c025848417c1135031fdf9c728ee53d0a7ceaee as 3.0.999", + "php-http/message-factory": "^1.1", + "phpunit/phpunit": "^8.5.29 || ^9.5.23", "psr/log": "^1.1 || ^2.0 || ^3.0" }, "suggest": { @@ -656,8 +658,9 @@ }, "type": "library", "extra": { - "branch-alias": { - "dev-master": "7.4-dev" + "bamarni-bin": { + "bin-links": true, + "forward-command": false } }, "autoload": { @@ -723,7 +726,7 @@ ], "support": { "issues": "https://github.com/guzzle/guzzle/issues", - "source": "https://github.com/guzzle/guzzle/tree/7.4.5" + "source": "https://github.com/guzzle/guzzle/tree/7.7.0" }, "funding": [ { @@ -739,38 +742,37 @@ "type": "tidelift" } ], - "time": "2022-06-20T22:16:13+00:00" + "time": "2023-05-21T14:04:53+00:00" }, { "name": "guzzlehttp/promises", - "version": "1.5.1", + "version": "2.0.1", "source": { "type": "git", "url": "https://github.com/guzzle/promises.git", - "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da" + "reference": "111166291a0f8130081195ac4556a5587d7f1b5d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/promises/zipball/fe752aedc9fd8fcca3fe7ad05d419d32998a06da", - "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da", + "url": "https://api.github.com/repos/guzzle/promises/zipball/111166291a0f8130081195ac4556a5587d7f1b5d", + "reference": "111166291a0f8130081195ac4556a5587d7f1b5d", "shasum": "" }, "require": { - "php": ">=5.5" + "php": "^7.2.5 || ^8.0" }, "require-dev": { - "symfony/phpunit-bridge": "^4.4 || ^5.1" + "bamarni/composer-bin-plugin": "^1.8.1", + "phpunit/phpunit": "^8.5.29 || ^9.5.23" }, "type": "library", "extra": { - "branch-alias": { - "dev-master": "1.5-dev" + "bamarni-bin": { + "bin-links": true, + "forward-command": false } }, "autoload": { - "files": [ - "src/functions_include.php" - ], "psr-4": { "GuzzleHttp\\Promise\\": "src/" } @@ -807,7 +809,7 @@ ], "support": { "issues": "https://github.com/guzzle/promises/issues", - "source": "https://github.com/guzzle/promises/tree/1.5.1" + "source": "https://github.com/guzzle/promises/tree/2.0.1" }, "funding": [ { @@ -823,26 +825,26 @@ "type": "tidelift" } ], - "time": "2021-10-22T20:56:57+00:00" + "time": "2023-08-03T15:11:55+00:00" }, { "name": "guzzlehttp/psr7", - "version": "2.4.0", + "version": "2.6.0", "source": { "type": "git", "url": "https://github.com/guzzle/psr7.git", - "reference": "13388f00956b1503577598873fffb5ae994b5737" + "reference": "8bd7c33a0734ae1c5d074360512beb716bef3f77" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/13388f00956b1503577598873fffb5ae994b5737", - "reference": "13388f00956b1503577598873fffb5ae994b5737", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/8bd7c33a0734ae1c5d074360512beb716bef3f77", + "reference": "8bd7c33a0734ae1c5d074360512beb716bef3f77", "shasum": "" }, "require": { "php": "^7.2.5 || ^8.0", "psr/http-factory": "^1.0", - "psr/http-message": "^1.0", + "psr/http-message": "^1.1 || ^2.0", "ralouphie/getallheaders": "^3.0" }, "provide": { @@ -850,17 +852,18 @@ "psr/http-message-implementation": "1.0" }, "require-dev": { - "bamarni/composer-bin-plugin": "^1.4.1", + "bamarni/composer-bin-plugin": "^1.8.1", "http-interop/http-factory-tests": "^0.9", - "phpunit/phpunit": "^8.5.8 || ^9.3.10" + "phpunit/phpunit": "^8.5.29 || ^9.5.23" }, "suggest": { "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" }, "type": "library", "extra": { - "branch-alias": { - "dev-master": "2.4-dev" + "bamarni-bin": { + "bin-links": true, + "forward-command": false } }, "autoload": { @@ -922,7 +925,7 @@ ], "support": { "issues": "https://github.com/guzzle/psr7/issues", - "source": "https://github.com/guzzle/psr7/tree/2.4.0" + "source": "https://github.com/guzzle/psr7/tree/2.6.0" }, "funding": [ { @@ -938,7 +941,67 @@ "type": "tidelift" } ], - "time": "2022-06-20T21:43:11+00:00" + "time": "2023-08-03T15:06:02+00:00" + }, + { + "name": "kwaadpepper/enum", + "version": "2.1.3", + "source": { + "type": "git", + "url": "https://github.com/Kwaadpepper/enum.git", + "reference": "cc695e6a07ee57a1220942581c303842e186b22f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Kwaadpepper/enum/zipball/cc695e6a07ee57a1220942581c303842e186b22f", + "reference": "cc695e6a07ee57a1220942581c303842e186b22f", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "orchestra/testbench": "^6", + "phpunit/php-code-coverage": "^9", + "phpunit/phpunit": "~9", + "slevomat/coding-standard": "^7", + "squizlabs/php_codesniffer": "^3" + }, + "type": "library", + "extra": { + "laravel": { + "providers": [ + "Kwaadpepper\\Enum\\EnumServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Kwaadpepper\\Enum\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jérémy Munsch", + "email": "github@jeremydev.ovh", + "homepage": "https://jeremydev.ovh" + } + ], + "description": "Enums to use for any project", + "homepage": "https://github.com/kwaadpepper/enum", + "keywords": [ + "enum", + "laravel" + ], + "support": { + "issues": "https://github.com/Kwaadpepper/enum/issues", + "source": "https://github.com/Kwaadpepper/enum/tree/2.1.3" + }, + "time": "2022-07-28T15:18:54+00:00" }, { "name": "kwaadpepper/exception-handler", @@ -1049,16 +1112,16 @@ }, { "name": "laravel/framework", - "version": "v8.83.23", + "version": "v8.83.27", "source": { "type": "git", "url": "https://github.com/laravel/framework.git", - "reference": "bdc707f8b9bcad289b24cd182d98ec7480ac4491" + "reference": "e1afe088b4ca613fb96dc57e6d8dbcb8cc2c6b49" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/bdc707f8b9bcad289b24cd182d98ec7480ac4491", - "reference": "bdc707f8b9bcad289b24cd182d98ec7480ac4491", + "url": "https://api.github.com/repos/laravel/framework/zipball/e1afe088b4ca613fb96dc57e6d8dbcb8cc2c6b49", + "reference": "e1afe088b4ca613fb96dc57e6d8dbcb8cc2c6b49", "shasum": "" }, "require": { @@ -1218,29 +1281,30 @@ "issues": "https://github.com/laravel/framework/issues", "source": "https://github.com/laravel/framework" }, - "time": "2022-07-26T13:30:00+00:00" + "time": "2022-12-08T15:28:55+00:00" }, { "name": "laravel/serializable-closure", - "version": "v1.2.0", + "version": "v1.3.1", "source": { "type": "git", "url": "https://github.com/laravel/serializable-closure.git", - "reference": "09f0e9fb61829f628205b7c94906c28740ff9540" + "reference": "e5a3057a5591e1cfe8183034b0203921abe2c902" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/09f0e9fb61829f628205b7c94906c28740ff9540", - "reference": "09f0e9fb61829f628205b7c94906c28740ff9540", + "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/e5a3057a5591e1cfe8183034b0203921abe2c902", + "reference": "e5a3057a5591e1cfe8183034b0203921abe2c902", "shasum": "" }, "require": { "php": "^7.3|^8.0" }, "require-dev": { - "pestphp/pest": "^1.18", - "phpstan/phpstan": "^0.12.98", - "symfony/var-dumper": "^5.3" + "nesbot/carbon": "^2.61", + "pestphp/pest": "^1.21.3", + "phpstan/phpstan": "^1.8.2", + "symfony/var-dumper": "^5.4.11" }, "type": "library", "extra": { @@ -1277,26 +1341,26 @@ "issues": "https://github.com/laravel/serializable-closure/issues", "source": "https://github.com/laravel/serializable-closure" }, - "time": "2022-05-16T17:09:47+00:00" + "time": "2023-07-14T13:56:28+00:00" }, { "name": "laravel/tinker", - "version": "v2.7.2", + "version": "v2.8.1", "source": { "type": "git", "url": "https://github.com/laravel/tinker.git", - "reference": "dff39b661e827dae6e092412f976658df82dbac5" + "reference": "04a2d3bd0d650c0764f70bf49d1ee39393e4eb10" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/tinker/zipball/dff39b661e827dae6e092412f976658df82dbac5", - "reference": "dff39b661e827dae6e092412f976658df82dbac5", + "url": "https://api.github.com/repos/laravel/tinker/zipball/04a2d3bd0d650c0764f70bf49d1ee39393e4eb10", + "reference": "04a2d3bd0d650c0764f70bf49d1ee39393e4eb10", "shasum": "" }, "require": { - "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", + "illuminate/console": "^6.0|^7.0|^8.0|^9.0|^10.0", + "illuminate/contracts": "^6.0|^7.0|^8.0|^9.0|^10.0", + "illuminate/support": "^6.0|^7.0|^8.0|^9.0|^10.0", "php": "^7.2.5|^8.0", "psy/psysh": "^0.10.4|^0.11.1", "symfony/var-dumper": "^4.3.4|^5.0|^6.0" @@ -1306,7 +1370,7 @@ "phpunit/phpunit": "^8.5.8|^9.3.3" }, "suggest": { - "illuminate/database": "The Illuminate Database package (^6.0|^7.0|^8.0|^9.0)." + "illuminate/database": "The Illuminate Database package (^6.0|^7.0|^8.0|^9.0|^10.0)." }, "type": "library", "extra": { @@ -1343,9 +1407,9 @@ ], "support": { "issues": "https://github.com/laravel/tinker/issues", - "source": "https://github.com/laravel/tinker/tree/v2.7.2" + "source": "https://github.com/laravel/tinker/tree/v2.8.1" }, - "time": "2022-03-23T12:38:24+00:00" + "time": "2023-02-15T16:40:09+00:00" }, { "name": "laravel/ui", @@ -1503,16 +1567,16 @@ }, { "name": "league/flysystem", - "version": "1.1.9", + "version": "1.1.10", "source": { "type": "git", "url": "https://github.com/thephpleague/flysystem.git", - "reference": "094defdb4a7001845300334e7c1ee2335925ef99" + "reference": "3239285c825c152bcc315fe0e87d6b55f5972ed1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/094defdb4a7001845300334e7c1ee2335925ef99", - "reference": "094defdb4a7001845300334e7c1ee2335925ef99", + "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/3239285c825c152bcc315fe0e87d6b55f5972ed1", + "reference": "3239285c825c152bcc315fe0e87d6b55f5972ed1", "shasum": "" }, "require": { @@ -1585,7 +1649,7 @@ ], "support": { "issues": "https://github.com/thephpleague/flysystem/issues", - "source": "https://github.com/thephpleague/flysystem/tree/1.1.9" + "source": "https://github.com/thephpleague/flysystem/tree/1.1.10" }, "funding": [ { @@ -1593,20 +1657,20 @@ "type": "other" } ], - "time": "2021-12-09T09:40:50+00:00" + "time": "2022-10-04T09:16:37+00:00" }, { "name": "league/mime-type-detection", - "version": "1.11.0", + "version": "1.12.0", "source": { "type": "git", "url": "https://github.com/thephpleague/mime-type-detection.git", - "reference": "ff6248ea87a9f116e78edd6002e39e5128a0d4dd" + "reference": "c7f2872fb273bf493811473dafc88d60ae829f48" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/ff6248ea87a9f116e78edd6002e39e5128a0d4dd", - "reference": "ff6248ea87a9f116e78edd6002e39e5128a0d4dd", + "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/c7f2872fb273bf493811473dafc88d60ae829f48", + "reference": "c7f2872fb273bf493811473dafc88d60ae829f48", "shasum": "" }, "require": { @@ -1637,7 +1701,7 @@ "description": "Mime-type detection for Flysystem", "support": { "issues": "https://github.com/thephpleague/mime-type-detection/issues", - "source": "https://github.com/thephpleague/mime-type-detection/tree/1.11.0" + "source": "https://github.com/thephpleague/mime-type-detection/tree/1.12.0" }, "funding": [ { @@ -1649,20 +1713,20 @@ "type": "tidelift" } ], - "time": "2022-04-17T13:12:02+00:00" + "time": "2023-08-03T07:14:11+00:00" }, { "name": "monolog/monolog", - "version": "2.8.0", + "version": "2.9.1", "source": { "type": "git", "url": "https://github.com/Seldaek/monolog.git", - "reference": "720488632c590286b88b80e62aa3d3d551ad4a50" + "reference": "f259e2b15fb95494c83f52d3caad003bbf5ffaa1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/720488632c590286b88b80e62aa3d3d551ad4a50", - "reference": "720488632c590286b88b80e62aa3d3d551ad4a50", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/f259e2b15fb95494c83f52d3caad003bbf5ffaa1", + "reference": "f259e2b15fb95494c83f52d3caad003bbf5ffaa1", "shasum": "" }, "require": { @@ -1677,7 +1741,7 @@ "doctrine/couchdb": "~1.0@dev", "elasticsearch/elasticsearch": "^7 || ^8", "ext-json": "*", - "graylog2/gelf-php": "^1.4.2", + "graylog2/gelf-php": "^1.4.2 || ^2@dev", "guzzlehttp/guzzle": "^7.4", "guzzlehttp/psr7": "^2.2", "mongodb/mongodb": "^1.8", @@ -1739,7 +1803,7 @@ ], "support": { "issues": "https://github.com/Seldaek/monolog/issues", - "source": "https://github.com/Seldaek/monolog/tree/2.8.0" + "source": "https://github.com/Seldaek/monolog/tree/2.9.1" }, "funding": [ { @@ -1751,31 +1815,35 @@ "type": "tidelift" } ], - "time": "2022-07-24T11:55:47+00:00" + "time": "2023-02-06T13:44:46+00:00" }, { "name": "nesbot/carbon", - "version": "2.61.0", + "version": "2.69.0", "source": { "type": "git", "url": "https://github.com/briannesbitt/Carbon.git", - "reference": "bdf4f4fe3a3eac4de84dbec0738082a862c68ba6" + "reference": "4308217830e4ca445583a37d1bf4aff4153fa81c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/bdf4f4fe3a3eac4de84dbec0738082a862c68ba6", - "reference": "bdf4f4fe3a3eac4de84dbec0738082a862c68ba6", + "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/4308217830e4ca445583a37d1bf4aff4153fa81c", + "reference": "4308217830e4ca445583a37d1bf4aff4153fa81c", "shasum": "" }, "require": { "ext-json": "*", "php": "^7.1.8 || ^8.0", + "psr/clock": "^1.0", "symfony/polyfill-mbstring": "^1.0", "symfony/polyfill-php80": "^1.16", "symfony/translation": "^3.4 || ^4.0 || ^5.0 || ^6.0" }, + "provide": { + "psr/clock-implementation": "1.0" + }, "require-dev": { - "doctrine/dbal": "^2.0 || ^3.0", + "doctrine/dbal": "^2.0 || ^3.1.4", "doctrine/orm": "^2.7", "friendsofphp/php-cs-fixer": "^3.0", "kylekatarnls/multi-tester": "^2.0", @@ -1853,20 +1921,20 @@ "type": "tidelift" } ], - "time": "2022-08-06T12:41:24+00:00" + "time": "2023-08-03T09:00:52+00:00" }, { "name": "nikic/php-parser", - "version": "v4.14.0", + "version": "v4.17.1", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "34bea19b6e03d8153165d8f30bba4c3be86184c1" + "reference": "a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/34bea19b6e03d8153165d8f30bba4c3be86184c1", - "reference": "34bea19b6e03d8153165d8f30bba4c3be86184c1", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d", + "reference": "a6303e50c90c355c7eeee2c4a8b27fe8dc8fef1d", "shasum": "" }, "require": { @@ -1907,9 +1975,9 @@ ], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v4.14.0" + "source": "https://github.com/nikic/PHP-Parser/tree/v4.17.1" }, - "time": "2022-05-31T20:59:12+00:00" + "time": "2023-08-13T19:53:39+00:00" }, { "name": "opis/closure", @@ -1978,24 +2046,24 @@ }, { "name": "phpoption/phpoption", - "version": "1.9.0", + "version": "1.9.1", "source": { "type": "git", "url": "https://github.com/schmittjoh/php-option.git", - "reference": "dc5ff11e274a90cc1c743f66c9ad700ce50db9ab" + "reference": "dd3a383e599f49777d8b628dadbb90cae435b87e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/dc5ff11e274a90cc1c743f66c9ad700ce50db9ab", - "reference": "dc5ff11e274a90cc1c743f66c9ad700ce50db9ab", + "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/dd3a383e599f49777d8b628dadbb90cae435b87e", + "reference": "dd3a383e599f49777d8b628dadbb90cae435b87e", "shasum": "" }, "require": { "php": "^7.2.5 || ^8.0" }, "require-dev": { - "bamarni/composer-bin-plugin": "^1.8", - "phpunit/phpunit": "^8.5.28 || ^9.5.21" + "bamarni/composer-bin-plugin": "^1.8.2", + "phpunit/phpunit": "^8.5.32 || ^9.6.3 || ^10.0.12" }, "type": "library", "extra": { @@ -2037,7 +2105,7 @@ ], "support": { "issues": "https://github.com/schmittjoh/php-option/issues", - "source": "https://github.com/schmittjoh/php-option/tree/1.9.0" + "source": "https://github.com/schmittjoh/php-option/tree/1.9.1" }, "funding": [ { @@ -2049,7 +2117,55 @@ "type": "tidelift" } ], - "time": "2022-07-30T15:51:26+00:00" + "time": "2023-02-25T19:38:58+00:00" + }, + { + "name": "psr/clock", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/clock.git", + "reference": "e41a24703d4560fd0acb709162f73b8adfc3aa0d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/clock/zipball/e41a24703d4560fd0acb709162f73b8adfc3aa0d", + "reference": "e41a24703d4560fd0acb709162f73b8adfc3aa0d", + "shasum": "" + }, + "require": { + "php": "^7.0 || ^8.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Psr\\Clock\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interface for reading the clock.", + "homepage": "https://github.com/php-fig/clock", + "keywords": [ + "clock", + "now", + "psr", + "psr-20", + "time" + ], + "support": { + "issues": "https://github.com/php-fig/clock/issues", + "source": "https://github.com/php-fig/clock/tree/1.0.0" + }, + "time": "2022-11-25T14:36:26+00:00" }, { "name": "psr/container", @@ -2151,21 +2267,21 @@ }, { "name": "psr/http-client", - "version": "1.0.1", + "version": "1.0.2", "source": { "type": "git", "url": "https://github.com/php-fig/http-client.git", - "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621" + "reference": "0955afe48220520692d2d09f7ab7e0f93ffd6a31" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-client/zipball/2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", - "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", + "url": "https://api.github.com/repos/php-fig/http-client/zipball/0955afe48220520692d2d09f7ab7e0f93ffd6a31", + "reference": "0955afe48220520692d2d09f7ab7e0f93ffd6a31", "shasum": "" }, "require": { "php": "^7.0 || ^8.0", - "psr/http-message": "^1.0" + "psr/http-message": "^1.0 || ^2.0" }, "type": "library", "extra": { @@ -2185,7 +2301,7 @@ "authors": [ { "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" + "homepage": "https://www.php-fig.org/" } ], "description": "Common interface for HTTP clients", @@ -2197,27 +2313,27 @@ "psr-18" ], "support": { - "source": "https://github.com/php-fig/http-client/tree/master" + "source": "https://github.com/php-fig/http-client/tree/1.0.2" }, - "time": "2020-06-29T06:28:15+00:00" + "time": "2023-04-10T20:12:12+00:00" }, { "name": "psr/http-factory", - "version": "1.0.1", + "version": "1.0.2", "source": { "type": "git", "url": "https://github.com/php-fig/http-factory.git", - "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be" + "reference": "e616d01114759c4c489f93b099585439f795fe35" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-factory/zipball/12ac7fcd07e5b077433f5f2bee95b3a771bf61be", - "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be", + "url": "https://api.github.com/repos/php-fig/http-factory/zipball/e616d01114759c4c489f93b099585439f795fe35", + "reference": "e616d01114759c4c489f93b099585439f795fe35", "shasum": "" }, "require": { "php": ">=7.0.0", - "psr/http-message": "^1.0" + "psr/http-message": "^1.0 || ^2.0" }, "type": "library", "extra": { @@ -2237,7 +2353,7 @@ "authors": [ { "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" + "homepage": "https://www.php-fig.org/" } ], "description": "Common interfaces for PSR-7 HTTP message factories", @@ -2252,31 +2368,31 @@ "response" ], "support": { - "source": "https://github.com/php-fig/http-factory/tree/master" + "source": "https://github.com/php-fig/http-factory/tree/1.0.2" }, - "time": "2019-04-30T12:38:16+00:00" + "time": "2023-04-10T20:10:41+00:00" }, { "name": "psr/http-message", - "version": "1.0.1", + "version": "2.0", "source": { "type": "git", "url": "https://github.com/php-fig/http-message.git", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" + "reference": "402d35bcb92c70c026d1a6a9883f06b2ead23d71" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", + "url": "https://api.github.com/repos/php-fig/http-message/zipball/402d35bcb92c70c026d1a6a9883f06b2ead23d71", + "reference": "402d35bcb92c70c026d1a6a9883f06b2ead23d71", "shasum": "" }, "require": { - "php": ">=5.3.0" + "php": "^7.2 || ^8.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "2.0.x-dev" } }, "autoload": { @@ -2291,7 +2407,7 @@ "authors": [ { "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" + "homepage": "https://www.php-fig.org/" } ], "description": "Common interface for HTTP messages", @@ -2305,9 +2421,9 @@ "response" ], "support": { - "source": "https://github.com/php-fig/http-message/tree/master" + "source": "https://github.com/php-fig/http-message/tree/2.0" }, - "time": "2016-08-06T14:39:51+00:00" + "time": "2023-04-04T09:54:51+00:00" }, { "name": "psr/log", @@ -2412,16 +2528,16 @@ }, { "name": "psy/psysh", - "version": "v0.11.8", + "version": "v0.11.20", "source": { "type": "git", "url": "https://github.com/bobthecow/psysh.git", - "reference": "f455acf3645262ae389b10e9beba0c358aa6994e" + "reference": "0fa27040553d1d280a67a4393194df5228afea5b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/bobthecow/psysh/zipball/f455acf3645262ae389b10e9beba0c358aa6994e", - "reference": "f455acf3645262ae389b10e9beba0c358aa6994e", + "url": "https://api.github.com/repos/bobthecow/psysh/zipball/0fa27040553d1d280a67a4393194df5228afea5b", + "reference": "0fa27040553d1d280a67a4393194df5228afea5b", "shasum": "" }, "require": { @@ -2482,9 +2598,9 @@ ], "support": { "issues": "https://github.com/bobthecow/psysh/issues", - "source": "https://github.com/bobthecow/psysh/tree/v0.11.8" + "source": "https://github.com/bobthecow/psysh/tree/v0.11.20" }, - "time": "2022-07-28T14:25:11+00:00" + "time": "2023-07-31T14:32:22+00:00" }, { "name": "ralouphie/getallheaders", @@ -2828,16 +2944,16 @@ }, { "name": "symfony/console", - "version": "v5.4.11", + "version": "v5.4.26", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "535846c7ee6bc4dd027ca0d93220601456734b10" + "reference": "b504a3d266ad2bb632f196c0936ef2af5ff6e273" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/535846c7ee6bc4dd027ca0d93220601456734b10", - "reference": "535846c7ee6bc4dd027ca0d93220601456734b10", + "url": "https://api.github.com/repos/symfony/console/zipball/b504a3d266ad2bb632f196c0936ef2af5ff6e273", + "reference": "b504a3d266ad2bb632f196c0936ef2af5ff6e273", "shasum": "" }, "require": { @@ -2902,12 +3018,12 @@ "homepage": "https://symfony.com", "keywords": [ "cli", - "command line", + "command-line", "console", "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v5.4.11" + "source": "https://github.com/symfony/console/tree/v5.4.26" }, "funding": [ { @@ -2923,20 +3039,20 @@ "type": "tidelift" } ], - "time": "2022-07-22T10:42:43+00:00" + "time": "2023-07-19T20:11:33+00:00" }, { "name": "symfony/css-selector", - "version": "v5.4.11", + "version": "v5.4.26", "source": { "type": "git", "url": "https://github.com/symfony/css-selector.git", - "reference": "c1681789f059ab756001052164726ae88512ae3d" + "reference": "0ad3f7e9a1ab492c5b4214cf22a9dc55dcf8600a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/c1681789f059ab756001052164726ae88512ae3d", - "reference": "c1681789f059ab756001052164726ae88512ae3d", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/0ad3f7e9a1ab492c5b4214cf22a9dc55dcf8600a", + "reference": "0ad3f7e9a1ab492c5b4214cf22a9dc55dcf8600a", "shasum": "" }, "require": { @@ -2973,7 +3089,7 @@ "description": "Converts CSS selectors to XPath expressions", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/css-selector/tree/v5.4.11" + "source": "https://github.com/symfony/css-selector/tree/v5.4.26" }, "funding": [ { @@ -2989,7 +3105,7 @@ "type": "tidelift" } ], - "time": "2022-06-27T16:58:25+00:00" + "time": "2023-07-07T06:10:25+00:00" }, { "name": "symfony/deprecation-contracts", @@ -3060,16 +3176,16 @@ }, { "name": "symfony/error-handler", - "version": "v5.4.11", + "version": "v5.4.26", "source": { "type": "git", "url": "https://github.com/symfony/error-handler.git", - "reference": "f75d17cb4769eb38cd5fccbda95cd80a054d35c8" + "reference": "b26719213a39c9ba57520cbc5e52bfcc5e8d92f9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/f75d17cb4769eb38cd5fccbda95cd80a054d35c8", - "reference": "f75d17cb4769eb38cd5fccbda95cd80a054d35c8", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/b26719213a39c9ba57520cbc5e52bfcc5e8d92f9", + "reference": "b26719213a39c9ba57520cbc5e52bfcc5e8d92f9", "shasum": "" }, "require": { @@ -3111,7 +3227,7 @@ "description": "Provides tools to manage errors and ease debugging PHP code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/error-handler/tree/v5.4.11" + "source": "https://github.com/symfony/error-handler/tree/v5.4.26" }, "funding": [ { @@ -3127,20 +3243,20 @@ "type": "tidelift" } ], - "time": "2022-07-29T07:37:50+00:00" + "time": "2023-07-16T16:48:57+00:00" }, { "name": "symfony/event-dispatcher", - "version": "v5.4.9", + "version": "v5.4.26", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "8e6ce1cc0279e3ff3c8ff0f43813bc88d21ca1bc" + "reference": "5dcc00e03413f05c1e7900090927bb7247cb0aac" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/8e6ce1cc0279e3ff3c8ff0f43813bc88d21ca1bc", - "reference": "8e6ce1cc0279e3ff3c8ff0f43813bc88d21ca1bc", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/5dcc00e03413f05c1e7900090927bb7247cb0aac", + "reference": "5dcc00e03413f05c1e7900090927bb7247cb0aac", "shasum": "" }, "require": { @@ -3196,7 +3312,7 @@ "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v5.4.9" + "source": "https://github.com/symfony/event-dispatcher/tree/v5.4.26" }, "funding": [ { @@ -3212,7 +3328,7 @@ "type": "tidelift" } ], - "time": "2022-05-05T16:45:39+00:00" + "time": "2023-07-06T06:34:20+00:00" }, { "name": "symfony/event-dispatcher-contracts", @@ -3295,16 +3411,16 @@ }, { "name": "symfony/finder", - "version": "v5.4.11", + "version": "v5.4.27", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "7872a66f57caffa2916a584db1aa7f12adc76f8c" + "reference": "ff4bce3c33451e7ec778070e45bd23f74214cd5d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/7872a66f57caffa2916a584db1aa7f12adc76f8c", - "reference": "7872a66f57caffa2916a584db1aa7f12adc76f8c", + "url": "https://api.github.com/repos/symfony/finder/zipball/ff4bce3c33451e7ec778070e45bd23f74214cd5d", + "reference": "ff4bce3c33451e7ec778070e45bd23f74214cd5d", "shasum": "" }, "require": { @@ -3338,7 +3454,7 @@ "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/finder/tree/v5.4.11" + "source": "https://github.com/symfony/finder/tree/v5.4.27" }, "funding": [ { @@ -3354,20 +3470,20 @@ "type": "tidelift" } ], - "time": "2022-07-29T07:37:50+00:00" + "time": "2023-07-31T08:02:31+00:00" }, { "name": "symfony/http-foundation", - "version": "v5.4.11", + "version": "v5.4.26", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "0a5868e0999e9d47859ba3d918548ff6943e6389" + "reference": "e7793151e99dc2ac1352ff3735d100fb3b3bfc08" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/0a5868e0999e9d47859ba3d918548ff6943e6389", - "reference": "0a5868e0999e9d47859ba3d918548ff6943e6389", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/e7793151e99dc2ac1352ff3735d100fb3b3bfc08", + "reference": "e7793151e99dc2ac1352ff3735d100fb3b3bfc08", "shasum": "" }, "require": { @@ -3379,8 +3495,11 @@ "require-dev": { "predis/predis": "~1.0", "symfony/cache": "^4.4|^5.0|^6.0", + "symfony/dependency-injection": "^5.4|^6.0", "symfony/expression-language": "^4.4|^5.0|^6.0", - "symfony/mime": "^4.4|^5.0|^6.0" + "symfony/http-kernel": "^5.4.12|^6.0.12|^6.1.4", + "symfony/mime": "^4.4|^5.0|^6.0", + "symfony/rate-limiter": "^5.2|^6.0" }, "suggest": { "symfony/mime": "To use the file extension guesser" @@ -3411,7 +3530,7 @@ "description": "Defines an object-oriented layer for the HTTP specification", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-foundation/tree/v5.4.11" + "source": "https://github.com/symfony/http-foundation/tree/v5.4.26" }, "funding": [ { @@ -3427,20 +3546,20 @@ "type": "tidelift" } ], - "time": "2022-07-20T13:00:38+00:00" + "time": "2023-07-21T11:30:15+00:00" }, { "name": "symfony/http-kernel", - "version": "v5.4.11", + "version": "v5.4.27", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "4fd590a2ef3f62560dbbf6cea511995dd77321ee" + "reference": "9f5624816c0b8d92f85666ac7ed2825a18fcd899" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/4fd590a2ef3f62560dbbf6cea511995dd77321ee", - "reference": "4fd590a2ef3f62560dbbf6cea511995dd77321ee", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/9f5624816c0b8d92f85666ac7ed2825a18fcd899", + "reference": "9f5624816c0b8d92f85666ac7ed2825a18fcd899", "shasum": "" }, "require": { @@ -3449,7 +3568,7 @@ "symfony/deprecation-contracts": "^2.1|^3", "symfony/error-handler": "^4.4|^5.0|^6.0", "symfony/event-dispatcher": "^5.0|^6.0", - "symfony/http-foundation": "^5.3.7|^6.0", + "symfony/http-foundation": "^5.4.21|^6.2.7", "symfony/polyfill-ctype": "^1.8", "symfony/polyfill-php73": "^1.9", "symfony/polyfill-php80": "^1.16" @@ -3523,7 +3642,7 @@ "description": "Provides a structured process for converting a Request into a Response", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-kernel/tree/v5.4.11" + "source": "https://github.com/symfony/http-kernel/tree/v5.4.27" }, "funding": [ { @@ -3539,20 +3658,20 @@ "type": "tidelift" } ], - "time": "2022-07-29T12:30:22+00:00" + "time": "2023-07-31T10:18:38+00:00" }, { "name": "symfony/mime", - "version": "v5.4.11", + "version": "v5.4.26", "source": { "type": "git", "url": "https://github.com/symfony/mime.git", - "reference": "3cd175cdcdb6db2e589e837dd46aff41027d9830" + "reference": "2ea06dfeee20000a319d8407cea1d47533d5a9d2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/3cd175cdcdb6db2e589e837dd46aff41027d9830", - "reference": "3cd175cdcdb6db2e589e837dd46aff41027d9830", + "url": "https://api.github.com/repos/symfony/mime/zipball/2ea06dfeee20000a319d8407cea1d47533d5a9d2", + "reference": "2ea06dfeee20000a319d8407cea1d47533d5a9d2", "shasum": "" }, "require": { @@ -3566,15 +3685,16 @@ "egulias/email-validator": "~3.0.0", "phpdocumentor/reflection-docblock": "<3.2.2", "phpdocumentor/type-resolver": "<1.4.0", - "symfony/mailer": "<4.4" + "symfony/mailer": "<4.4", + "symfony/serializer": "<5.4.26|>=6,<6.2.13|>=6.3,<6.3.2" }, "require-dev": { - "egulias/email-validator": "^2.1.10|^3.1", + "egulias/email-validator": "^2.1.10|^3.1|^4", "phpdocumentor/reflection-docblock": "^3.0|^4.0|^5.0", "symfony/dependency-injection": "^4.4|^5.0|^6.0", "symfony/property-access": "^4.4|^5.1|^6.0", "symfony/property-info": "^4.4|^5.1|^6.0", - "symfony/serializer": "^5.2|^6.0" + "symfony/serializer": "^5.4.26|~6.2.13|^6.3.2" }, "type": "library", "autoload": { @@ -3606,7 +3726,7 @@ "mime-type" ], "support": { - "source": "https://github.com/symfony/mime/tree/v5.4.11" + "source": "https://github.com/symfony/mime/tree/v5.4.26" }, "funding": [ { @@ -3622,20 +3742,20 @@ "type": "tidelift" } ], - "time": "2022-07-20T11:34:24+00:00" + "time": "2023-07-27T06:29:31+00:00" }, { "name": "symfony/polyfill-ctype", - "version": "v1.26.0", + "version": "v1.27.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "6fd1b9a79f6e3cf65f9e679b23af304cd9e010d4" + "reference": "5bbc823adecdae860bb64756d639ecfec17b050a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/6fd1b9a79f6e3cf65f9e679b23af304cd9e010d4", - "reference": "6fd1b9a79f6e3cf65f9e679b23af304cd9e010d4", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/5bbc823adecdae860bb64756d639ecfec17b050a", + "reference": "5bbc823adecdae860bb64756d639ecfec17b050a", "shasum": "" }, "require": { @@ -3650,7 +3770,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.26-dev" + "dev-main": "1.27-dev" }, "thanks": { "name": "symfony/polyfill", @@ -3688,7 +3808,7 @@ "portable" ], "support": { - "source": "https://github.com/symfony/polyfill-ctype/tree/v1.26.0" + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.27.0" }, "funding": [ { @@ -3704,20 +3824,20 @@ "type": "tidelift" } ], - "time": "2022-05-24T11:49:31+00:00" + "time": "2022-11-03T14:55:06+00:00" }, { "name": "symfony/polyfill-iconv", - "version": "v1.26.0", + "version": "v1.27.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-iconv.git", - "reference": "143f1881e655bebca1312722af8068de235ae5dc" + "reference": "927013f3aac555983a5059aada98e1907d842695" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-iconv/zipball/143f1881e655bebca1312722af8068de235ae5dc", - "reference": "143f1881e655bebca1312722af8068de235ae5dc", + "url": "https://api.github.com/repos/symfony/polyfill-iconv/zipball/927013f3aac555983a5059aada98e1907d842695", + "reference": "927013f3aac555983a5059aada98e1907d842695", "shasum": "" }, "require": { @@ -3732,7 +3852,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.26-dev" + "dev-main": "1.27-dev" }, "thanks": { "name": "symfony/polyfill", @@ -3771,7 +3891,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-iconv/tree/v1.26.0" + "source": "https://github.com/symfony/polyfill-iconv/tree/v1.27.0" }, "funding": [ { @@ -3787,20 +3907,20 @@ "type": "tidelift" } ], - "time": "2022-05-24T11:49:31+00:00" + "time": "2022-11-03T14:55:06+00:00" }, { "name": "symfony/polyfill-intl-grapheme", - "version": "v1.26.0", + "version": "v1.27.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "433d05519ce6990bf3530fba6957499d327395c2" + "reference": "511a08c03c1960e08a883f4cffcacd219b758354" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/433d05519ce6990bf3530fba6957499d327395c2", - "reference": "433d05519ce6990bf3530fba6957499d327395c2", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/511a08c03c1960e08a883f4cffcacd219b758354", + "reference": "511a08c03c1960e08a883f4cffcacd219b758354", "shasum": "" }, "require": { @@ -3812,7 +3932,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.26-dev" + "dev-main": "1.27-dev" }, "thanks": { "name": "symfony/polyfill", @@ -3852,7 +3972,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.26.0" + "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.27.0" }, "funding": [ { @@ -3868,20 +3988,20 @@ "type": "tidelift" } ], - "time": "2022-05-24T11:49:31+00:00" + "time": "2022-11-03T14:55:06+00:00" }, { "name": "symfony/polyfill-intl-idn", - "version": "v1.26.0", + "version": "v1.27.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-idn.git", - "reference": "59a8d271f00dd0e4c2e518104cc7963f655a1aa8" + "reference": "639084e360537a19f9ee352433b84ce831f3d2da" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/59a8d271f00dd0e4c2e518104cc7963f655a1aa8", - "reference": "59a8d271f00dd0e4c2e518104cc7963f655a1aa8", + "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/639084e360537a19f9ee352433b84ce831f3d2da", + "reference": "639084e360537a19f9ee352433b84ce831f3d2da", "shasum": "" }, "require": { @@ -3895,7 +4015,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.26-dev" + "dev-main": "1.27-dev" }, "thanks": { "name": "symfony/polyfill", @@ -3939,7 +4059,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.26.0" + "source": "https://github.com/symfony/polyfill-intl-idn/tree/v1.27.0" }, "funding": [ { @@ -3955,20 +4075,20 @@ "type": "tidelift" } ], - "time": "2022-05-24T11:49:31+00:00" + "time": "2022-11-03T14:55:06+00:00" }, { "name": "symfony/polyfill-intl-normalizer", - "version": "v1.26.0", + "version": "v1.27.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "219aa369ceff116e673852dce47c3a41794c14bd" + "reference": "19bd1e4fcd5b91116f14d8533c57831ed00571b6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/219aa369ceff116e673852dce47c3a41794c14bd", - "reference": "219aa369ceff116e673852dce47c3a41794c14bd", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/19bd1e4fcd5b91116f14d8533c57831ed00571b6", + "reference": "19bd1e4fcd5b91116f14d8533c57831ed00571b6", "shasum": "" }, "require": { @@ -3980,7 +4100,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.26-dev" + "dev-main": "1.27-dev" }, "thanks": { "name": "symfony/polyfill", @@ -4023,7 +4143,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.26.0" + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.27.0" }, "funding": [ { @@ -4039,20 +4159,20 @@ "type": "tidelift" } ], - "time": "2022-05-24T11:49:31+00:00" + "time": "2022-11-03T14:55:06+00:00" }, { "name": "symfony/polyfill-mbstring", - "version": "v1.26.0", + "version": "v1.27.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "9344f9cb97f3b19424af1a21a3b0e75b0a7d8d7e" + "reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/9344f9cb97f3b19424af1a21a3b0e75b0a7d8d7e", - "reference": "9344f9cb97f3b19424af1a21a3b0e75b0a7d8d7e", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/8ad114f6b39e2c98a8b0e3bd907732c207c2b534", + "reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534", "shasum": "" }, "require": { @@ -4067,7 +4187,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.26-dev" + "dev-main": "1.27-dev" }, "thanks": { "name": "symfony/polyfill", @@ -4106,7 +4226,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.26.0" + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.27.0" }, "funding": [ { @@ -4122,20 +4242,20 @@ "type": "tidelift" } ], - "time": "2022-05-24T11:49:31+00:00" + "time": "2022-11-03T14:55:06+00:00" }, { "name": "symfony/polyfill-php72", - "version": "v1.26.0", + "version": "v1.27.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php72.git", - "reference": "bf44a9fd41feaac72b074de600314a93e2ae78e2" + "reference": "869329b1e9894268a8a61dabb69153029b7a8c97" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/bf44a9fd41feaac72b074de600314a93e2ae78e2", - "reference": "bf44a9fd41feaac72b074de600314a93e2ae78e2", + "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/869329b1e9894268a8a61dabb69153029b7a8c97", + "reference": "869329b1e9894268a8a61dabb69153029b7a8c97", "shasum": "" }, "require": { @@ -4144,7 +4264,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.26-dev" + "dev-main": "1.27-dev" }, "thanks": { "name": "symfony/polyfill", @@ -4182,7 +4302,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php72/tree/v1.26.0" + "source": "https://github.com/symfony/polyfill-php72/tree/v1.27.0" }, "funding": [ { @@ -4198,20 +4318,20 @@ "type": "tidelift" } ], - "time": "2022-05-24T11:49:31+00:00" + "time": "2022-11-03T14:55:06+00:00" }, { "name": "symfony/polyfill-php73", - "version": "v1.26.0", + "version": "v1.27.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php73.git", - "reference": "e440d35fa0286f77fb45b79a03fedbeda9307e85" + "reference": "9e8ecb5f92152187c4799efd3c96b78ccab18ff9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/e440d35fa0286f77fb45b79a03fedbeda9307e85", - "reference": "e440d35fa0286f77fb45b79a03fedbeda9307e85", + "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/9e8ecb5f92152187c4799efd3c96b78ccab18ff9", + "reference": "9e8ecb5f92152187c4799efd3c96b78ccab18ff9", "shasum": "" }, "require": { @@ -4220,7 +4340,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.26-dev" + "dev-main": "1.27-dev" }, "thanks": { "name": "symfony/polyfill", @@ -4261,7 +4381,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php73/tree/v1.26.0" + "source": "https://github.com/symfony/polyfill-php73/tree/v1.27.0" }, "funding": [ { @@ -4277,20 +4397,20 @@ "type": "tidelift" } ], - "time": "2022-05-24T11:49:31+00:00" + "time": "2022-11-03T14:55:06+00:00" }, { "name": "symfony/polyfill-php80", - "version": "v1.26.0", + "version": "v1.27.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "cfa0ae98841b9e461207c13ab093d76b0fa7bace" + "reference": "7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/cfa0ae98841b9e461207c13ab093d76b0fa7bace", - "reference": "cfa0ae98841b9e461207c13ab093d76b0fa7bace", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936", + "reference": "7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936", "shasum": "" }, "require": { @@ -4299,7 +4419,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.26-dev" + "dev-main": "1.27-dev" }, "thanks": { "name": "symfony/polyfill", @@ -4344,7 +4464,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php80/tree/v1.26.0" + "source": "https://github.com/symfony/polyfill-php80/tree/v1.27.0" }, "funding": [ { @@ -4360,20 +4480,20 @@ "type": "tidelift" } ], - "time": "2022-05-10T07:21:04+00:00" + "time": "2022-11-03T14:55:06+00:00" }, { "name": "symfony/polyfill-php81", - "version": "v1.26.0", + "version": "v1.27.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php81.git", - "reference": "13f6d1271c663dc5ae9fb843a8f16521db7687a1" + "reference": "707403074c8ea6e2edaf8794b0157a0bfa52157a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/13f6d1271c663dc5ae9fb843a8f16521db7687a1", - "reference": "13f6d1271c663dc5ae9fb843a8f16521db7687a1", + "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/707403074c8ea6e2edaf8794b0157a0bfa52157a", + "reference": "707403074c8ea6e2edaf8794b0157a0bfa52157a", "shasum": "" }, "require": { @@ -4382,7 +4502,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.26-dev" + "dev-main": "1.27-dev" }, "thanks": { "name": "symfony/polyfill", @@ -4423,7 +4543,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php81/tree/v1.26.0" + "source": "https://github.com/symfony/polyfill-php81/tree/v1.27.0" }, "funding": [ { @@ -4439,20 +4559,20 @@ "type": "tidelift" } ], - "time": "2022-05-24T11:49:31+00:00" + "time": "2022-11-03T14:55:06+00:00" }, { "name": "symfony/process", - "version": "v5.4.11", + "version": "v5.4.26", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "6e75fe6874cbc7e4773d049616ab450eff537bf1" + "reference": "1a44dc377ec86a50fab40d066cd061e28a6b482f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/6e75fe6874cbc7e4773d049616ab450eff537bf1", - "reference": "6e75fe6874cbc7e4773d049616ab450eff537bf1", + "url": "https://api.github.com/repos/symfony/process/zipball/1a44dc377ec86a50fab40d066cd061e28a6b482f", + "reference": "1a44dc377ec86a50fab40d066cd061e28a6b482f", "shasum": "" }, "require": { @@ -4485,7 +4605,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v5.4.11" + "source": "https://github.com/symfony/process/tree/v5.4.26" }, "funding": [ { @@ -4501,20 +4621,20 @@ "type": "tidelift" } ], - "time": "2022-06-27T16:58:25+00:00" + "time": "2023-07-12T15:44:31+00:00" }, { "name": "symfony/routing", - "version": "v5.4.11", + "version": "v5.4.26", "source": { "type": "git", "url": "https://github.com/symfony/routing.git", - "reference": "3e01ccd9b2a3a4167ba2b3c53612762300300226" + "reference": "853fc7df96befc468692de0a48831b38f04d2cb2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/3e01ccd9b2a3a4167ba2b3c53612762300300226", - "reference": "3e01ccd9b2a3a4167ba2b3c53612762300300226", + "url": "https://api.github.com/repos/symfony/routing/zipball/853fc7df96befc468692de0a48831b38f04d2cb2", + "reference": "853fc7df96befc468692de0a48831b38f04d2cb2", "shasum": "" }, "require": { @@ -4529,7 +4649,7 @@ "symfony/yaml": "<4.4" }, "require-dev": { - "doctrine/annotations": "^1.12", + "doctrine/annotations": "^1.12|^2", "psr/log": "^1|^2|^3", "symfony/config": "^5.3|^6.0", "symfony/dependency-injection": "^4.4|^5.0|^6.0", @@ -4575,7 +4695,7 @@ "url" ], "support": { - "source": "https://github.com/symfony/routing/tree/v5.4.11" + "source": "https://github.com/symfony/routing/tree/v5.4.26" }, "funding": [ { @@ -4591,7 +4711,7 @@ "type": "tidelift" } ], - "time": "2022-07-20T13:00:38+00:00" + "time": "2023-07-24T13:28:37+00:00" }, { "name": "symfony/service-contracts", @@ -4678,16 +4798,16 @@ }, { "name": "symfony/string", - "version": "v5.4.11", + "version": "v5.4.26", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "5eb661e49ad389e4ae2b6e4df8d783a8a6548322" + "reference": "1181fe9270e373537475e826873b5867b863883c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/5eb661e49ad389e4ae2b6e4df8d783a8a6548322", - "reference": "5eb661e49ad389e4ae2b6e4df8d783a8a6548322", + "url": "https://api.github.com/repos/symfony/string/zipball/1181fe9270e373537475e826873b5867b863883c", + "reference": "1181fe9270e373537475e826873b5867b863883c", "shasum": "" }, "require": { @@ -4744,7 +4864,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v5.4.11" + "source": "https://github.com/symfony/string/tree/v5.4.26" }, "funding": [ { @@ -4760,20 +4880,20 @@ "type": "tidelift" } ], - "time": "2022-07-24T16:15:25+00:00" + "time": "2023-06-28T12:46:07+00:00" }, { "name": "symfony/translation", - "version": "v5.4.11", + "version": "v5.4.24", "source": { "type": "git", "url": "https://github.com/symfony/translation.git", - "reference": "7a1a8f6bbff269f434a83343a0a5d36a4f8cfa21" + "reference": "de237e59c5833422342be67402d487fbf50334ff" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/7a1a8f6bbff269f434a83343a0a5d36a4f8cfa21", - "reference": "7a1a8f6bbff269f434a83343a0a5d36a4f8cfa21", + "url": "https://api.github.com/repos/symfony/translation/zipball/de237e59c5833422342be67402d487fbf50334ff", + "reference": "de237e59c5833422342be67402d487fbf50334ff", "shasum": "" }, "require": { @@ -4841,7 +4961,7 @@ "description": "Provides tools to internationalize your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/translation/tree/v5.4.11" + "source": "https://github.com/symfony/translation/tree/v5.4.24" }, "funding": [ { @@ -4857,7 +4977,7 @@ "type": "tidelift" } ], - "time": "2022-07-20T13:00:38+00:00" + "time": "2023-05-19T12:34:17+00:00" }, { "name": "symfony/translation-contracts", @@ -4939,16 +5059,16 @@ }, { "name": "symfony/var-dumper", - "version": "v5.4.11", + "version": "v5.4.26", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "b8f306d7b8ef34fb3db3305be97ba8e088fb4861" + "reference": "e706c99b4a6f4d9383b52b80dd8c74880501e314" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/b8f306d7b8ef34fb3db3305be97ba8e088fb4861", - "reference": "b8f306d7b8ef34fb3db3305be97ba8e088fb4861", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/e706c99b4a6f4d9383b52b80dd8c74880501e314", + "reference": "e706c99b4a6f4d9383b52b80dd8c74880501e314", "shasum": "" }, "require": { @@ -4957,12 +5077,12 @@ "symfony/polyfill-php80": "^1.16" }, "conflict": { - "phpunit/phpunit": "<5.4.3", "symfony/console": "<4.4" }, "require-dev": { "ext-iconv": "*", "symfony/console": "^4.4|^5.0|^6.0", + "symfony/http-kernel": "^4.4|^5.0|^6.0", "symfony/process": "^4.4|^5.0|^6.0", "symfony/uid": "^5.1|^6.0", "twig/twig": "^2.13|^3.0.4" @@ -5008,7 +5128,7 @@ "dump" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v5.4.11" + "source": "https://github.com/symfony/var-dumper/tree/v5.4.26" }, "funding": [ { @@ -5024,20 +5144,20 @@ "type": "tidelift" } ], - "time": "2022-07-20T13:00:38+00:00" + "time": "2023-07-13T07:32:46+00:00" }, { "name": "tijsverkoyen/css-to-inline-styles", - "version": "2.2.4", + "version": "2.2.6", "source": { "type": "git", "url": "https://github.com/tijsverkoyen/CssToInlineStyles.git", - "reference": "da444caae6aca7a19c0c140f68c6182e337d5b1c" + "reference": "c42125b83a4fa63b187fdf29f9c93cb7733da30c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/da444caae6aca7a19c0c140f68c6182e337d5b1c", - "reference": "da444caae6aca7a19c0c140f68c6182e337d5b1c", + "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/c42125b83a4fa63b187fdf29f9c93cb7733da30c", + "reference": "c42125b83a4fa63b187fdf29f9c93cb7733da30c", "shasum": "" }, "require": { @@ -5075,22 +5195,22 @@ "homepage": "https://github.com/tijsverkoyen/CssToInlineStyles", "support": { "issues": "https://github.com/tijsverkoyen/CssToInlineStyles/issues", - "source": "https://github.com/tijsverkoyen/CssToInlineStyles/tree/2.2.4" + "source": "https://github.com/tijsverkoyen/CssToInlineStyles/tree/2.2.6" }, - "time": "2021-12-08T09:12:39+00:00" + "time": "2023-01-03T09:29:04+00:00" }, { "name": "vlucas/phpdotenv", - "version": "v5.4.1", + "version": "v5.5.0", "source": { "type": "git", "url": "https://github.com/vlucas/phpdotenv.git", - "reference": "264dce589e7ce37a7ba99cb901eed8249fbec92f" + "reference": "1a7ea2afc49c3ee6d87061f5a233e3a035d0eae7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/264dce589e7ce37a7ba99cb901eed8249fbec92f", - "reference": "264dce589e7ce37a7ba99cb901eed8249fbec92f", + "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/1a7ea2afc49c3ee6d87061f5a233e3a035d0eae7", + "reference": "1a7ea2afc49c3ee6d87061f5a233e3a035d0eae7", "shasum": "" }, "require": { @@ -5105,15 +5225,19 @@ "require-dev": { "bamarni/composer-bin-plugin": "^1.4.1", "ext-filter": "*", - "phpunit/phpunit": "^7.5.20 || ^8.5.21 || ^9.5.10" + "phpunit/phpunit": "^7.5.20 || ^8.5.30 || ^9.5.25" }, "suggest": { "ext-filter": "Required to use the boolean validator." }, "type": "library", "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": true + }, "branch-alias": { - "dev-master": "5.4-dev" + "dev-master": "5.5-dev" } }, "autoload": { @@ -5145,7 +5269,7 @@ ], "support": { "issues": "https://github.com/vlucas/phpdotenv/issues", - "source": "https://github.com/vlucas/phpdotenv/tree/v5.4.1" + "source": "https://github.com/vlucas/phpdotenv/tree/v5.5.0" }, "funding": [ { @@ -5157,7 +5281,7 @@ "type": "tidelift" } ], - "time": "2021-12-12T23:22:04+00:00" + "time": "2022-10-16T01:01:54+00:00" }, { "name": "voku/portable-ascii", @@ -5572,25 +5696,29 @@ }, { "name": "doctrine/deprecations", - "version": "v1.0.0", + "version": "v1.1.1", "source": { "type": "git", "url": "https://github.com/doctrine/deprecations.git", - "reference": "0e2a4f1f8cdfc7a92ec3b01c9334898c806b30de" + "reference": "612a3ee5ab0d5dd97b7cf3874a6efe24325efac3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/deprecations/zipball/0e2a4f1f8cdfc7a92ec3b01c9334898c806b30de", - "reference": "0e2a4f1f8cdfc7a92ec3b01c9334898c806b30de", + "url": "https://api.github.com/repos/doctrine/deprecations/zipball/612a3ee5ab0d5dd97b7cf3874a6efe24325efac3", + "reference": "612a3ee5ab0d5dd97b7cf3874a6efe24325efac3", "shasum": "" }, "require": { - "php": "^7.1|^8.0" + "php": "^7.1 || ^8.0" }, "require-dev": { "doctrine/coding-standard": "^9", - "phpunit/phpunit": "^7.5|^8.5|^9.5", - "psr/log": "^1|^2|^3" + "phpstan/phpstan": "1.4.10 || 1.10.15", + "phpstan/phpstan-phpunit": "^1.0", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", + "psalm/plugin-phpunit": "0.18.4", + "psr/log": "^1 || ^2 || ^3", + "vimeo/psalm": "4.30.0 || 5.12.0" }, "suggest": { "psr/log": "Allows logging deprecations via PSR-3 logger implementation" @@ -5609,40 +5737,41 @@ "homepage": "https://www.doctrine-project.org/", "support": { "issues": "https://github.com/doctrine/deprecations/issues", - "source": "https://github.com/doctrine/deprecations/tree/v1.0.0" + "source": "https://github.com/doctrine/deprecations/tree/v1.1.1" }, - "time": "2022-05-02T15:47:09+00:00" + "time": "2023-06-03T09:27:29+00:00" }, { "name": "doctrine/event-manager", - "version": "1.1.2", + "version": "1.2.0", "source": { "type": "git", "url": "https://github.com/doctrine/event-manager.git", - "reference": "eb2ecf80e3093e8f3c2769ac838e27d8ede8e683" + "reference": "95aa4cb529f1e96576f3fda9f5705ada4056a520" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/event-manager/zipball/eb2ecf80e3093e8f3c2769ac838e27d8ede8e683", - "reference": "eb2ecf80e3093e8f3c2769ac838e27d8ede8e683", + "url": "https://api.github.com/repos/doctrine/event-manager/zipball/95aa4cb529f1e96576f3fda9f5705ada4056a520", + "reference": "95aa4cb529f1e96576f3fda9f5705ada4056a520", "shasum": "" }, "require": { + "doctrine/deprecations": "^0.5.3 || ^1", "php": "^7.1 || ^8.0" }, "conflict": { "doctrine/common": "<2.9" }, "require-dev": { - "doctrine/coding-standard": "^9", - "phpstan/phpstan": "~1.4.10 || ^1.5.4", + "doctrine/coding-standard": "^9 || ^10", + "phpstan/phpstan": "~1.4.10 || ^1.8.8", "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "vimeo/psalm": "^4.22" + "vimeo/psalm": "^4.24" }, "type": "library", "autoload": { "psr-4": { - "Doctrine\\Common\\": "lib/Doctrine/Common" + "Doctrine\\Common\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -5686,7 +5815,7 @@ ], "support": { "issues": "https://github.com/doctrine/event-manager/issues", - "source": "https://github.com/doctrine/event-manager/tree/1.1.2" + "source": "https://github.com/doctrine/event-manager/tree/1.2.0" }, "funding": [ { @@ -5702,34 +5831,34 @@ "type": "tidelift" } ], - "time": "2022-07-27T22:18:11+00:00" + "time": "2022-10-12T20:51:15+00:00" }, { "name": "doctrine/instantiator", - "version": "1.4.1", + "version": "1.5.0", "source": { "type": "git", "url": "https://github.com/doctrine/instantiator.git", - "reference": "10dcfce151b967d20fde1b34ae6640712c3891bc" + "reference": "0a0fa9780f5d4e507415a065172d26a98d02047b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/10dcfce151b967d20fde1b34ae6640712c3891bc", - "reference": "10dcfce151b967d20fde1b34ae6640712c3891bc", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/0a0fa9780f5d4e507415a065172d26a98d02047b", + "reference": "0a0fa9780f5d4e507415a065172d26a98d02047b", "shasum": "" }, "require": { "php": "^7.1 || ^8.0" }, "require-dev": { - "doctrine/coding-standard": "^9", + "doctrine/coding-standard": "^9 || ^11", "ext-pdo": "*", "ext-phar": "*", "phpbench/phpbench": "^0.16 || ^1", "phpstan/phpstan": "^1.4", "phpstan/phpstan-phpunit": "^1", "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "vimeo/psalm": "^4.22" + "vimeo/psalm": "^4.30 || ^5.4" }, "type": "library", "autoload": { @@ -5756,7 +5885,7 @@ ], "support": { "issues": "https://github.com/doctrine/instantiator/issues", - "source": "https://github.com/doctrine/instantiator/tree/1.4.1" + "source": "https://github.com/doctrine/instantiator/tree/1.5.0" }, "funding": [ { @@ -5772,7 +5901,7 @@ "type": "tidelift" } ], - "time": "2022-03-03T08:28:38+00:00" + "time": "2022-12-30T00:15:36+00:00" }, { "name": "facade/flare-client-php", @@ -5841,16 +5970,16 @@ }, { "name": "facade/ignition", - "version": "2.17.6", + "version": "2.17.7", "source": { "type": "git", "url": "https://github.com/facade/ignition.git", - "reference": "6acd82e986a2ecee89e2e68adfc30a1936d1ab7c" + "reference": "b4f5955825bb4b74cba0f94001761c46335c33e9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/facade/ignition/zipball/6acd82e986a2ecee89e2e68adfc30a1936d1ab7c", - "reference": "6acd82e986a2ecee89e2e68adfc30a1936d1ab7c", + "url": "https://api.github.com/repos/facade/ignition/zipball/b4f5955825bb4b74cba0f94001761c46335c33e9", + "reference": "b4f5955825bb4b74cba0f94001761c46335c33e9", "shasum": "" }, "require": { @@ -5915,7 +6044,7 @@ "issues": "https://github.com/facade/ignition/issues", "source": "https://github.com/facade/ignition" }, - "time": "2022-06-30T18:26:59+00:00" + "time": "2023-01-26T12:34:59+00:00" }, { "name": "facade/ignition-contracts", @@ -5972,16 +6101,16 @@ }, { "name": "filp/whoops", - "version": "2.14.5", + "version": "2.15.3", "source": { "type": "git", "url": "https://github.com/filp/whoops.git", - "reference": "a63e5e8f26ebbebf8ed3c5c691637325512eb0dc" + "reference": "c83e88a30524f9360b11f585f71e6b17313b7187" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/filp/whoops/zipball/a63e5e8f26ebbebf8ed3c5c691637325512eb0dc", - "reference": "a63e5e8f26ebbebf8ed3c5c691637325512eb0dc", + "url": "https://api.github.com/repos/filp/whoops/zipball/c83e88a30524f9360b11f585f71e6b17313b7187", + "reference": "c83e88a30524f9360b11f585f71e6b17313b7187", "shasum": "" }, "require": { @@ -6031,7 +6160,7 @@ ], "support": { "issues": "https://github.com/filp/whoops/issues", - "source": "https://github.com/filp/whoops/tree/2.14.5" + "source": "https://github.com/filp/whoops/tree/2.15.3" }, "funding": [ { @@ -6039,7 +6168,7 @@ "type": "github" } ], - "time": "2022-01-07T12:00:00+00:00" + "time": "2023-07-13T12:00:00+00:00" }, { "name": "fzaninotto/faker", @@ -6149,38 +6278,40 @@ }, { "name": "mockery/mockery", - "version": "1.5.0", + "version": "1.6.6", "source": { "type": "git", "url": "https://github.com/mockery/mockery.git", - "reference": "c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac" + "reference": "b8e0bb7d8c604046539c1115994632c74dcb361e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/mockery/mockery/zipball/c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac", - "reference": "c10a5f6e06fc2470ab1822fa13fa2a7380f8fbac", + "url": "https://api.github.com/repos/mockery/mockery/zipball/b8e0bb7d8c604046539c1115994632c74dcb361e", + "reference": "b8e0bb7d8c604046539c1115994632c74dcb361e", "shasum": "" }, "require": { "hamcrest/hamcrest-php": "^2.0.1", "lib-pcre": ">=7.0", - "php": "^7.3 || ^8.0" + "php": ">=7.3" }, "conflict": { "phpunit/phpunit": "<8.0" }, "require-dev": { - "phpunit/phpunit": "^8.5 || ^9.3" + "phpunit/phpunit": "^8.5 || ^9.6.10", + "psalm/plugin-phpunit": "^0.18.4", + "symplify/easy-coding-standard": "^11.5.0", + "vimeo/psalm": "^4.30" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.4.x-dev" - } - }, "autoload": { - "psr-0": { - "Mockery": "library/" + "files": [ + "library/helpers.php", + "library/Mockery.php" + ], + "psr-4": { + "Mockery\\": "library/Mockery" } }, "notification-url": "https://packagist.org/downloads/", @@ -6191,12 +6322,20 @@ { "name": "Pádraic Brady", "email": "padraic.brady@gmail.com", - "homepage": "http://blog.astrumfutura.com" + "homepage": "https://github.com/padraic", + "role": "Author" }, { "name": "Dave Marshall", "email": "dave.marshall@atstsolutions.co.uk", - "homepage": "http://davedevelopment.co.uk" + "homepage": "https://davedevelopment.co.uk", + "role": "Developer" + }, + { + "name": "Nathanael Esayeas", + "email": "nathanael.esayeas@protonmail.com", + "homepage": "https://github.com/ghostwriter", + "role": "Lead Developer" } ], "description": "Mockery is a simple yet flexible PHP mock object framework", @@ -6214,23 +6353,26 @@ "testing" ], "support": { + "docs": "https://docs.mockery.io/", "issues": "https://github.com/mockery/mockery/issues", - "source": "https://github.com/mockery/mockery/tree/1.5.0" + "rss": "https://github.com/mockery/mockery/releases.atom", + "security": "https://github.com/mockery/mockery/security/advisories", + "source": "https://github.com/mockery/mockery" }, - "time": "2022-01-20T13:18:17+00:00" + "time": "2023-08-09T00:03:52+00:00" }, { "name": "myclabs/deep-copy", - "version": "1.11.0", + "version": "1.11.1", "source": { "type": "git", "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "14daed4296fae74d9e3201d2c4925d1acb7aa614" + "reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/14daed4296fae74d9e3201d2c4925d1acb7aa614", - "reference": "14daed4296fae74d9e3201d2c4925d1acb7aa614", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/7284c22080590fb39f2ffa3e9057f10a4ddd0e0c", + "reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c", "shasum": "" }, "require": { @@ -6268,7 +6410,7 @@ ], "support": { "issues": "https://github.com/myclabs/DeepCopy/issues", - "source": "https://github.com/myclabs/DeepCopy/tree/1.11.0" + "source": "https://github.com/myclabs/DeepCopy/tree/1.11.1" }, "funding": [ { @@ -6276,7 +6418,7 @@ "type": "tidelift" } ], - "time": "2022-03-03T13:19:32+00:00" + "time": "2023-03-08T13:26:56+00:00" }, { "name": "nunomaduro/collision", @@ -6476,251 +6618,26 @@ }, "time": "2022-02-21T01:04:05+00:00" }, - { - "name": "phpdocumentor/reflection-common", - "version": "2.2.0", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/ReflectionCommon.git", - "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b", - "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-2.x": "2.x-dev" - } - }, - "autoload": { - "psr-4": { - "phpDocumentor\\Reflection\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jaap van Otterdijk", - "email": "opensource@ijaap.nl" - } - ], - "description": "Common reflection classes used by phpdocumentor to reflect the code structure", - "homepage": "http://www.phpdoc.org", - "keywords": [ - "FQSEN", - "phpDocumentor", - "phpdoc", - "reflection", - "static analysis" - ], - "support": { - "issues": "https://github.com/phpDocumentor/ReflectionCommon/issues", - "source": "https://github.com/phpDocumentor/ReflectionCommon/tree/2.x" - }, - "time": "2020-06-27T09:03:43+00:00" - }, - { - "name": "phpdocumentor/reflection-docblock", - "version": "5.3.0", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", - "reference": "622548b623e81ca6d78b721c5e029f4ce664f170" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/622548b623e81ca6d78b721c5e029f4ce664f170", - "reference": "622548b623e81ca6d78b721c5e029f4ce664f170", - "shasum": "" - }, - "require": { - "ext-filter": "*", - "php": "^7.2 || ^8.0", - "phpdocumentor/reflection-common": "^2.2", - "phpdocumentor/type-resolver": "^1.3", - "webmozart/assert": "^1.9.1" - }, - "require-dev": { - "mockery/mockery": "~1.3.2", - "psalm/phar": "^4.8" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.x-dev" - } - }, - "autoload": { - "psr-4": { - "phpDocumentor\\Reflection\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Mike van Riel", - "email": "me@mikevanriel.com" - }, - { - "name": "Jaap van Otterdijk", - "email": "account@ijaap.nl" - } - ], - "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", - "support": { - "issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues", - "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.3.0" - }, - "time": "2021-10-19T17:43:47+00:00" - }, - { - "name": "phpdocumentor/type-resolver", - "version": "1.6.1", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "77a32518733312af16a44300404e945338981de3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/77a32518733312af16a44300404e945338981de3", - "reference": "77a32518733312af16a44300404e945338981de3", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0", - "phpdocumentor/reflection-common": "^2.0" - }, - "require-dev": { - "ext-tokenizer": "*", - "psalm/phar": "^4.8" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-1.x": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "phpDocumentor\\Reflection\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Mike van Riel", - "email": "me@mikevanriel.com" - } - ], - "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", - "support": { - "issues": "https://github.com/phpDocumentor/TypeResolver/issues", - "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.6.1" - }, - "time": "2022-03-15T21:29:03+00:00" - }, - { - "name": "phpspec/prophecy", - "version": "v1.15.0", - "source": { - "type": "git", - "url": "https://github.com/phpspec/prophecy.git", - "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/bbcd7380b0ebf3961ee21409db7b38bc31d69a13", - "reference": "bbcd7380b0ebf3961ee21409db7b38bc31d69a13", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.2", - "php": "^7.2 || ~8.0, <8.2", - "phpdocumentor/reflection-docblock": "^5.2", - "sebastian/comparator": "^3.0 || ^4.0", - "sebastian/recursion-context": "^3.0 || ^4.0" - }, - "require-dev": { - "phpspec/phpspec": "^6.0 || ^7.0", - "phpunit/phpunit": "^8.0 || ^9.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Prophecy\\": "src/Prophecy" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Konstantin Kudryashov", - "email": "ever.zet@gmail.com", - "homepage": "http://everzet.com" - }, - { - "name": "Marcello Duarte", - "email": "marcello.duarte@gmail.com" - } - ], - "description": "Highly opinionated mocking framework for PHP 5.3+", - "homepage": "https://github.com/phpspec/prophecy", - "keywords": [ - "Double", - "Dummy", - "fake", - "mock", - "spy", - "stub" - ], - "support": { - "issues": "https://github.com/phpspec/prophecy/issues", - "source": "https://github.com/phpspec/prophecy/tree/v1.15.0" - }, - "time": "2021-12-08T12:19:24+00:00" - }, { "name": "phpstan/phpdoc-parser", - "version": "1.7.0", + "version": "1.23.1", "source": { "type": "git", "url": "https://github.com/phpstan/phpdoc-parser.git", - "reference": "367a8d9d5f7da2a0136422d27ce8840583926955" + "reference": "846ae76eef31c6d7790fac9bc399ecee45160b26" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/367a8d9d5f7da2a0136422d27ce8840583926955", - "reference": "367a8d9d5f7da2a0136422d27ce8840583926955", + "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/846ae76eef31c6d7790fac9bc399ecee45160b26", + "reference": "846ae76eef31c6d7790fac9bc399ecee45160b26", "shasum": "" }, "require": { "php": "^7.2 || ^8.0" }, "require-dev": { + "doctrine/annotations": "^2.0", + "nikic/php-parser": "^4.15", "php-parallel-lint/php-parallel-lint": "^1.2", "phpstan/extension-installer": "^1.0", "phpstan/phpstan": "^1.5", @@ -6744,29 +6661,29 @@ "description": "PHPDoc parser with support for nullable, intersection and generic types", "support": { "issues": "https://github.com/phpstan/phpdoc-parser/issues", - "source": "https://github.com/phpstan/phpdoc-parser/tree/1.7.0" + "source": "https://github.com/phpstan/phpdoc-parser/tree/1.23.1" }, - "time": "2022-08-09T12:23:23+00:00" + "time": "2023-08-03T16:32:59+00:00" }, { "name": "phpunit/php-code-coverage", - "version": "9.2.15", + "version": "9.2.27", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "2e9da11878c4202f97915c1cb4bb1ca318a63f5f" + "reference": "b0a88255cb70d52653d80c890bd7f38740ea50d1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/2e9da11878c4202f97915c1cb4bb1ca318a63f5f", - "reference": "2e9da11878c4202f97915c1cb4bb1ca318a63f5f", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/b0a88255cb70d52653d80c890bd7f38740ea50d1", + "reference": "b0a88255cb70d52653d80c890bd7f38740ea50d1", "shasum": "" }, "require": { "ext-dom": "*", "ext-libxml": "*", "ext-xmlwriter": "*", - "nikic/php-parser": "^4.13.0", + "nikic/php-parser": "^4.15", "php": ">=7.3", "phpunit/php-file-iterator": "^3.0.3", "phpunit/php-text-template": "^2.0.2", @@ -6781,8 +6698,8 @@ "phpunit/phpunit": "^9.3" }, "suggest": { - "ext-pcov": "*", - "ext-xdebug": "*" + "ext-pcov": "PHP extension that provides line coverage", + "ext-xdebug": "PHP extension that provides line coverage as well as branch and path coverage" }, "type": "library", "extra": { @@ -6815,7 +6732,8 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.15" + "security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy", + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.27" }, "funding": [ { @@ -6823,7 +6741,7 @@ "type": "github" } ], - "time": "2022-03-07T09:28:20+00:00" + "time": "2023-07-26T13:44:30+00:00" }, { "name": "phpunit/php-file-iterator", @@ -7068,20 +6986,20 @@ }, { "name": "phpunit/phpunit", - "version": "9.5.21", + "version": "9.6.10", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "0e32b76be457de00e83213528f6bb37e2a38fcb1" + "reference": "a6d351645c3fe5a30f5e86be6577d946af65a328" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/0e32b76be457de00e83213528f6bb37e2a38fcb1", - "reference": "0e32b76be457de00e83213528f6bb37e2a38fcb1", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/a6d351645c3fe5a30f5e86be6577d946af65a328", + "reference": "a6d351645c3fe5a30f5e86be6577d946af65a328", "shasum": "" }, "require": { - "doctrine/instantiator": "^1.3.1", + "doctrine/instantiator": "^1.3.1 || ^2", "ext-dom": "*", "ext-json": "*", "ext-libxml": "*", @@ -7092,7 +7010,6 @@ "phar-io/manifest": "^2.0.3", "phar-io/version": "^3.0.2", "php": ">=7.3", - "phpspec/prophecy": "^1.12.1", "phpunit/php-code-coverage": "^9.2.13", "phpunit/php-file-iterator": "^3.0.5", "phpunit/php-invoker": "^3.1.1", @@ -7100,22 +7017,19 @@ "phpunit/php-timer": "^5.0.2", "sebastian/cli-parser": "^1.0.1", "sebastian/code-unit": "^1.0.6", - "sebastian/comparator": "^4.0.5", + "sebastian/comparator": "^4.0.8", "sebastian/diff": "^4.0.3", "sebastian/environment": "^5.1.3", - "sebastian/exporter": "^4.0.3", + "sebastian/exporter": "^4.0.5", "sebastian/global-state": "^5.0.1", "sebastian/object-enumerator": "^4.0.3", "sebastian/resource-operations": "^3.0.3", - "sebastian/type": "^3.0", + "sebastian/type": "^3.2", "sebastian/version": "^3.0.2" }, - "require-dev": { - "phpspec/prophecy-phpunit": "^2.0.1" - }, "suggest": { - "ext-soap": "*", - "ext-xdebug": "*" + "ext-soap": "To be able to generate mocks based on WSDL files", + "ext-xdebug": "PHP extension that provides line coverage as well as branch and path coverage" }, "bin": [ "phpunit" @@ -7123,7 +7037,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "9.5-dev" + "dev-master": "9.6-dev" } }, "autoload": { @@ -7154,7 +7068,8 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", - "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.21" + "security": "https://github.com/sebastianbergmann/phpunit/security/policy", + "source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.10" }, "funding": [ { @@ -7164,9 +7079,13 @@ { "url": "https://github.com/sebastianbergmann", "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpunit/phpunit", + "type": "tidelift" } ], - "time": "2022-06-19T12:14:25+00:00" + "time": "2023-07-10T04:04:23+00:00" }, { "name": "sebastian/cli-parser", @@ -7337,16 +7256,16 @@ }, { "name": "sebastian/comparator", - "version": "4.0.6", + "version": "4.0.8", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "55f4261989e546dc112258c7a75935a81a7ce382" + "reference": "fa0f136dd2334583309d32b62544682ee972b51a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/55f4261989e546dc112258c7a75935a81a7ce382", - "reference": "55f4261989e546dc112258c7a75935a81a7ce382", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/fa0f136dd2334583309d32b62544682ee972b51a", + "reference": "fa0f136dd2334583309d32b62544682ee972b51a", "shasum": "" }, "require": { @@ -7399,7 +7318,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/comparator/issues", - "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.6" + "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.8" }, "funding": [ { @@ -7407,7 +7326,7 @@ "type": "github" } ], - "time": "2020-10-26T15:49:45+00:00" + "time": "2022-09-14T12:41:17+00:00" }, { "name": "sebastian/complexity", @@ -7468,16 +7387,16 @@ }, { "name": "sebastian/diff", - "version": "4.0.4", + "version": "4.0.5", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d" + "reference": "74be17022044ebaaecfdf0c5cd504fc9cd5a7131" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/3461e3fccc7cfdfc2720be910d3bd73c69be590d", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/74be17022044ebaaecfdf0c5cd504fc9cd5a7131", + "reference": "74be17022044ebaaecfdf0c5cd504fc9cd5a7131", "shasum": "" }, "require": { @@ -7522,7 +7441,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/diff/issues", - "source": "https://github.com/sebastianbergmann/diff/tree/4.0.4" + "source": "https://github.com/sebastianbergmann/diff/tree/4.0.5" }, "funding": [ { @@ -7530,20 +7449,20 @@ "type": "github" } ], - "time": "2020-10-26T13:10:38+00:00" + "time": "2023-05-07T05:35:17+00:00" }, { "name": "sebastian/environment", - "version": "5.1.4", + "version": "5.1.5", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "1b5dff7bb151a4db11d49d90e5408e4e938270f7" + "reference": "830c43a844f1f8d5b7a1f6d6076b784454d8b7ed" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/1b5dff7bb151a4db11d49d90e5408e4e938270f7", - "reference": "1b5dff7bb151a4db11d49d90e5408e4e938270f7", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/830c43a844f1f8d5b7a1f6d6076b784454d8b7ed", + "reference": "830c43a844f1f8d5b7a1f6d6076b784454d8b7ed", "shasum": "" }, "require": { @@ -7585,7 +7504,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/environment/issues", - "source": "https://github.com/sebastianbergmann/environment/tree/5.1.4" + "source": "https://github.com/sebastianbergmann/environment/tree/5.1.5" }, "funding": [ { @@ -7593,20 +7512,20 @@ "type": "github" } ], - "time": "2022-04-03T09:37:03+00:00" + "time": "2023-02-03T06:03:51+00:00" }, { "name": "sebastian/exporter", - "version": "4.0.4", + "version": "4.0.5", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9" + "reference": "ac230ed27f0f98f597c8a2b6eb7ac563af5e5b9d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/65e8b7db476c5dd267e65eea9cab77584d3cfff9", - "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/ac230ed27f0f98f597c8a2b6eb7ac563af5e5b9d", + "reference": "ac230ed27f0f98f597c8a2b6eb7ac563af5e5b9d", "shasum": "" }, "require": { @@ -7662,7 +7581,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/exporter/issues", - "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.4" + "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.5" }, "funding": [ { @@ -7670,20 +7589,20 @@ "type": "github" } ], - "time": "2021-11-11T14:18:36+00:00" + "time": "2022-09-14T06:03:37+00:00" }, { "name": "sebastian/global-state", - "version": "5.0.5", + "version": "5.0.6", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "0ca8db5a5fc9c8646244e629625ac486fa286bf2" + "reference": "bde739e7565280bda77be70044ac1047bc007e34" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/0ca8db5a5fc9c8646244e629625ac486fa286bf2", - "reference": "0ca8db5a5fc9c8646244e629625ac486fa286bf2", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/bde739e7565280bda77be70044ac1047bc007e34", + "reference": "bde739e7565280bda77be70044ac1047bc007e34", "shasum": "" }, "require": { @@ -7726,7 +7645,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/global-state/issues", - "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.5" + "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.6" }, "funding": [ { @@ -7734,7 +7653,7 @@ "type": "github" } ], - "time": "2022-02-14T08:28:10+00:00" + "time": "2023-08-02T09:26:13+00:00" }, { "name": "sebastian/lines-of-code", @@ -7907,16 +7826,16 @@ }, { "name": "sebastian/recursion-context", - "version": "4.0.4", + "version": "4.0.5", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172" + "reference": "e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/cd9d8cf3c5804de4341c283ed787f099f5506172", - "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1", + "reference": "e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1", "shasum": "" }, "require": { @@ -7955,10 +7874,10 @@ } ], "description": "Provides functionality to recursively process PHP variables", - "homepage": "http://www.github.com/sebastianbergmann/recursion-context", + "homepage": "https://github.com/sebastianbergmann/recursion-context", "support": { "issues": "https://github.com/sebastianbergmann/recursion-context/issues", - "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.4" + "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.5" }, "funding": [ { @@ -7966,7 +7885,7 @@ "type": "github" } ], - "time": "2020-10-26T13:17:30+00:00" + "time": "2023-02-03T06:07:39+00:00" }, { "name": "sebastian/resource-operations", @@ -8025,16 +7944,16 @@ }, { "name": "sebastian/type", - "version": "3.0.0", + "version": "3.2.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/type.git", - "reference": "b233b84bc4465aff7b57cf1c4bc75c86d00d6dad" + "reference": "75e2c2a32f5e0b3aef905b9ed0b179b953b3d7c7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/b233b84bc4465aff7b57cf1c4bc75c86d00d6dad", - "reference": "b233b84bc4465aff7b57cf1c4bc75c86d00d6dad", + "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/75e2c2a32f5e0b3aef905b9ed0b179b953b3d7c7", + "reference": "75e2c2a32f5e0b3aef905b9ed0b179b953b3d7c7", "shasum": "" }, "require": { @@ -8046,7 +7965,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0-dev" + "dev-master": "3.2-dev" } }, "autoload": { @@ -8069,7 +7988,7 @@ "homepage": "https://github.com/sebastianbergmann/type", "support": { "issues": "https://github.com/sebastianbergmann/type/issues", - "source": "https://github.com/sebastianbergmann/type/tree/3.0.0" + "source": "https://github.com/sebastianbergmann/type/tree/3.2.1" }, "funding": [ { @@ -8077,7 +7996,7 @@ "type": "github" } ], - "time": "2022-03-15T09:54:48+00:00" + "time": "2023-02-03T06:13:03+00:00" }, { "name": "sebastian/version", @@ -8195,16 +8114,16 @@ }, { "name": "squizlabs/php_codesniffer", - "version": "3.7.1", + "version": "3.7.2", "source": { "type": "git", "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", - "reference": "1359e176e9307e906dc3d890bcc9603ff6d90619" + "reference": "ed8e00df0a83aa96acf703f8c2979ff33341f879" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/1359e176e9307e906dc3d890bcc9603ff6d90619", - "reference": "1359e176e9307e906dc3d890bcc9603ff6d90619", + "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/ed8e00df0a83aa96acf703f8c2979ff33341f879", + "reference": "ed8e00df0a83aa96acf703f8c2979ff33341f879", "shasum": "" }, "require": { @@ -8240,14 +8159,15 @@ "homepage": "https://github.com/squizlabs/PHP_CodeSniffer", "keywords": [ "phpcs", - "standards" + "standards", + "static analysis" ], "support": { "issues": "https://github.com/squizlabs/PHP_CodeSniffer/issues", "source": "https://github.com/squizlabs/PHP_CodeSniffer", "wiki": "https://github.com/squizlabs/PHP_CodeSniffer/wiki" }, - "time": "2022-06-18T07:21:10+00:00" + "time": "2023-02-22T23:07:41+00:00" }, { "name": "theseer/tokenizer", diff --git a/config/auth.php b/config/auth.php index c30fc9c..9a8be38 100644 --- a/config/auth.php +++ b/config/auth.php @@ -14,7 +14,7 @@ return [ */ 'defaults' => [ - 'guard' => 'web', + 'guard' => 'frontend', 'passwords' => 'users', ], @@ -36,15 +36,14 @@ return [ */ 'guards' => [ - 'web' => [ + 'backend' => [ 'driver' => 'session', 'provider' => 'users', ], - 'api' => [ - 'driver' => 'token', - 'provider' => 'users', - 'hash' => false, + 'frontend' => [ + 'driver' => 'session', + 'provider' => 'customers', ], ], @@ -70,6 +69,10 @@ return [ 'driver' => 'eloquent', 'model' => App\Models\User::class, ], + 'customers' => [ + 'driver' => 'eloquent', + 'model' => App\Models\Customer::class, + ], ], /* @@ -90,7 +93,13 @@ return [ 'passwords' => [ 'users' => [ 'provider' => 'users', - 'table' => 'password_resets', + 'table' => 'password', + 'expire' => 60, + 'throttle' => 60, + ], + 'customers' => [ + 'provider' => 'customers', + 'table' => 'password', 'expire' => 60, 'throttle' => 60, ], 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 9f73828..8222263 100644 --- a/database/migrations/2014_10_12_000000_create_users_table.php +++ b/database/migrations/2014_10_12_000000_create_users_table.php @@ -4,7 +4,7 @@ use Illuminate\Database\Migrations\Migration; use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; -class CreateUsersTable extends Migration +return new class extends Migration { /** * Run the migrations. @@ -15,23 +15,16 @@ class CreateUsersTable extends Migration { Schema::create('users', function (Blueprint $table) { $table->id(); - $table->integer('crm_id')->nullable(); - $table->string('firstname'); - $table->string('lastname'); - $table->date('birth_date')->nullable(); - $table->string('email')->unique(); - $table->string('password'); - $table->string('address')->nullable(); - $table->string('address2')->nullable(); - $table->string('town')->nullable(); - $table->string('postal_code')->nullable(); - $table->string('country')->nullable(); - $table->string('phone')->nullable(); - $table->string('email_verify_token')->nullable(); - $table->boolean('email_verified')->default(0); - $table->string('password_token')->nullable(); - $table->integer('role')->default(3); + $table->string('firstname')->comment('Firstname of the user.'); + $table->string('lastname')->comment('Lastname of the user.'); + $table->string('email')->unique()->comment('Email of the user.'); + $table->timestamp('email_verified_at')->nullable(); + $table->string('password')->comment('Password of the user account.'); $table->rememberToken(); + $table->boolean('role')->comment('Role of the user who defines the rights/access.'); + $table->boolean('published')->comment('The user is published or not.'); + $table->timestamp('published_at')->nullable()->comment('The date on which the user was published.'); + $table->integer('order')->comment('Order of this user.'); $table->timestamps(); }); } @@ -45,4 +38,4 @@ class CreateUsersTable extends Migration { Schema::dropIfExists('users'); } -} +}; diff --git a/database/migrations/2023_08_16_092101_create_customers_table.php b/database/migrations/2023_08_16_092101_create_customers_table.php new file mode 100644 index 0000000..41607e5 --- /dev/null +++ b/database/migrations/2023_08_16_092101_create_customers_table.php @@ -0,0 +1,46 @@ +id(); + $table->integer('crm_id')->nullable(); + $table->string('firstname'); + $table->string('lastname'); + $table->date('birth_date')->nullable(); + $table->string('email')->unique(); + $table->string('password'); + $table->string('address')->nullable(); + $table->string('address2')->nullable(); + $table->string('town')->nullable(); + $table->string('postal_code')->nullable(); + $table->string('country')->nullable(); + $table->string('phone')->nullable(); + $table->string('email_verify_token')->nullable(); + $table->boolean('email_verified')->default(0); + $table->string('password_token')->nullable(); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('customers'); + } +} diff --git a/resources/views/bo/auth/login.blade.php b/resources/views/bo/auth/login.blade.php new file mode 100644 index 0000000..1731442 --- /dev/null +++ b/resources/views/bo/auth/login.blade.php @@ -0,0 +1,67 @@ +@extends('bo.layout') +@section('title', __('Authentification')) +@section('description', __('Formulaire d\'authentification au back-office.')) + +@section('content') +
+
+
+
+
{{ __('Connexion') }}
+
+
+ @csrf +
+ +
+ + @error('email') + + {{ $message }} + + @enderror +
+
+
+ +
+ + @error('password') + + {{ $message }} + + @enderror +
+
+
+
+
+ + +
+
+
+
+
+ + @if (Route::has('bo.password.request')) + + {{ __('Mot de passe oublié ?') }} + + @endif +
+
+
+
+
+
+
+
+@endsection diff --git a/resources/views/bo/banned-ip/index.blade.php b/resources/views/bo/banned-ip/index.blade.php index a9342c9..51792bd 100644 --- a/resources/views/bo/banned-ip/index.blade.php +++ b/resources/views/bo/banned-ip/index.blade.php @@ -1,4 +1,4 @@ -@extends('layouts.bo') +@extends('bo.layout') @section('content') diff --git a/resources/views/bo/codes-ean/index.blade.php b/resources/views/bo/codes-ean/index.blade.php index b168ef4..260d573 100644 --- a/resources/views/bo/codes-ean/index.blade.php +++ b/resources/views/bo/codes-ean/index.blade.php @@ -1,4 +1,4 @@ -@extends('layouts.bo') +@extends('bo.layout') @section('content') diff --git a/resources/views/bo/codes/index.blade.php b/resources/views/bo/codes/index.blade.php index 2ee6f7c..08484ca 100644 --- a/resources/views/bo/codes/index.blade.php +++ b/resources/views/bo/codes/index.blade.php @@ -1,4 +1,4 @@ -@extends('layouts.bo') +@extends('bo.layout') @section('content')
diff --git a/resources/views/bo/codes/search.blade.php b/resources/views/bo/codes/search.blade.php index 57f7e37..72c3836 100644 --- a/resources/views/bo/codes/search.blade.php +++ b/resources/views/bo/codes/search.blade.php @@ -1,4 +1,4 @@ -@extends('layouts.bo') +@extends('bo.layout') @section('content')
diff --git a/resources/views/bo/content/manage.blade.php b/resources/views/bo/content/manage.blade.php index 6ae6915..f8f253c 100644 --- a/resources/views/bo/content/manage.blade.php +++ b/resources/views/bo/content/manage.blade.php @@ -1,4 +1,4 @@ -@extends('layouts.bo') +@extends('bo.layout') @section('content')
diff --git a/resources/views/bo/dashboard/index.blade.php b/resources/views/bo/dashboard/index.blade.php index ac9c580..a42254a 100644 --- a/resources/views/bo/dashboard/index.blade.php +++ b/resources/views/bo/dashboard/index.blade.php @@ -1,4 +1,4 @@ -@extends('layouts.bo') +@extends('bo.layout') @section('content')

Tableau de bord

diff --git a/resources/views/bo/faq-questions/index.blade.php b/resources/views/bo/faq-questions/index.blade.php index f744e55..d42216c 100644 --- a/resources/views/bo/faq-questions/index.blade.php +++ b/resources/views/bo/faq-questions/index.blade.php @@ -1,4 +1,4 @@ -@extends('layouts.bo') +@extends('bo.layout') @section('content') diff --git a/resources/views/bo/faq-themes/index.blade.php b/resources/views/bo/faq-themes/index.blade.php index 5a8783f..91bbb4a 100644 --- a/resources/views/bo/faq-themes/index.blade.php +++ b/resources/views/bo/faq-themes/index.blade.php @@ -1,4 +1,4 @@ -@extends('layouts.bo') +@extends('bo.layout') @section('content') diff --git a/resources/views/bo/gain-views/index.blade.php b/resources/views/bo/gain-views/index.blade.php index 1044d41..14a446a 100644 --- a/resources/views/bo/gain-views/index.blade.php +++ b/resources/views/bo/gain-views/index.blade.php @@ -1,4 +1,4 @@ -@extends('layouts.bo') +@extends('bo.layout') @section('content') diff --git a/resources/views/bo/instant-win/index.blade.php b/resources/views/bo/instant-win/index.blade.php index 5a53325..c1b19cd 100644 --- a/resources/views/bo/instant-win/index.blade.php +++ b/resources/views/bo/instant-win/index.blade.php @@ -1,4 +1,4 @@ -@extends('layouts.bo') +@extends('bo.layout') @section('content') diff --git a/resources/views/bo/layout.blade.php b/resources/views/bo/layout.blade.php new file mode 100644 index 0000000..059e162 --- /dev/null +++ b/resources/views/bo/layout.blade.php @@ -0,0 +1,59 @@ + + + + @include('bo.layouts.head') + + +
+ + +
+
+
+ @auth +
+ @include('bo.layouts.nav-menu') +
+ @endguest +
+ @include('modules.flash-messages') + @yield('content') +
+
+
+
+
+ + @stack('scripts') + + diff --git a/resources/views/bo/layouts/head.blade.php b/resources/views/bo/layouts/head.blade.php new file mode 100644 index 0000000..eb681f6 --- /dev/null +++ b/resources/views/bo/layouts/head.blade.php @@ -0,0 +1,21 @@ + + + + + + +{{ config('app.name', 'Laravel') }} + + +{{-- TODO : Ajouter jQuery dans app.js --}} + +{{-- TODO : Voir l'inclusion de Font Awesome, pour le moment c'est fait avec mon compte FA --}} + + + + + + + + +@yield('styles') diff --git a/resources/views/bo/layouts/nav-menu.blade.php b/resources/views/bo/layouts/nav-menu.blade.php new file mode 100644 index 0000000..6e40233 --- /dev/null +++ b/resources/views/bo/layouts/nav-menu.blade.php @@ -0,0 +1,39 @@ + diff --git a/resources/views/bo/mails/job-failed.blade.php b/resources/views/bo/mails/job-failed.blade.php index ba1b050..51b2e1f 100644 --- a/resources/views/bo/mails/job-failed.blade.php +++ b/resources/views/bo/mails/job-failed.blade.php @@ -7,11 +7,11 @@ -

+

Job : {{ $job }}

- Exception : {{ $exception['message'] }}

+ Exception : {{ $exception['message'] }}

Trace :
{{ $exception['trace'] }} -

+

diff --git a/resources/views/bo/prizes/index.blade.php b/resources/views/bo/prizes/index.blade.php index d7b560a..1cc7f8b 100644 --- a/resources/views/bo/prizes/index.blade.php +++ b/resources/views/bo/prizes/index.blade.php @@ -1,4 +1,4 @@ -@extends('layouts.bo') +@extends('bo.layout') @section('content') diff --git a/resources/views/bo/products/create.blade.php b/resources/views/bo/products/create.blade.php index f28cad0..f2eb397 100644 --- a/resources/views/bo/products/create.blade.php +++ b/resources/views/bo/products/create.blade.php @@ -1,4 +1,4 @@ -@extends('layouts.bo') +@extends('bo.layout') @section('content')
diff --git a/resources/views/bo/products/edit.blade.php b/resources/views/bo/products/edit.blade.php index db5fa76..d4d9ce8 100644 --- a/resources/views/bo/products/edit.blade.php +++ b/resources/views/bo/products/edit.blade.php @@ -1,4 +1,4 @@ -@extends('layouts.bo') +@extends('bo.layout') @section('content')
diff --git a/resources/views/bo/products/index.blade.php b/resources/views/bo/products/index.blade.php index bfb8cdb..426ea34 100644 --- a/resources/views/bo/products/index.blade.php +++ b/resources/views/bo/products/index.blade.php @@ -1,4 +1,4 @@ -@extends('layouts.bo') +@extends('bo.layout') @section('content')
diff --git a/resources/views/bo/ranges/create.blade.php b/resources/views/bo/ranges/create.blade.php index 37dbb25..032f8b5 100644 --- a/resources/views/bo/ranges/create.blade.php +++ b/resources/views/bo/ranges/create.blade.php @@ -1,4 +1,4 @@ -@extends('layouts.bo') +@extends('bo.layout') @section('content')
diff --git a/resources/views/bo/ranges/edit.blade.php b/resources/views/bo/ranges/edit.blade.php index 6a60b6b..ec3a032 100644 --- a/resources/views/bo/ranges/edit.blade.php +++ b/resources/views/bo/ranges/edit.blade.php @@ -1,4 +1,4 @@ -@extends('layouts.bo') +@extends('bo.layout') @section('content')
diff --git a/resources/views/bo/ranges/index.blade.php b/resources/views/bo/ranges/index.blade.php index d48930f..f8a8103 100644 --- a/resources/views/bo/ranges/index.blade.php +++ b/resources/views/bo/ranges/index.blade.php @@ -1,4 +1,4 @@ -@extends('layouts.bo') +@extends('bo.layout') @section('content')
diff --git a/resources/views/bo/settings/manage.blade.php b/resources/views/bo/settings/manage.blade.php index da1e4f6..2e10335 100644 --- a/resources/views/bo/settings/manage.blade.php +++ b/resources/views/bo/settings/manage.blade.php @@ -1,4 +1,4 @@ -@extends('layouts.bo') +@extends('bo.layout') @section('content')
diff --git a/resources/views/bo/winners-list/arcadia.blade.php b/resources/views/bo/winners-list/arcadia.blade.php index f370aed..4e73077 100644 --- a/resources/views/bo/winners-list/arcadia.blade.php +++ b/resources/views/bo/winners-list/arcadia.blade.php @@ -1,4 +1,4 @@ -@extends('layouts.bo') +@extends('bo.layout') @section('content')
diff --git a/resources/views/bo/winners-list/index.blade.php b/resources/views/bo/winners-list/index.blade.php index f90156c..610daa8 100644 --- a/resources/views/bo/winners-list/index.blade.php +++ b/resources/views/bo/winners-list/index.blade.php @@ -1,4 +1,4 @@ -@extends('layouts.bo') +@extends('bo.layout') @section('content')
diff --git a/resources/views/layouts/app.blade.php b/resources/views/layouts/app.blade.php deleted file mode 100644 index 9e795f4..0000000 --- a/resources/views/layouts/app.blade.php +++ /dev/null @@ -1,80 +0,0 @@ - - - - - - - - - - {{ config('app.name', 'Laravel') }} - - - - - - - - - - - - -
- - -
- @yield('content') -
-
- - diff --git a/resources/views/layouts/bo.blade.php b/resources/views/layouts/bo.blade.php deleted file mode 100644 index c43b997..0000000 --- a/resources/views/layouts/bo.blade.php +++ /dev/null @@ -1,125 +0,0 @@ - - - - - - - - - - {{ config('app.name', 'Laravel') }} - - - {{-- TODO : Ajouter jQuery dans app.js --}} - - {{-- TODO : Voir l'inclusion de Font Awesome, pour le moment c'est fait avec mon compte FA --}} - - - - - - - - - @yield('styles') - - -
- - -
-
-
- -
- @include('modules.flashMessage') - @yield('content') -
-
-
-
-
- - @stack('scripts') - - diff --git a/resources/views/modules/flashMessage.blade.php b/resources/views/modules/flash-messages.blade.php similarity index 100% rename from resources/views/modules/flashMessage.blade.php rename to resources/views/modules/flash-messages.blade.php diff --git a/routes/web-bo.php b/routes/web-bo.php index d77de7c..84420e9 100644 --- a/routes/web-bo.php +++ b/routes/web-bo.php @@ -14,66 +14,82 @@ use App\Http\Controllers\Bo\ProductsController; use App\Http\Controllers\Bo\RangeController; use App\Http\Controllers\Bo\SettingsController; use App\Http\Controllers\Bo\WinnersListController; +use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Route; // * BO Route::prefix('bo') -->name('bo.') -->middleware(['auth', 'is-admin', 'is-super-admin']) -->group(function () { - Route::get('/', [DashboardController::class, 'index']) - ->name('dashboard')->withoutMiddleware('is-super-admin'); - // Réglages. - Route::match(['get', 'put'], '/settings', [SettingsController::class, 'manage']) - ->name('settings'); - // Contenu. - Route::match(['get', 'put'], '/content/{id}', [ContentController::class, 'manage']) - ->name('content'); - // Pages liées au gains. - Route::get('/gain-views', [GainViewController::class, 'index']) - ->name('gain-views'); - Route::post('/ajax/delete-gain-views', [GainViewController::class, 'destroy']); - Route::post('/ajax/save-gain-views', [GainViewController::class, 'saveDatas']); - // Lots. - Route::get('/prizes', [PrizesController::class, 'index'])->name('prizes'); - Route::post('/ajax/delete-prize', [PrizesController::class, 'destroy']); - Route::post('/ajax/save-prizes', [PrizesController::class, 'saveDatas']); - // Instants gagnants. - Route::get('/instant-win', [InstantWinController::class, 'index'])->name('instant-win'); - Route::get('/ajax/instant-win-generate', [InstantWinController::class, 'instantWinGenerate']); - // Codes EAN. - Route::get('/codes-ean', [CodesEANController::class, 'index']) - ->name('codes-ean')->withoutMiddleware('is-super-admin'); - Route::post('/ajax/delete-codes-ean', [CodesEANController::class, 'destroy']) - ->withoutMiddleware('is-super-admin'); - Route::post('/ajax/save-codes-ean', [CodesEANController::class, 'saveDatas']) - ->withoutMiddleware('is-super-admin'); - // IP Bannies. - Route::get('/banned-ip', [BannedIpController::class, 'index'])->name('banned-ip'); - Route::post('/ajax/delete-banned-ip', [BannedIpController::class, 'destroy']); - Route::post('/ajax/save-banned-ip', [BannedIpController::class, 'saveDatas']); - // FAQ - Thèmes. - Route::get('/faq-themes', [FaqThemesController::class, 'index'])->name('faq-themes'); - Route::post('/ajax/delete-faq-theme', [FaqThemesController::class, 'destroy']); - Route::post('/ajax/save-faq-theme', [FaqThemesController::class, 'saveDatas']); - // FAQ - Questions. - Route::get('/faq-questions', [FaqQuestionsController::class, 'index'])->name('faq-questions'); - Route::post('/ajax/delete-faq-question', [FaqQuestionsController::class, 'destroy']); - Route::post('/ajax/save-faq-question', [FaqQuestionsController::class, 'saveDatas']); - // Codes uniques. - Route::get('/codes', [CodesController::class, 'index'])->name('codes'); - Route::post('/codes', [CodesController::class, 'generate'])->name('generate-codes'); - Route::get('/codes/search', [CodesController::class, 'search'])->name('codes.search'); - Route::post('/codes/export', [CodesController::class, 'export'])->name('export-codes'); - // Liste des gagnants. - Route::get('/winners-list', [WinnersListController::class, 'index'])->name('winners-list'); - Route::get('/winners-list/arcadia/{id}', [WinnersListController::class, 'courrierArcadia']) - ->name('winners-arcadia'); - Route::post('/winners-list/arcadia/{id}/send', [WinnersListController::class, 'createCourrierArcadia']) - ->name('courrier-arcadia'); - // Produits porteurs. - Route::resource('products', ProductsController::class) - ->withoutMiddleware('is-super-admin'); - Route::resource('ranges', RangeController::class) - ->withoutMiddleware('is-super-admin'); -}); + ->name('bo.') + ->group(function () { + Route::namespace('\App\Http\Controllers\Bo') + ->group(function () { + Auth::routes( + [ + 'confirm' => false, + 'login' => true, + 'logout' => true, + 'register' => false, + 'reset' => false, + 'verify' => false, + ] + ); + }); + Route::middleware(['auth:backend', 'is-admin', 'is-super-admin']) + ->group(function () { + Route::get('/', [DashboardController::class, 'index']) + ->name('dashboard')->withoutMiddleware('is-super-admin'); + // Réglages. + Route::match(['get', 'put'], '/settings', [SettingsController::class, 'manage']) + ->name('settings'); + // Contenu. + Route::match(['get', 'put'], '/content/{id}', [ContentController::class, 'manage']) + ->name('content'); + // Pages liées au gains. + Route::get('/gain-views', [GainViewController::class, 'index']) + ->name('gain-views'); + Route::post('/ajax/delete-gain-views', [GainViewController::class, 'destroy']); + Route::post('/ajax/save-gain-views', [GainViewController::class, 'saveDatas']); + // Lots. + Route::get('/prizes', [PrizesController::class, 'index'])->name('prizes'); + Route::post('/ajax/delete-prize', [PrizesController::class, 'destroy']); + Route::post('/ajax/save-prizes', [PrizesController::class, 'saveDatas']); + // Instants gagnants. + Route::get('/instant-win', [InstantWinController::class, 'index'])->name('instant-win'); + Route::get('/ajax/instant-win-generate', [InstantWinController::class, 'instantWinGenerate']); + // Codes EAN. + Route::get('/codes-ean', [CodesEANController::class, 'index']) + ->name('codes-ean')->withoutMiddleware('is-super-admin'); + Route::post('/ajax/delete-codes-ean', [CodesEANController::class, 'destroy']) + ->withoutMiddleware('is-super-admin'); + Route::post('/ajax/save-codes-ean', [CodesEANController::class, 'saveDatas']) + ->withoutMiddleware('is-super-admin'); + // IP Bannies. + Route::get('/banned-ip', [BannedIpController::class, 'index'])->name('banned-ip'); + Route::post('/ajax/delete-banned-ip', [BannedIpController::class, 'destroy']); + Route::post('/ajax/save-banned-ip', [BannedIpController::class, 'saveDatas']); + // FAQ - Thèmes. + Route::get('/faq-themes', [FaqThemesController::class, 'index'])->name('faq-themes'); + Route::post('/ajax/delete-faq-theme', [FaqThemesController::class, 'destroy']); + Route::post('/ajax/save-faq-theme', [FaqThemesController::class, 'saveDatas']); + // FAQ - Questions. + Route::get('/faq-questions', [FaqQuestionsController::class, 'index'])->name('faq-questions'); + Route::post('/ajax/delete-faq-question', [FaqQuestionsController::class, 'destroy']); + Route::post('/ajax/save-faq-question', [FaqQuestionsController::class, 'saveDatas']); + // Codes uniques. + Route::get('/codes', [CodesController::class, 'index'])->name('codes'); + Route::post('/codes', [CodesController::class, 'generate'])->name('generate-codes'); + Route::get('/codes/search', [CodesController::class, 'search'])->name('codes.search'); + Route::post('/codes/export', [CodesController::class, 'export'])->name('export-codes'); + // Liste des gagnants. + Route::get('/winners-list', [WinnersListController::class, 'index'])->name('winners-list'); + Route::get('/winners-list/arcadia/{id}', [WinnersListController::class, 'courrierArcadia']) + ->name('winners-arcadia'); + Route::post('/winners-list/arcadia/{id}/send', [WinnersListController::class, 'createCourrierArcadia']) + ->name('courrier-arcadia'); + // Produits porteurs. + Route::resource('products', ProductsController::class) + ->withoutMiddleware('is-super-admin'); + Route::resource('ranges', RangeController::class) + ->withoutMiddleware('is-super-admin'); + }); + }); diff --git a/routes/web.php b/routes/web.php index 3357169..b21e431 100644 --- a/routes/web.php +++ b/routes/web.php @@ -14,8 +14,18 @@ use App\Http\Controllers\ViewContentController; use App\Http\Controllers\WinningProofController; use Illuminate\Support\Facades\Route; -Route::group(['middleware' => ['game-date']], function () { - // Front. +Route::middleware('game-date')->group(function () { + // Routes nécessitant d'être connecté. + Route::middleware('auth:frontend')->group(function () { + Route::post('/logout', [LoginController::class, 'logout'])->name('logout'); + Route::get('/saisir-code', [EnterCodeController::class, 'index'])->name('saisir-code'); + Route::post('/saisir-code', [EnterCodeController::class, 'participate']) + ->name('participate'); + Route::put('/saisir-code', [EnterCodeController::class, 'formWinningProof']) + ->name('winning-proof'); + Route::put('/rejouer', [WinningProofController::class, 'sendWinningProof']) + ->name('send-winning-proof'); + }); Route::get('/', [HomeController::class, 'home'])->name('home'); Route::get('/reglement', [ViewContentController::class, 'reglement'])->name('reglement'); Route::get('/charte', [ViewContentController::class, 'charte'])->name('charte'); @@ -24,29 +34,18 @@ Route::group(['middleware' => ['game-date']], function () { Route::get('/comment-jouer', [HowToPlayController::class, 'index'])->name('comment-jouer'); Route::get('/les-gains', [GainsController::class, 'index'])->name('les-gains'); Route::get('/produits-porteurs', [ProduitsController::class, 'index'])->name('produits-porteurs'); + + // Authentification. + Route::get('/inscription', [RegisterController::class, 'index'])->name('inscription'); + Route::post('/inscription', [RegisterController::class, 'register'])->name('register'); Route::get('/confirmation-email/{verifyToken}', [LoginController::class, 'confirmEmail'])->name('confirm-email'); Route::get('/mot-de-passe-oublie', [LoginController::class, 'forgotPassword'])->name('forgot-password'); Route::get('/mot-de-passe-oublie/reset/{token}', [LoginController::class, 'forgotPasswordReset']) ->name('forgot-password-reset'); Route::put('/mail-mot-de-passe', [LoginController::class, 'mailPassword'])->name('mail-password'); Route::put('/change-mot-de-passe', [LoginController::class, 'changePassword'])->name('change-password'); - - // Front nécessitant d'être connecté. - Route::get('/saisir-code', [EnterCodeController::class, 'index'])->name('saisir-code')->middleware('auth'); - Route::post('/saisir-code', [EnterCodeController::class, 'participate']) - ->name('participate')->middleware('auth'); - Route::put('/saisir-code', [EnterCodeController::class, 'formWinningProof']) - ->name('winning-proof')->middleware('auth'); - Route::put('/rejouer', [WinningProofController::class, 'sendWinningProof']) - ->name('send-winning-proof')->middleware('auth'); - - // Authentification. - Route::post('/logout', [LoginController::class, 'logout'])->name('logout')->middleware('auth'); - Route::get('/inscription', [RegisterController::class, 'index'])->name('inscription'); - Route::post('/inscription', [RegisterController::class, 'register'])->name('register'); }); -// Login sans middleware pour la connexion admin, teaser et end pour ne pas redirigé en boucle. Route::get('/login', [LoginController::class, 'index'])->name('login'); Route::post('/login', [LoginController::class, 'authenticate'])->name('authenticate'); Route::get('/teaser', [TeaserController::class, 'index'])->name('teaser');