Socialite avec Laravel

        
            composer require laravel/socialite
        
    
        
            -- app
            ---- Repositories
            ------ Contracts
            -------- UserRepositoryInterface.php
            -------- BaseRepositoryInterface.php
            ------ Eloquent
            -------- UserRepository.php
            -------- BaseRepository.php
        
    

UserRepositoryInterface.php

        
        < ?php // supprimer l'espace
            namespace App\Repositories\Contracts;

            use App\Model\User;
            use Illuminate\Support\Collection;

            interface UserRepositoryInterface
            {
            public function all(): Collection;
            }
        
    

BaseRepositoryInterface.php

        
        < ?php

        namespace App\Repositories\Contracts;


        use Illuminate\Database\Eloquent\Model;

        /**
        * Interface BaseRepositoryInterface
        * @package App\Repositories
        */
        interface BaseRepositoryInterface
        {
        /**
            * @param array $attributes
            * @return Model
            */
        public function create(array $attributes): Model;

        /**
            * @param $id
            * @return Model
            */
        public function find($id): ?Model;
        }

        


BaseRepository.php

        
            
            < ?php

            namespace App\Repositories\Eloquent;

            use App\Repositories\Contracts\BaseRepositoryInterface;
            use Illuminate\Database\Eloquent\Model;

            class BaseRepository
            //implements BaseRepositoryInterface
            {
                /**
                 * @var Model
                 */
                 protected $model;

                /**
                 * BaseRepository constructor.
                 *
                 * @param Model $model
                 */
                public function __construct(Model $model)
                {
                    $this->model = $model;
                }

                /**
                * @param array $attributes
                *
                * @return Model
                */
                public function create(array $attributes): Model
                {
                    return $this->model->create($attributes);
                }

                /**
                * @param $id
                * @return Model
                */
                public function find($id): ?Model
                {
                    return $this->model->find($id);
                }
            }
            
    
        

UserRepository.php

        

            
            < ?php

    namespace App\Repositories\Eloquent;

    use App\Models\User;
    use Illuminate\Support\Collection;
    use App\Repositories\Eloquent\BaseRepository;
    use App\Repositories\Contracts\UserRepositoryInterface;

    class UserRepository extends BaseRepository implements UserRepositoryInterface
    {

    /**
        * UserRepository constructor.
        *
        * @param User $model
        */
    public function __construct(User $model)
    {
        parent::__construct($model);
    }

    /**
        * @return Collection
        */
    public function all(): Collection
    {
        return $this->model->all();
    }
    }
    

    
        
        
            php artisan make:provider RepositoryServiceProvider
        
    
        
            
        public function register()
        {
            //
            //$this->app->bind(PostRepositoryInterface::class, PostRepository::class);
            $this->app->bind(UserRepositoryInterface::class, UserRepository::class);
        }

        
    

Dans configapp

    
        App\Providers\RepositoryServiceProvider::class
    

Resultat de all()

$users