\App\Policies\OwnerSundryFeeDetailPolicy::class, \App\Requirement::class => \App\Policies\RequirementPolicy::class, // 'App\Model' => 'App\Policies\ModelPolicy', CustomerLog::class => CustomerLogPolice::class, CustomerLogStatus::class => CustomerLogStatusesPolice::class, ]; /** * Register any authentication / authorization services. * * @return void */ public function boot() { $this->registerPolicies(); $isSuperAdmin = null; if(!Schema::hasTable('users')){return;} /** @var CacheService $cacheService */ $cacheService = app('CacheService'); Gate::before(function ($user)use(&$isSuperAdmin) { if($isSuperAdmin===null){ $isSuperAdmin=$user->isSuperAdmin(); } if ($isSuperAdmin) { Cache::put('isSuperAdmin'.$user['id'], true); }else{ Cache::put('isSuperAdmin'.$user['id'], false); } }); if(!Schema::hasTable('authorities')){return;} $authorities=$cacheService->getOrExecute('authorities',function (){ return Authority::with('roles')->get(); }); foreach($authorities as $authority) { Gate::define($authority->alias_name, function($user) use ($authority,$cacheService) { if(Cache::get('isSuperAdmin'.$user['id'])){ if($authority['permission']=='允许'){ return true; } } $authorityRoles=$cacheService->getOrExecute("authority{$authority['id']}->roles",function ()use($authority){ return $authority->roles; }); /** @var UserService $userService */ $userService = app('UserService'); return $userService->hasRoles($user,$authorityRoles); }); } } }