#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:
Вам не нужно промежуточное программное обеспечение, потому что сброс пароля почти никогда не является защищенным ресурсом.
Как вы можете войти в систему и перейти на защищенный ресурс, если забыли свой пароль?
Промежуточное программное обеспечение предназначено для защиты маршрутов и соответствующих контроллеров.
В этом случае есть пользователь, который не вошел в систему и хочет сбросить пароль своей учетной записи.
Просто обработайте запрос в контроллере.