我试图为用户授权对视图文件中的某些内容限制,据我所知,可以在View File中使用的Laravel支持的AUTH(GATE,中间件)之间的唯一授权是(策略)auth。策略Auth是通过使用Laravel模型来工作的,而我的数据源不是模型,但我只是从某些Web服务中获取数据。
我创建了一个新策略(Isplatinum)
<?php
namespace AppPolicies;
use AppUser;
use AppWebUser;
use IlluminateAuthAccessHandlesAuthorization;
class isPlatinum
{
use HandlesAuthorization;
/**
* Create a new policy instance.
*
* @return void
*/
public function __construct()
{
}
public function view(WebUser $user){
return $user->user->subscription->type === 'platinum';
}
}
注意:应用程序 Webuser不是模型文件,它只是从WebServices获取用户信息的类。
在我的刀片视图文件中
@cannot('view',$isPlatinum)
This page is for Platinum Users
@endcannot
给出错误
Undefined variable: isPlatinum (View:
我知道我应该仅将Laravel Policy Auth用于模型,在我的情况下,我应该使用的合适的Laravel Auth是什么?
您没有将isPlatinum
变量传递给查看。您可以与所有视图共享数据:
创建服务提供商如下:
<?php
namespace AppProviders;
use IlluminateSupportFacadesView;
class AuthServiceProvider extends ServiceProvider
{
/**
* Bootstrap any application services.
*
* @return void
*/
public function boot()
{
// method to fetch the webUser?
// $webUser = ;
View::share('isPlatinum', $webUser->user->subscription->type === 'platinum');
}
/**
* Register the service provider.
*
* @return void
*/
public function register()
{
//
}
}