diff --git a/app/Http/Controllers/Auth/ContactForgotPasswordController.php b/app/Http/Controllers/Auth/ContactForgotPasswordController.php index 85e5c41bbec6..7febf15f9539 100644 --- a/app/Http/Controllers/Auth/ContactForgotPasswordController.php +++ b/app/Http/Controllers/Auth/ContactForgotPasswordController.php @@ -13,6 +13,7 @@ namespace App\Http\Controllers\Auth; use App\Http\Controllers\Controller; use App\Libraries\MultiDB; +use App\Models\Account; use Illuminate\Contracts\View\Factory; use Illuminate\Foundation\Auth\SendsPasswordResetEmails; use Illuminate\Http\Request; @@ -50,11 +51,15 @@ class ContactForgotPasswordController extends Controller * * @return Factory|View */ - public function showLinkRequestForm() + public function showLinkRequestForm(Request $request) { + $account_id = $request->get('account_id'); + $account = Account::find($account_id); + return $this->render('auth.passwords.request', [ 'title' => 'Client Password Reset', 'passwordEmailRoute' => 'client.password.email', + 'account' => $account ]); } diff --git a/app/Http/Controllers/Auth/ContactLoginController.php b/app/Http/Controllers/Auth/ContactLoginController.php index 6d02b16ba056..61e32e1cbcd5 100644 --- a/app/Http/Controllers/Auth/ContactLoginController.php +++ b/app/Http/Controllers/Auth/ContactLoginController.php @@ -13,6 +13,7 @@ namespace App\Http\Controllers\Auth; use App\Events\Contact\ContactLoggedIn; use App\Http\Controllers\Controller; +use App\Models\Account; use App\Models\ClientContact; use App\Utils\Ninja; use Auth; @@ -31,9 +32,13 @@ class ContactLoginController extends Controller $this->middleware('guest:contact', ['except' => ['logout']]); } - public function showLoginForm() + public function showLoginForm(Request $request) { - return $this->render('auth.login'); + $account_id = $request->get('account_id'); + $account = Account::find($account_id); + + return $this->render('auth.login', ['account' => $account]); + } public function login(Request $request) diff --git a/app/Http/Controllers/Auth/ContactRegisterController.php b/app/Http/Controllers/Auth/ContactRegisterController.php index c74ea40c7c99..09aec14f1ab9 100644 --- a/app/Http/Controllers/Auth/ContactRegisterController.php +++ b/app/Http/Controllers/Auth/ContactRegisterController.php @@ -24,7 +24,7 @@ class ContactRegisterController extends Controller $company = Company::where('company_key', $key)->firstOrFail(); - return render('auth.register', ['company' => $company]); + return render('auth.register', ['company' => $company, 'account' => $company->account]); } public function register(RegisterRequest $request) diff --git a/app/Http/Controllers/Auth/ContactResetPasswordController.php b/app/Http/Controllers/Auth/ContactResetPasswordController.php index 7c4a2c3a40be..1644c72effac 100644 --- a/app/Http/Controllers/Auth/ContactResetPasswordController.php +++ b/app/Http/Controllers/Auth/ContactResetPasswordController.php @@ -12,6 +12,7 @@ namespace App\Http\Controllers\Auth; use App\Http\Controllers\Controller; +use App\Models\Account; use Illuminate\Contracts\View\Factory; use Illuminate\Foundation\Auth\ResetsPasswords; use Illuminate\Http\Request; @@ -62,8 +63,11 @@ class ContactResetPasswordController extends Controller */ public function showResetForm(Request $request, $token = null) { + $account_id = $request->get('account_id'); + $account = Account::find($account_id); + return $this->render('auth.passwords.reset')->with( - ['token' => $token, 'email' => $request->email] + ['token' => $token, 'email' => $request->email, 'account' => $account] ); } diff --git a/app/Http/Controllers/Auth/ForgotPasswordController.php b/app/Http/Controllers/Auth/ForgotPasswordController.php index e5577966ff53..822c3c355e25 100644 --- a/app/Http/Controllers/Auth/ForgotPasswordController.php +++ b/app/Http/Controllers/Auth/ForgotPasswordController.php @@ -13,6 +13,7 @@ namespace App\Http\Controllers\Auth; use App\Http\Controllers\Controller; use App\Libraries\MultiDB; +use App\Models\Account; use Illuminate\Foundation\Auth\SendsPasswordResetEmails; use Illuminate\Http\Request; use Illuminate\Support\Facades\Password; @@ -105,7 +106,6 @@ class ForgotPasswordController extends Controller public function sendResetLinkEmail(Request $request) { MultiDB::userFindAndSetDb($request->input('email')); - $user = MultiDB::hasUser(['email' => $request->input('email')]); $this->validateEmail($request); diff --git a/app/Http/Kernel.php b/app/Http/Kernel.php index af167fd5a50a..86f435646997 100644 --- a/app/Http/Kernel.php +++ b/app/Http/Kernel.php @@ -16,6 +16,7 @@ use App\Http\Middleware\Authenticate; use App\Http\Middleware\CheckClientExistence; use App\Http\Middleware\CheckForMaintenanceMode; use App\Http\Middleware\ClientPortalEnabled; +use App\Http\Middleware\ContactAccount; use App\Http\Middleware\ContactKeyLogin; use App\Http\Middleware\ContactRegister; use App\Http\Middleware\ContactSetDb; @@ -141,6 +142,7 @@ class Kernel extends HttpKernel 'api_secret_check' => ApiSecretCheck::class, 'contact_token_auth' => ContactTokenAuth::class, 'contact_db' => ContactSetDb::class, + 'contact_account' => ContactAccount::class, 'domain_db' => SetDomainNameDb::class, 'email_db' => SetEmailDb::class, 'invite_db' => SetInviteDb::class, @@ -182,5 +184,6 @@ class Kernel extends HttpKernel PasswordProtection::class, Locale::class, SubstituteBindings::class, + ContactAccount::class, ]; } diff --git a/app/Http/Middleware/ContactAccount.php b/app/Http/Middleware/ContactAccount.php new file mode 100644 index 000000000000..42a6992189e5 --- /dev/null +++ b/app/Http/Middleware/ContactAccount.php @@ -0,0 +1,41 @@ +id; + $request->attributes->add(['account_id' => $account_id]); + + } + + return $next($request); + } +} diff --git a/app/Http/Middleware/SetDomainNameDb.php b/app/Http/Middleware/SetDomainNameDb.php index 8bfde19417ce..09366e939d3e 100644 --- a/app/Http/Middleware/SetDomainNameDb.php +++ b/app/Http/Middleware/SetDomainNameDb.php @@ -48,7 +48,11 @@ class SetDomainNameDb 'portal_mode' => 'subdomain', ]; - if(!MultiDB::findAndSetDbByDomain($query)){ + if($company = MultiDB::findAndSetDbByDomain($query)){ + $request->attributes->add(['account_id' => $company->account_id]); + } + else + { if ($request->json) { return response()->json($error, 403); } else { @@ -66,7 +70,11 @@ class SetDomainNameDb 'portal_mode' => 'domain', ]; - if(!MultiDB::findAndSetDbByDomain($query)){ + if($company = MultiDB::findAndSetDbByDomain($query)){ + $request->attributes->add(['account_id' => $company->account_id]); + } + else + { if ($request->json) { return response()->json($error, 403); } else { diff --git a/app/Libraries/MultiDB.php b/app/Libraries/MultiDB.php index 51afc34ae331..2b0fbcfa6ff8 100644 --- a/app/Libraries/MultiDB.php +++ b/app/Libraries/MultiDB.php @@ -274,14 +274,14 @@ class MultiDB { if (! config('ninja.db.multi_db_enabled')) - return (Company::where($query_array)->exists() === true); + return (Company::where($query_array)->first()); $current_db = config('database.default'); foreach (self::$dbs as $db) { if ($company = Company::on($db)->where($query_array)->first()) { self::setDb($company->db); - return true; + return $company; } } diff --git a/resources/views/portal/ninja2020/auth/login.blade.php b/resources/views/portal/ninja2020/auth/login.blade.php index ca009820858a..b5c7245e366e 100644 --- a/resources/views/portal/ninja2020/auth/login.blade.php +++ b/resources/views/portal/ninja2020/auth/login.blade.php @@ -8,7 +8,7 @@ @section('body')