From 9288e60174dead52e2738f61fc8c63229e9ef2ba Mon Sep 17 00:00:00 2001 From: peaklabs-dev <122374094+peaklabs-dev@users.noreply.github.com> Date: Thu, 16 Jan 2025 18:07:40 +0100 Subject: [PATCH] feat: email, username and password validation when they are set via envs --- database/seeders/RootUserSeeder.php | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/database/seeders/RootUserSeeder.php b/database/seeders/RootUserSeeder.php index b356d8cf2..6cc877b0a 100644 --- a/database/seeders/RootUserSeeder.php +++ b/database/seeders/RootUserSeeder.php @@ -6,6 +6,8 @@ use App\Models\InstanceSettings; use App\Models\User; use Illuminate\Database\Seeder; use Illuminate\Support\Facades\Hash; +use Illuminate\Support\Facades\Validator; +use Illuminate\Validation\Rules\Password; class RootUserSeeder extends Seeder { @@ -18,6 +20,25 @@ class RootUserSeeder extends Seeder } if (env('ROOT_USER_EMAIL') && env('ROOT_USER_PASSWORD')) { + $validator = Validator::make([ + 'email' => env('ROOT_USER_EMAIL'), + 'username' => env('ROOT_USERNAME', 'Root User'), + 'password' => env('ROOT_USER_PASSWORD'), + ], [ + 'email' => ['required', 'email:rfc,dns', 'max:255'], + 'username' => ['required', 'string', 'min:3', 'max:255', 'regex:/^[a-zA-Z0-9\s-_]+$/'], + 'password' => ['required', 'string', 'min:8', Password::min(8)->mixedCase()->letters()->numbers()->symbols()->uncompromised()], + ]); + + if ($validator->fails()) { + echo " Validation failed:\n"; + foreach ($validator->errors()->all() as $error) { + echo " - {$error}\n"; + } + + return; + } + User::create([ 'id' => 0, 'name' => env('ROOT_USERNAME', 'Root User'),