2015-10-26 4 views
1

Я использую систему аутентификации Laravel 5.1 и Laravel по умолчанию.Laravel Аутентификация с условием

В базе данных (MySQL) Я добавляю новый столбец с именем «role». Значение будет 1 для администратора и 2 для участников.

Теперь я хочу предоставить разрешение для входа только для администратора, означает, где значение равно 1. Как я могу это сделать?

+0

Итак, чтобы уточнить, что вы хотите, чтобы администраторы могли делать? Дать разрешение на вход звучит так, как будто вы только хотите, чтобы администраторы могли войти на ваш сайт. – James

+0

Да, я хочу, чтобы только администратор мог войти. – smartrahat

+0

Хорошо, но в чем смысл разрешить участнику зарегистрироваться, если они не могут войти? Или вы хотите просто ограничить часть своего сайта только администраторами? – James

ответ

1

На самом деле я решил. Я просто добавляю этот код в метод postLogin() метода AthenticatesUsers.php.

// If role is equal to 1, user allowed to login 
    // You can change $admin value anytime according to database Design 
    // Example: In role column the value for admin is 2 or A. You just need to change the value of $admin. 
    $userData = User::select('role')->where('email',$request['email'])->first(); 
    $admin = 1; 
    $role = $userData->role; 
    if($role == $admin){ 
     $request['role'] = $role; 
    } 
0

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

При входе в систему пользователя, отправленного в «дом», если вы не указали иначе в AuthController.

внутри вашего routes.php, если вы только что создали GET маршрут, чтобы указать на HomeController (или то, что вы называете это), то вы можете использовать функцию для запуска тестов вы после этого.

routes.php

Route::get('home', '[email protected]');

HomeController

public function index() 
    { 
     //If they are yet to log in then return your normal homepage 
     if (Auth::guest()) 
     { 
      return View::make('home'); 
     } 
     else 
     { 
      //Run your tests here to check their role and direct appropriately 
      //Given you have added the role column to the users table, you can access it like so: 
      //Auth::user()->role 
     } 
    } 
Смежные вопросы