UserService.php 864 B

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