2016-06-08 2 views
1

У пользователей есть поле в базе данных под названием verified, которое является логическим. По умолчанию установлено значение 0, а затем устанавливается на «1», когда пользователь следует по ссылке подтверждения, отправленной им по электронной почте при регистрации.Только зарегистрированные пользователи, которые были проверены в Laravel 5.2

Мне нужны пользователи, у которых при попытке входа в систему было выбрано это значение boolean, равное 0, и сообщение на экран, объясняющее, почему они были отклонены. Пользователи, у которых установлен флажок «1», будут регистрироваться, как обычно.

Я написал эту «» аутентифицированного метод в AuthController.php, этот метод используется на «» handleUserWasAuthenticated методом в AuthenticatesUsers.php

public function authenticated($request, $user) 
    { 
     if($user->verified==false) 
     { 
      flash('you are not verified'); 
      return redirect('/login'); 
     } 

     return redirect('/'); 
    } 

Здесь «handleUserWasAuthenticated» метод, который использует его.

protected function handleUserWasAuthenticated(Request $request, $throttles) 
{ 
    if ($throttles) { 
     $this->clearLoginAttempts($request); 
    } 

    if (method_exists($this, 'authenticated')) { 
     return $this->authenticated($request, Auth::guard($this->getGuard())->user()); 
    } 

    return redirect()->intended($this->redirectPath()); 
} 

Это в настоящее время не работает. Проверенные пользователи регистрируются и отправляются на домашнюю страницу. Тем не менее, не проверенные пользователи также регистрируются, но возвращаются на другую страницу.

Я забыл упомянуть, что не написал второй метод выше, он был сгенерирован, как и другие методы в «AuthenticatesUser.php», когда я использовал команду make: auth.

+0

Попробуйте использовать после проверки Крючок - https://laravel.com/docs/5.2/validation. Если пользователь зарегистрирован, но не проверен. Сначала вы проверяете, зарегистрирован ли он (если он не выкинул его сразу), а затем проверьте, можно ли подтвердить сообщение об ошибке или остановить вход в систему. – Bugfixer

ответ

0

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

Возможное решение выйти из системы, если пользователь не проверен:.

if($user->verified==false) { 
    \Auth::logout(); 
    flash('you are not verified'); 
    return redirect('/login'); 
} 
+0

Спасибо. Есть ли лучший способ в атрибуте AuthenticatesUsers ввести этот код? – DanielPahor

0

попробовать это

if (Auth::user()->verified == 1) 
{ 
    return Redirect::to('/dashboard'); 
} 
Смежные вопросы