Laravel Передает Данные В Промежуточное Программное Обеспечение С Контроллера

#php #json #laravel #backend #middleware

Вопрос:

Я хочу передать некоторые параметры промежуточному программному обеспечению after после завершения работы контроллера, чтобы аннулировать любые токены сброса пароля, если будет сгенерирован новый.

Мой код таков:

Контроллер

публичная функция resetPasswordRequest(Запрос $запрос) {

 $user = User::where('email', $request-gt;email)-gt;first();   if (!$user) {  throw ValidationException::withMessages([  'message' =gt; 'invalid_email',  ]);  }   $reset_request = Password_reset::create([  'user_email' =gt; $request['email'],  'reset_token' =gt; Helper::makeRandomString(8, true),  ]);   $reset_token = $reset_request['reset_token'];  $user_email = $request['email'];  /*  Helper::sendEmail('pass_reset', $user_email = $request['email'], $reset_token);  */     return response(array('message' =gt; 'success', 'email' =gt; $user_email, 'reset_token' =gt; $reset_token, 'type' =gt; 'reset'), status:200); }  

//Промежуточное программное обеспечение

 public function handle(Request $request, Closure $next) {   $user_data = $next($request);   error_log($user_data);    $user_email = $user_data['email'];  $type = $user_data['reset'];   $tokens = null;   if ($type == 'reset') {  $tokens = Password_reset::where('user_email', '=', $user_email)-gt;where('used', false)-gt;get();  } else if ($type == 'confirmation') {  $tokens = EmailConfirm::where('user_email', '=', $user_email)-gt;where('used', false)-gt;get();  error_log('fffff');  }   error_log('gggg');   //Might not be optimum, need consultation   foreach ($tokens as $column) {  $column['used'] = true;  $column-gt;save();  }   return $next($request); }  

Проблема заключается в том, что я, похоже, не могу найти способ передать эти данные, если я попытаюсь получить к ним доступ с помощью метода содержимого, результатом будет массив символов.

Есть какие-нибудь советы по этому или другому решению, которые я могу использовать?

Ответ №1:

Вам не нужно промежуточное программное обеспечение, потому что сброс пароля почти никогда не является защищенным ресурсом.

Как вы можете войти в систему и перейти на защищенный ресурс, если забыли свой пароль?

Промежуточное программное обеспечение предназначено для защиты маршрутов и соответствующих контроллеров.

В этом случае есть пользователь, который не вошел в систему и хочет сбросить пароль своей учетной записи.

Просто обработайте запрос в контроллере.