diff --git a/app/Http/Controllers/OneTimeTokenController.php b/app/Http/Controllers/OneTimeTokenController.php index efe83ccd8af7..e735f39b1c19 100644 --- a/app/Http/Controllers/OneTimeTokenController.php +++ b/app/Http/Controllers/OneTimeTokenController.php @@ -11,14 +11,16 @@ namespace App\Http\Controllers; +use App\Http\Requests\OneTimeToken\OneTimeRouterRequest; use App\Http\Requests\OneTimeToken\OneTimeTokenRequest; +use App\Models\User; use Illuminate\Http\Response; +use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Cache; use Illuminate\Support\Str; class OneTimeTokenController extends BaseController { - use DispatchesJobs; public function __construct() { @@ -74,4 +76,27 @@ class OneTimeTokenController extends BaseController return response()->json(['hash' => $hash], 200); } + + public function router(OneTimeRouterRequest $request) + { + $data = Cache::get($request->input('hash')); + + MultiDB::findAndSetDbByCompanyKey($data['company_key']); + + $user = User::findOrFail($data['user_id']); + + Auth::login($user, true); + + Cache::forget($request->input('hash')); + + $this->sendTo($data['context']); + + } + + /* We need to merge all contexts here and redirect to the correct location */ + private function sendTo($context) + { + + return redirect(); + } } diff --git a/app/Http/Requests/OneTimeToken/OneTimeRouterRequest.php b/app/Http/Requests/OneTimeToken/OneTimeRouterRequest.php new file mode 100644 index 000000000000..93bb35ad3a69 --- /dev/null +++ b/app/Http/Requests/OneTimeToken/OneTimeRouterRequest.php @@ -0,0 +1,45 @@ + 'required', + ]; + } + + protected function prepareForValidation() + { + // $input = $this->all(); + // $this->replace($input); + } +} diff --git a/routes/api.php b/routes/api.php index 0c71a77c6b27..4348c24b679d 100644 --- a/routes/api.php +++ b/routes/api.php @@ -180,5 +180,6 @@ Route::match(['get', 'post'], 'payment_webhook/{company_key}/{company_gateway_id ->name('payment_webhook'); Route::post('api/v1/postmark_webhook', 'PostMarkController@webhook'); +Route::get('token_hash_router', 'OneTimeTokenController@router'); Route::fallback('BaseController@notFound');