Laravel по-русски

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

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

#1 03.11.2015 19:05:58

Max_G
Откуда: Одесса, Украина
Сообщений: 55

middleware => auth

Route::group(['middleware' => 'auth', 'prefix'=>'message'], function() {
...
});

Есть два типа зарегистрированных существ таблице users. Поле is_admin : 0 или 1.
Допустим, я хочу ать доступ  к /message только зарегитсрированным. Код выше работает.
Как мне теперь сделать доступ к /admin только юзерам с is_admin=1?

Изменено Max_G (03.11.2015 19:06:39)

Не в сети

#2 03.11.2015 22:54:18

Николай

Re: middleware => auth

Придётся свой middleware написать и использовать его в роутах.

#3 03.12.2015 17:44:49

Arat
Откуда: Киев
Сообщений: 116

Re: middleware => auth

Такая же проблема. Нужно если юзер не админ, бросить на 404. Если админ - велкам в раздел ))
В четвертой версии это делал, с пятой возникают вопросы (

Не в сети

#4 03.12.2015 22:43:09

zpnick

Re: middleware => auth

Какие вопросы?

#5 04.12.2015 08:03:05

avpet
Откуда: Russia, Omsk
Сообщений: 7
Сайт

Re: middleware => auth

в таблицу users добавить поле isAdmin,
в модель User добавить

	public function isAdmin() {
		
		if ($this->isAdmin == 1) 
		        return true;
	}

в middleware с алиасом auth перед

if ($this->auth->guest() ) 

добавить

		if ($this->auth->check())
		{

			if ( ! $this->auth->user()->isAdmin() ) {

				Auth::logout();
				return redirect()->guest('/куда-надо');
			}
		}

как-то так)

Изменено avpet (04.12.2015 08:10:09)

Не в сети

#6 04.12.2015 09:03:41

Arat
Откуда: Киев
Сообщений: 116

Re: middleware => auth

в middleware с алиасом auth перед

if ($this->auth->guest() ) 

добавить

Нубский вопрос... Где этот скрипт искать?)))))

Не в сети

#7 04.12.2015 09:43:40

zpnick

Re: middleware => auth

Arat пишет:

Нубский вопрос... Где этот скрипт искать?)))))

Опасный )). App\Http\Middleware\Authenticate.php

Лично я бы для этой задачи создал свой middleware
По шагам:
1) php artisan make:middleware AdminMiddleware
2) Там уже делаешь свою проверку на админа(это уже твои заморочки как ты его вычисляешь), в моём примере через пакет Zizaco/entrust:
namespace App\Http\Middleware;
use Closure;
class AdminMiddleware
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
        if (!\Auth::user()->hasRole(['admin']))
        {
            return redirect()->route('404');
        }
       
        return $next($request);
    }
}
3) Добавляешь данный Middleware в app/Http/Kernel.php в поле  $routeMiddleware:
'admin' => \App\Http\Middleware\AdminMiddleware::class,
4) Используешь его в роутах, пример:
Route::group(['middleware' => 'auth'], function(){
     //тут роуты для которых нужна авторизация
     Route::group(['middleware' => 'admin'], function(){
             //тут роуты только для админа + авторизация
     });
});

#8 04.12.2015 10:14:38

avpet
Откуда: Russia, Omsk
Сообщений: 7
Сайт

Re: middleware => auth

123 пишет:
Arat пишет:

Нубский вопрос... Где этот скрипт искать?)))))

Опасный )). App\Http\Middleware\Authenticate.php

Лично я бы для этой задачи создал свой middleware

Само собой свой smile , но проще объяснить на том что есть

Не в сети

#9 04.12.2015 11:50:37

Arat
Откуда: Киев
Сообщений: 116

Re: middleware => auth

123 пишет:

Лично я бы для этой задачи создал свой middleware
По шагам:

Отлично! Спасибо! Вот теперь все ясно и заработало как нужно!

Не в сети

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