2016-02-11 2 views
1

В моем приложении я использую аутентификацию по умолчанию для входа моих пользователей в свою панель. Теперь я хотел бы создать бэкэнд для сторонников и один для админов. Я использую этот код в тот момент, чтобы войти в систему как администратор:laravel5.1 Вручную аутентифицировать пользователей

<?php 

namespace App\Http\Controllers\Admin; 

use Illuminate\Http\Request; 
use App\Http\Requests; 
use App\Http\Controllers\Controller; 
use App; 
use Artisan; 
use Validator; 
use Auth; 

class AdminLoginController extends Controller 
{ 

    public function index() 
    { 
     return view('admin.login'); 

    } 

    public function authenticate(Request $request) 
    { 
     if (Auth::attempt(['username' => $request->username, 'password' => $request->password, 'id' => 1])) 
     { 
      // Authentication passed... 
      dd("correct"); 
     } 
     else 
     { 
      dd("login data incorrect!"); 

     } 
    } 

} 

Как я могу теперь использовать хорошо известные переадресовывает после входа в систему. В моей AuthController я использую для пользователей я использую этот код:

/** 
* Where to redirect users after login/registration. 
* 
* @var string 
*/ 
protected $redirectTo = '/dashboard'; 
protected $redirectAfterLogout = 'auth/login'; 
protected $redirectPath = '/dashboard'; 

1.) Как я могу использовать это в моем коде выше? Я хотел бы перенаправить администраторов, зарегистрированных в приложение, таких как пользователи, на указанные URL-адреса, используя эту функцию laravel.

2.) Каков наилучший способ проверить больше «идентификаторов» в инструкции if? Потому что будет более одного администратора.

+0

пожалуйста, объясните, сможете ли вы успешно сопоставить информацию пользователя? Во-вторых, почему вы не используете ролевые пакеты для laravel, например: 'https: // github.com/Zizaco/entrust' 3rd вместо того, чтобы передавать поле id_ place' user_type' в пользовательской таблице. и проверьте это во время входа в систему – Qazi

ответ

1

Прежде всего, вы проверяете имя пользователя, пароль и идентификатор. Таким образом, ваша функция будет проверяться только пользователем с Id = 1. Вам не нужно указывать идентификатор.

Теперь для перенаправления вы можете сделать функцию, которая возвращает обратно URL-адрес на основе типа пользователя. Вот очень простой example`

public function getRedirectUrl(){ 
    if(auth()->user()->isAdmin()){ 
     return url('/admin-dashboard'); 
    } 
    elseif(auth()->user()->isUser()){ 
    return url('/user-dashboard') 
    } 
} 

Убедитесь, что вы IsAdmin() и isUser() функцию, определенную в модели пользователя как

public function isAdmin(){ 
    return $this->user_type == UserType::ADMIN; 
} 

Таким образом, в вашей функции аутентификации вобще return redirect($this->getRedirectUrl())

+0

Большое спасибо, но как сделать проверку в функции isAdmin(), чтобы проверить, совпадает ли идентификатор пользователя с массивом идентификаторов? Использование идентификаторов для проверки привилегий администратора - лучшее решение для меня. –

+0

Подумайте заранее, скажем, ваше приложение теперь имеет 10000 пользователей. Как вы будете отслеживать идентификатор для администратора, для клиента ??? Вам необходимо сгруппировать пользователей на основе другого столбца. Скажите user_type_id. затем дайте всем вашим администраторам значение 10, значение пользователя 1. Затем в isAdmin() вы можете просто проверить, $ this-> user_type_id == 10; – themightysapien

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