2016-12-08 4 views
1

Я использую, чтобы проверить, является ли пользователь администратором промежуточного программного обеспечения, но с 5.3 его невозможно. Я использовал этот код раньше:Laravel 5.3 middleware (Auth :: user()) = null

if(Auth::guest()) //If the user is just a guest 
    { 
     return redirect("/"); 
    } 
    if(Auth::user()->isAdmin == 1) //If the user is logged in and he is the Admin 
    { 
     return $next($request); 
    } 
    else //If the user is not the admin he can't see this page 
    { 
     return redirect("/"); 
    } 
} 

В настоящее время я пробовал ниже, не повезло. Может ли кто-нибудь указать мне в правильном направлении, как мы можем проверить, является ли пользователь администратором или обычным пользователем?

/** 
* Handle an incoming request. 
* 
* @param \Illuminate\Http\Request $request 
* @param \Closure $next 
* @return mixed 
*/ 
public function handle($request, Closure $next) 
{ 

    if ($request){ 
     if ($request->user()->role == 'Admin'){ 
      return "yes"; 
     } 
    } 

    return $next($request); 
} 
+0

В вашей модели пользователя есть поле isAdmin? Также проверьте, проверяет ли ваша база данных, было ли поле установлено на 1 для пользователя, с которым вы пытаетесь войти в систему. – pseudoanime

+0

'if ($ request-> user() -> role = 'Admin') {' это ключ здесь ... вам нужно использовать '==', удалить вопрос после. – Kyslik

+0

Спасибо, пропустил это, поскольку мне пришлось написать то, что я пробовал. Тем не менее, он говорит, что вам нужно назначить значение по умолчанию, если пользователь не подписан. Я также исправил код благодаря – master

ответ

0

У вас есть только один =. Вы должны использовать == (или быть более строгим с ===).

+0

Спасибо, пропустили это для сообщения. Исправлен код – master

0

Оператор '=' присваивает значение переменной, например. Однако «==» сравнивает что-то с другим.

В этом фрагменте кода:

if ($request){ 
    if ($request->user()->role = 'Admin'){ 
     return "yes"; 
    } 
} 

Вы экранным в «$» запроса объекта и вытягивать роли пользователей из нее. Вы намерены оценить возвращаемый объект $ request с строкой «Admin», однако вы не оцениваете, а можете назначить его.

Чтобы это исправить:

if ($request){ 
    if ($request->user()->role == 'Admin'){ 
     return "yes"; 
    } 
} 

Используйте «==» оператора для сравнения заданного значения со статической строки, которую вы предоставили.

+0

Спасибо, но это не работает, когда пользователь является гостем – master

Смежные вопросы