robertboes / laravel-portal
Laravel Portal - 简单创建服务于访客和认证用户的单一路由
dev-master
2019-07-18 14:12 UTC
Requires
- php: ^7.1
- illuminate/support: 5.8.*
Requires (Dev)
- orchestra/testbench: 3.8.*
- phpunit/phpunit: ^7.0
- scrutinizer/ocular: ^1.6
This package is auto-updated.
Last update: 2024-09-19 01:44:51 UTC
README
简单创建服务于访客和认证用户的单一路由。
为什么选择这个包?
想象一下你希望访客和用户都能看到的路由/页面。通常你将创建一个路由,例如 Route::get('/', AppController::class)
,在这个控制器中,你会检查用户是否已认证。你的控制器可能看起来像这样
<?php class AppController { public function __invoke() { if (Auth::check()) { return $this->dashboard(); } return $this->guestPage(); } public function guestPage() { $flights = \App\Flight::where('active', 1) ->orderBy('date', 'desc') ->take(10) ->get(); return view('pages/guest/index', [ 'flights' => $flights, ]); } protected function dashboard() { $flights = Auth::user()->flights->where('active', 1) ->orderBy('data', 'desc') ->take(5) ->get(); return view('pages/auth/index', [ 'flights' => $flights, ]); } }
这是一个非常基础的例子,但在这里,当用户认证或不认证时,你将返回不同的视图+数据。Laravel Portal 是为了消除认证检查并将此从控制器中分离出来而创建的。你的控制器(或方法)可以专注于它们需要执行的任务。这是通过添加一个中间件并根据认证来切换预期操作来实现的。
安装
你可以通过 composer 安装此包
composer require robertboes/laravel-portal
用法
使用配置
在配置中定义你的 "route_actions"。数组索引对应于你的 "路由名称",应该包含至少一个访客操作和一个认证操作。这些只是将到控制器方法的映射。一个例子如下
'route_actions' => [ 'app' => [ 'guard' => 'web', 'guest' => \App\Controllers\HomeController::class . '@__invoke', 'auth' => \App\Controllers\DashboardController::class . '@__invoke', ], 'ajax.stats' -> [ 'guest' => 'App\Controllers\StatsController@global', 'auth' => 'App\Controllers\StatsController@user', ], ],
然后你可以在你的路由文件中引用此配置。你只需传递路径(URL)和路由操作,例如 "ajax.stats"
Route::portal('/', 'app'); Route::group(['middleware' => ['ajax']], function () { Route::portal('/ajax/stats', 'ajax.stats'); });
访问该路由 your-laravel.app/
的用户将自动看到正确的版本。访客用户将只能看到公开页面,登录用户将看到他们的仪表板。这适用于任何路由,JSON 路由,并且与任何守卫都兼容。
测试
composer test
变更日志
请参阅 变更日志 了解最近更改的更多信息。
贡献
请参阅 贡献指南 了解详情。
鸣谢
许可证
MIT 许可证 (MIT)。有关更多信息,请参阅 许可证文件。
Laravel 包模板
此包是使用 Laravel 包模板 生成的。