UserService.php 961 B

12345678910111213141516171819202122232425262728293031323334353637
  1. <?php
  2. namespace App\Services;
  3. use App\Authority;
  4. use App\Owner;
  5. use App\User;
  6. use Illuminate\Support\Facades\Cache;
  7. use Illuminate\Support\Facades\Gate;
  8. use App\Traits\ServiceAppAop;
  9. class UserService
  10. {
  11. use ServiceAppAop;
  12. protected $modelClass=User::class;
  13. /** @var CacheService $cacheService */
  14. private $cacheService;
  15. function __construct(){
  16. $this->cacheService = app('CacheService');
  17. }
  18. function hasRoles(User $user, $roles){
  19. $thisRoles=$this->cacheService->getOrExecute("user{$user['id']}->roles",function()use($user){
  20. return $user->roles;
  21. });
  22. return !!$roles->intersect($thisRoles)->count();
  23. }
  24. function getPermittingOwnerIds($user=null){
  25. if(!$user)return [];
  26. return $this->cacheService->getOrExecute("user{$user['id']}->getPermittingOwnerIds",function()use($user){
  27. return $user->getPermittingOwnerIdsAttribute() ?? [];
  28. })??[];
  29. }
  30. }