Laravel по-русски

Русское сообщество разработки на PHP-фреймворке Laravel.

Ты не вошёл. Вход тут.

#1 01.06.2019 02:02:53

Проверка аутентификации в роуте или конструкторе контроллера

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

Route::namespace('Admin')->group(function () {		
	Route::get('/admin', 'UserController@index');
	Route::get('/admin/login', 'UserController@login');		
	Route::post('/admin/sign_in', 'UserController@sign_in');
	Route::get('/admin/sign_out', 'UserController@sign_out');	
});

Читал конечно же доку, ни из конструктора контроллера, ни из роутов не работает Auth::user() - чтобы проверить что пользователь админ и пустить или нет его в админку, проверять в каждом методе контроллера видится мне каким то бредом, уверен что не так быть должно, но уже не знаю где искать т.к. даже код из оф документации неработает ну или я неправильно его использую, но устал уже играть в бубен....

Может есть еще и вариант как избежать холста роутов, объявлять каждый маршрут (а это например все CRUD) лично мне кажется тоже глупостью..... или нет? smile

Не в сети

#2 02.06.2019 14:21:15

Re: Проверка аутентификации в роуте или конструкторе контроллера

Не в сети

#3 02.06.2019 21:40:56

Re: Проверка аутентификации в роуте или конструкторе контроллера

Спасибо за помощь и содержательный разьясняющий ответ....
Если я все правильно понял из того скудного слова - то чем городить такие костыли останусь как я на старом добром CI до момента пока не приведут этот в какое то адекватное изделие big_smile

Не в сети

#4 02.06.2019 23:07:48

Re: Проверка аутентификации в роуте или конструкторе контроллера

нужно как то редиректить незалогиненных пользователей на страницу входа, желательно из роутов, мой список роутов

Почитайте документацию внимательно еще раз, главы авторизации, аутентификации и посредники(ссылку я вам давал выше), вам не нужно городить велосипед. Все уже сделано за вас, разберитесь каким образом происходит проверка пользователя и как добавить кастомные посредники. Примеров на эту тему за глаза. Все роуты закрываются за посредниками, без каких-либо велосипедов. И еще почитайте вот Для тем "как сделать" или "помогите".

Не в сети

#5 02.06.2019 23:14:29

Re: Проверка аутентификации в роуте или конструкторе контроллера

Я уже разобрался, посредник сделал, немного неудобно конечно... возможно дело привычки
Остается вопрос с простынями роутов, еслиб подсказали было бы круто, меньше времени бы потратил, как полностью разберусь ответы напишу в теме чтобы другие потом могли посмотреть

Не в сети

#6 03.06.2019 09:35:53

Re: Проверка аутентификации в роуте или конструкторе контроллера

Остается вопрос с простынями роутов

Для crud Resource Controllers. Первые абзацы описание, в таблице  обьяснения как сопоставляются роуты с именами методов и типами запросов.

Изменено lodar (03.06.2019 09:36:58)

Не в сети

#7 13.06.2019 21:52:19

Re: Проверка аутентификации в роуте или конструкторе контроллера

Вроде бы разобрался с роутами, не уверен на 100% - может что упустил , но со своей стороны вижу огромное неудобство. Смысл в том что я активно использую ajax  админке, теже DataTables - очень неудобно делать запрос на получение данных - нужно прописывать маршрут т.к. мои функции отличаются от стандртных ресурсных, нет ли способа обойти? - сравню сразу же с тем же CI - там вызов контроллер/метод - может обходится без объявления маршрута что мега удобно в определенных ситуациях (знаю что есть пакет для laravel для работы с DataTables  - не хочу его использовать, хочу использовать обычные методы)

Route::get('/user/login', 'Admin\UserController@login');
Route::post('/user/sign_in', 'Admin\UserController@sign_in');
Route::get('/user/sign_out', 'Admin\UserController@sign_out');

Route::group(['namespace' => 'Admin', 'middleware' => 'checkadmin'], function(){
	
	Route::post('/admin/php_modules/get_table', 'PhpModulesController@get_table');	
	Route::resource('/admin/php_modules', 'PhpModulesController');	
	
});

На теперешний момент вижу крайне негибкую вещь - объявлять маршрут для каждого запроса -
Route::post('/admin/php_modules/get_table', 'PhpModulesController@get_table');   
В итоге получим простынь из роутов, что негибко, неудобно и абсурдно.
Более опытные - подскажите , это так и есть или я все же что то упустил?

Не в сети

Подвал раздела