2013-06-20 87 views
0

我有包括兩個步驟的用戶登錄系統:Laravel 4 - 動態路由/瀏覽次數

  1. 用戶登錄
    1. 嘗試綁定用戶到AD(這是LDAP驗證模塊)
    2. 如果用戶可以通過AD登錄,檢查,如果用戶在用戶表中存在
    3. 如果用戶沒有在用戶表中,添加它們 - 只有「用戶名」和「好聽的名字叫」
      1. 如果用戶i他們將不屬於任何團隊,並會通知他們聯繫他們的經理繼續進行賬戶設置。
    4. 加載用戶列到Laravel會議credentials - 所以現在我們有AD登錄名,「好」的域名(倒數第一),選擇團隊ID等..沒有密碼,因爲用戶已經通過身份驗證。
  2. 團隊選擇 - 表userTeams數據透視表。
  3. 路由用戶組隊儀表盤

現在,我有這樣的路線:

// This group forces user to be logged in; auth() will check if user has selected a team and ensures the team exists. 
Route::group(array('before' => 'auth'), function() { 
    // Handle team - URL will be /dashboard -- Team controller based on view_name from `teamUsers` table 

    $teamUser = php_sapi_name() == "cli" ? null : @TeamUser::find(Session::get('credentials.team')); 
    if(!empty($teamUser)) { 
    $team = ucfirst(strtolower($teamUser->teams()->first()->view_name)); 
    Route::controller('dashboard', 'Team'.$team.'Controller'); 
    } 

    // Handle index 
    Route::controller('/', 'IndexController'); 
}); 

不過,我不覺得這是一個非常優雅的解決方案 - 主要是因爲我不能做反向路由做這個方法。

任何提示或建議?

回答

1

我個人會選擇在自己的過濾器而不是路由組關閉中執行此邏輯,因爲您所做的只是根據變量(同一件Auth過濾器所做的)將用戶「過濾」到不同的路由。

更新

Route::filter('whatever', function() 
{ 
    $teamUser = php_sapi_name() == "cli" ? null : @TeamUser::find(Session::get('credentials.team')); 

    if (empty($teamUser)) 
    Redirect::route('IndexController'); 
}); 

Route::group(array('before' => 'auth|whatever', function() 
{ 
    Route::controller('someController'); 
    Route::controller('/', 'IndexController'); 
})); 
+0

你能否提供一個例子嗎? –

+0

我明白你的意思了..但是,我仍然無法從中獲得相反的路線。有什麼想法嗎? –

+0

PS:Route :: controller('someController') - 'someController'是動態名稱,比如''Team'。$ team.'Controller'' –