我正在尝试创建适用于特定域的过滤器,并在用户超过配额时从他们尝试访问的任何页面重定向用户。到目前为止,代码根本没有重定向。
以下是我目前在filters.php
中的内容:
Route::filter('domain', function () {
if (stripos(Request::root(), Config::get('domains.main')) !== false) {
if (Auth::check()) {
$user = Auth::user();
$max_quota = Plan::where('id', $user->plan_id)->where('is_active', true)->pluck('max_quota');
$quota_used = Quota::where('user_id', $user->id)->count();
if (empty($max_quota)) {
return Redirect::to('account/error/inactive');
} elseif ($quota_used >= $max_quota) {
return Redirect::to('account/error/over_quota');
}
}
}
});
即使我将其放在routes.php
下:
Route::group(['domain' => Config::get('domains.main')], function () {
Route::filter('*', function () { /* Same code here... */ });
}
然后它将进入过滤器功能,成功检查标准,但重定向仍然不会发生。
我想我在这里缺少一个以上的关键点。想法?
答案 0 :(得分:0)
为了完成这项工作,我需要改变:
Route::group(['domain' => Config::get('domains.main')], function () {
要:
Route::group(['domain' => Config::get('domains.main'), 'before' => 'domain'], function () {
我还需要为此行添加重定向循环保护:
if (Auth::check()) {
这样就变成了:
if (Auth::check() && !strpos(Request::fullUrl(), 'account/error')) {