#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()
работает так, как я хочу. ДА.