Laravel: разрешить временный доступ к части сайта - PullRequest
0 голосов
/ 10 июня 2018

В моем приложении Laravel информация профиля пользователя включает конфиденциальные данные, такие как номер налогового файла и банковские реквизиты.Поскольку приложение часто используется с помощью мобильного телефона (и люди регулярно теряют свой мобильный телефон), я разделил профиль пользователя на «финансовые данные» и «другие данные».

Если кто-то хочет получить доступ к финансовым даннымони должны предоставить пароль пользователя.Маршрут принимает как POST, так и GET, и вот код контроллера:

public function showDetails(Request $request)
{
    if ($request->isMethod('post')) {
        $user = Auth::user();
        if (Hash::check($request->password, $user->password)) {
            return view('staff.finance-info', compact('user'));
        } else {
            $request->session()->flash('auth_failed', 'Password incorrect');
        }
    }

    return redirect()->route('staff.profile');
}

Я принимаю GET, чтобы я мог изящно перенаправить запрос в профиль «Прочие сведения».

Это прекрасно работает для просмотра деталей, однако теперь мне нужно указать маршруты для обновления информации.(Один для банковских реквизитов, один для налоговых и т. Д.).Я не хочу, чтобы пользователю приходилось повторно вводить свой пароль на каждой из этих страниц.

Каков типичный способ обработки этого сценария?Возможно, выпуская какой-то токен?Должен ли я просто создать случайный токен и сохранить его в качестве значения с истекающим сроком в сеансе?Какие еще есть варианты?

1 Ответ

0 голосов
/ 10 июня 2018

Вы можете сохранить сеанс с именем finance как true после получения пароля для просмотра и проверки последующей проверки его существования для просмотра и обновления.

Установите здесь значение сеанса

   if (Hash::check($request->password, $user->password)) {
        session("finance",true);
        return view('staff.finance-info', compact('user'));
    } else {
        $request->session()->flash('auth_failed', 'Password incorrect');
    }

И проверять перед view и update.Это для view

  if(session("finance")){
      $user = Auth::user();
      return view('staff.finance-info', compact('user'));
  }

Такая же проверка для update

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...