Laravel:如果试用期结束,则重定向从每个链接升级页面

时间:2016-09-14 09:12:30

标签: php laravel redirect

我是Laravel框架的新手。我添加了30天免费试用功能。在免费试用结束时,系统会要求用户升级会员资格。如果用户尝试登录30天后,他将自动重定向到升级页面并登录。他已登录,以便可以确定升级哪个用户的升级。但登录后,他目前在升级页面上,可以导航到任何页面。

我只是想要,如果尝试导航到其他页面,那么他应该被重定向到升级页面。

为此,我可以将检查和重定向代码添加到每个路由和控制器操作,但我不想这样做。有没有其他方法可以执行此任务,我只需要编写一次检查,它将适用于所有页面。

这是我的支票代码:

if($settings->free_registration && Auth::user()->role =='registered')
{
    $user = User::find(Auth::user()->id);
    $create_date = strtotime($user->created_at);
    $current_date = strtotime(date('Y-m-d h:i:s'));
    $datediff = $current_date - $create_date;
    $date_difference = $datediff / (60 * 60 * 24);
    $user_name = $user->username;
    if($date_difference > 30){
        return Redirect::to('user/'.$user_name.'/upgrade_subscription')->with(array('note' => 'Your trial period has ended', 'note_type' => 'error'));
    }
}

3 个答案:

答案 0 :(得分:1)

您可以在此处使用中间件。将所有“试用检查”代码放入中间件并将所有路由分组,除了登录此中间件。希望这会成功。

看看:

https://laravel.com/docs/5.3/middleware#defining-middleware

答案 1 :(得分:0)

您可以使用Middleware

  

当然,可以编写其他中间件来执行各种操作   除身份验证之外的任务CORS中间件可能是   负责为所有回复添加正确的标题   你的申请。日志记录中间件可能会记录所有传入的请求   到你的申请。

您的中间件会检查用户是否拥有有效的许可证,并在其他地方重定向,如果不是这样的话。

答案 2 :(得分:0)

您可以将代码放在名为CheckSubscription的中间件提供程序中,并使用app/Http/Kernel.php文件下的别名将其注册到应用程序。

protected $routeMiddleware = [
    //other middlewares
    'subscription' => \App\Http\Middleware\CheckSubscription::class,
]

根据您设置routes文件的方式(白色Route::group)或者如果您在课程中使用__constructor来检查中间件,您可以注册您提供的别名

有关Laravel Middleware的更多信息,请点击此处。希望它有点清楚!