UserService.php 922 B

123456789101112131415161718192021222324252627282930313233343536
  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. /** @var CacheService $cacheService */
  13. private $cacheService;
  14. function __construct(){
  15. $this->cacheService = app('CacheService');
  16. }
  17. function hasRoles(User $user, $roles){
  18. $thisRoles=$this->cacheService->getOrExecute("user{$user['id']}->roles",function()use($user){
  19. return $user->roles;
  20. });
  21. return !!$roles->intersect($thisRoles)->count();
  22. }
  23. function getPermittingOwnerIds($user=null){
  24. if(!$user)return [];
  25. return $this->cacheService->getOrExecute("user{$user['id']}->getPermittingOwnerIds",function()use($user){
  26. return $user->getPermittingOwnerIdsAttribute() ?? [];
  27. })??[];
  28. }
  29. }