Настраиваемый логин перенаправления Laravel

#php #laravel #laravel-5.6 #laravel-5.7

#php #laravel #laravel-5.6 #laravel-5.7

Вопрос:

Я пытаюсь установить правило, по которому, если пользователь является Worker или Auditor и входит в систему, он будет перенаправлен на /post в противном случае он будет перенаправлен на /charts . По умолчанию LoginController.php я пытался сделать что-то вроде этого:

 $redirectAuth = Auth::user()->user_type = 'Worker' || Auth::user()->user_type = 'Auditor'
        ? '/post'
        : '/charts';

protected $redirectTo = $redirectAuth;
  

Я получаю эту ошибку:

синтаксическая ошибка, неожиданный ‘$redirectAuth’ (T_VARIABLE), ожидающая функция (T_FUNCTION) или const (T_CONST)

Я что-то неправильно набираю здесь? Я ценю любой ответ, спасибо.

Редактировать:

С помощью @Karl Hill я смог создать свой индивидуальный логин:

 public function redirectTo()
{
    $userType = auth()->user()->user_type;

    return $userType == 'Worker' || $userType == 'Auditor' ? '/charts' : 'brethren';
}
  

но, конечно, это тоже будет работать:

 switch ($type) {
    case 'Worker':
    case 'Auditor':
        return '/charts';
    default:
        return '/post';
}
  

В зависимости от ваших предпочтений в кодировании.

Комментарии:

1. Эта ошибка выглядит так, как будто вы пытаетесь вызвать функцию для установки свойства класса. Вы не можете вызывать функции там.

2. И если вы переместите этот код в лучшее место — вам понадобятся двойные знаки == для сравнения. (Одиночный для присвоения значения).

3. Я пытался это сделать $redirectAuth = Auth::user()->user_type == 'Worker' || Auth::user()->user_type == 'Auditor' , но я не уверен, почему я все еще получаю ту же ошибку, куда мне поместить выражение?

4. @JustinF пожалуйста, обновите свой вопрос и добавьте весь код LoginController, который может помочь нам в том, как вы изменили систему аутентификации laravel

5. Да, пожалуйста, включите остальной код! Возможно, мне действительно сложно частично понять проблему.

Ответ №1:

В LoginController удалите следующую строку.

 protected $redirectTo = '/home'; 
  

Затем добавьте новый метод redirectTo() в LoginController. redirectTo() Метод имеет приоритет над redirectTo свойством.

 public function redirectTo()
{
    $type = auth()->user()->user_type();

    // Check user type
    switch ($type) {
        case 'Worker':
            return '/post';
        case 'Auditor':
            return '/charts';
        default:
            return '/login';
    }
}
  

Комментарии:

1. То, что я сделал, это $type = auth()->user()->user_type; и сделал небольшую часть того, что return $userType == 'Worker' || $userType == 'Auditor' ? '/post' : '/chart'; redirectTo() работает так, как я хочу. ДА.