2016-07-19 59 views
0

我實現了角色/權限系統。現在我想的方法添加到Laravel的路由器,所以我可以做這樣的事情:延伸Laravel路由器

Route::get('sales', '[email protected]')->allow('Salesman'); 

我知道,我可以使用@can('Salesman')(查看)$user->can('Salesman')(控制器),但我發現這麼多可讀我試圖這樣做的方式,因爲我將能夠看到路徑文件中的所有角色權限訪問。

回答

0

正如您使用立面生成路線。這應該很容易。立面可以在config/app.phpfacades陣列中被否決。

您可以生成自己的Facade class並將其替換爲您的本機。其實是一個Router class。爲了實現您需要擴展和覆蓋以下順序的功能:

  • 門面
  • 路由器:: newRoute
  • Route

通過延長最後一個和返回那些路由器的newRoute方法,您將能夠否決Laravel的邏輯。

0

您可以覆蓋路由器類,然後將其註冊到服務容器中以供Route外觀使用。

更清楚:

  • 寫一個擴展Laravel的路由器類(我認爲Router類)。要找到它,請打開Route外觀,然後找到其服務提供商。從那裏,應該很容易找到路由器類。
  • 編寫一個覆蓋該路由器的類。確保延長您之前找到的課程。
  • 編寫一個覆蓋路由器服務的服務提供者。使用您在Route外觀中找到的相同密鑰名稱註冊您的服務的實際方法。

而且應該是這樣。您的服務現在由Route自動選取。

+0

做完所有你說的事後,我得到這個異常:應用程序\提供程序\ RouteServiceProvider :: boot(應用程序\路由器$路由器)的聲明應該與Illuminate \ Foundation \ Support \ Providers \ RouteServiceProvider :: boot兼容(照亮\ Routing \ Router $ router) – Alan

+0

您可能正在從Laravel擴展您的提供商。這不是必需的,可能會導致類似問題。只要閱讀Laravel在該提供程序('RouteServiceProvider')中所做的操作,就可以像這樣做。但用你自己的替換'路由器'。 – vfsoraki

+0

我沒有擴展提供者。我正在擴展laravel路由器。 – Alan