Это очень длинный вопрос для (я думаю) очень простой ответ, но я полный новичок в Laravel, и мне нужно знать, обращаюсь ли я к нему правильно путь.Laravel 5 Аутентификация: make Контроллер решает, какие методы являются общедоступными
Что я сделал
Я последовал за Intermediate Tutorial и изменил его только чуть-чуть, и теперь у меня есть простой список задач, который использует проверку подлинности. Я имел это в моем TaskController
конструктор:
public function __construct(TaskRepository $tasks)
{
$this->middleware('auth');
}
Проверяется, если пользователь вошел в систему, прежде чем запускать какие-либо методы, так что я просто нужно, чтобы называть их, как это в моем routes
файле:
Route::get('/home', '[email protected]');
Route::get('/tasks', '[email protected]');
Тогда Я хотел удалить требование проверки подлинности для метода index
, чтобы все пользователи могли видеть домашнюю страницу (где я перечисляю все задачи), и только прошедшие проверку подлинности пользователи могут видеть страницу/tasks (где я перечисляю только пользовательские задачи и позволяют их удалить). Мне удалось сделать это следующим образом:
1) Я удалил $this->middleware('auth')
из TaskController
конструктора
2) Я изменил мой routes
файл выглядеть следующим образом:
Route::get('/home', '[email protected]');
Route::get('/tasks', [
'middleware' => 'auth',
'uses' => '[email protected]'
]);
Хорошо, это работает, но :
То, что я хочу достичь
Я не хочу иметь эту логику в файле маршрутов, я хочу, чтобы мой контроллер решил, какие методы являются общедоступными, а какие нет. Но я застрял. Я думаю, что это должно быть примерно так:
class TaskController extends Controller
{
/**
* Display a list of all current tasks
*/
public function index()
{
return view('tasks.index', [
'tasks' => Task::orderBy('created_at', 'asc')->get()
]);
}
/**
* Display a list of all of the logged user's task.
*
*/
public function indexUser(Request $request)
{
if (Auth::check() {
return view('tasks.index_user', [
'tasks' => $this->tasks->forUser($request->user()),
]);
} else {
//This is what I don't know how to do:
redirect_to_login
}
}
}
Как я могу это достичь?
Ohhhhh я полностью пропустил, чтобы проверить это! Конечно! Так много, чтобы учиться :) –