2014-10-06 4 views
0

Мне нужна помощь, может ли кто-нибудь сказать мне, правильно ли работает моя работа с профилями пользователей аутентификации? У меня есть следующие файлы:Проверка и фильтры Laravel

файл routes.php (я использовал только две группы, для этого примера)

<?php 
    //home 
    Route::get('/',function() 
    { 
     return Redirect::to('login'); 
    }); 

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

    //login for form 
    Route::post('login','[email protected]'); 

    //routes for admin 
    Route::group(array('before' => 'adminFilter'),function() 
    { 
     Route::get('/adminHomePage',function() 
     { 
      return View::make('adminHome'); 
     }); 
    }); 

    //route for common user 
    Route::group(array('before' => 'commonUserFilter'),function() 
    { 
     Route::get('/commonUserPage',function() 
     { 
      return View::make('commonPage'); 
     }); 
    }); 

    Route::get('logout','[email protected]'); 
?> 

файл filters.php

<?php 
    Route::filter('adminFilter', function($route, $request) 
    { 
     if (Auth::user()->profile != 1) 
     { 
      return Redirect::to('/logout'); 
     } 
    }); 

    Route::filter('commonUserFilter',function($route, $request) 
    { 
     if (Auth::user()->profile != 2) 
     { 
      return Redirect::to('/logout'); 
     } 
    }); 
?> 

файл AuthController.php

<?php 
    public function showLogin() 
    { 
     return View::make('login'); 
    } 

    public function postLogin() 
    { 
     //Get user data from login form 
     $user = array(
     'user' => Input::get('username'), 
     'password' => Input::get('password')); 

     if(Auth::attempt($user,true)) 
     {   
      switch (Auth::user()->profile) 
      { 
       case 1: 
        //home admin 
        return Redirect::to('/adminHomePage'); 
        break; 

       case 2: 
        //home common user 
        return Redirect::to('/commonUserPage'); 
        break; 
      } 
     } 
     else 
     { 
      return Redirect::to('login') 
      ->with('mensaje_error','Incorrect data.') 
      ->withInput(); 
     } 
    } 

    public function logOut() 
    { 
     Auth::logout(); 
     return Redirect::to('/login') 
     ->with('mensaje_error', 'Your session was closed.');   
    } 
?> 
+1

Почему бы вам не проверить его и не увидеть, что происходит? Похоже на меня – Laurence

+0

Я бы перенаправлял пользователей на дом, а не записывал их, когда они не могли просматривать страницу. Конечно, это зависит от того, что вы делаете. – Jerodev

+0

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

ответ

0

Один вопрос безопасности (если вы используете Laravel 4 +)

В routes.php:

Route::post('name', [email protected]); 

Изменить его:

Route::group(array('before' => 'csrf'), function() { 

    Route::post('name', [email protected]); 

}); 

В вашей форме, вы должны добавить следующее: {{ Form::token() }}.


Один маленький совет: Я предпочитаю, чтобы дать всем свои маршруты уникальные имена .. Как это работает вы можете найти here.

+0

Спасибо WQuaniran. Я буду использовать это. – Turcko007