diff --git a/app/Http/Middleware/VendorContactKeyLogin.php b/app/Http/Middleware/VendorContactKeyLogin.php index 334f6609c72f..0573a3389122 100644 --- a/app/Http/Middleware/VendorContactKeyLogin.php +++ b/app/Http/Middleware/VendorContactKeyLogin.php @@ -65,7 +65,7 @@ class VendorContactKeyLogin return redirect($this->setRedirectPath()); } } elseif ($request->segment(3) && config('ninja.db.multi_db_enabled')) { - if (MultiDB::findAndSetDbByContactKey($request->segment(3))) { + if (MultiDB::findAndSetDbByVendorContactKey($request->segment(3))) { if ($vendor_contact = VendorContact::where('contact_key', $request->segment(3))->first()) { if (empty($vendor_contact->email)) { $vendor_contact->email = Str::random(6).'@example.com'; diff --git a/app/Libraries/MultiDB.php b/app/Libraries/MultiDB.php index dabc5fc647d2..30fbddd44b2b 100644 --- a/app/Libraries/MultiDB.php +++ b/app/Libraries/MultiDB.php @@ -18,6 +18,7 @@ use App\Models\Company; use App\Models\CompanyToken; use App\Models\Document; use App\Models\User; +use App\Models\VendorContact; use Illuminate\Support\Facades\DB; use Illuminate\Support\Str; @@ -364,6 +365,23 @@ class MultiDB return false; } + public static function findAndSetDbByVendorContactKey($contact_key) :bool + { + $current_db = config('database.default'); + + foreach (self::$dbs as $db) { + if (VendorContact::on($db)->where('contact_key', $contact_key)->exists()) { + self::setDb($db); + + return true; + } + } + + self::setDB($current_db); + + return false; + } + public static function findAndSetDbByClientHash($client_hash) :bool { $current_db = config('database.default');