nawrasbukhari / geo-content
GeoContent is a Laravel package that provides a simple way to manage your content based on the user's location.
Requires
- php: ^8.1
- ext-curl: *
- illuminate/contracts: ^10.0
- spatie/laravel-package-tools: ^1.14.0
Requires (Dev)
- laravel/pint: ^1.0
- nunomaduro/collision: ^7.8
- nunomaduro/larastan: ^2.0.1
- orchestra/testbench: ^8.0
- pestphp/pest: ^2.0
- pestphp/pest-plugin-arch: ^2.0
- pestphp/pest-plugin-laravel: ^2.0
- phpstan/extension-installer: ^1.1
- phpstan/phpstan-deprecation-rules: ^1.0
- phpstan/phpstan-phpunit: ^1.0
- spatie/laravel-ray: ^1.26
README
The Laravel Geo-Content package provides a convenient way to fetch geolocation information using the FreeIPAPI service. This package is designed to retrieve geolocation data for IP addresses, including details such as country name, country code, continent, and more.
Installation
composer require nawrasbukhari/geo-content
You can publish the config file with:
php artisan vendor:publish --tag="geo-content-config"
This is the contents of the published config file:
return [ 'freeipapi_base_url' => env('FREEIPAPI_BASE_URL', 'https://freeipapi.com/api/json/'), 'freeipapi_key' => env('FREEIPAPI_KEY'), 'freeipapi_ssl' => env('FREEIPAPI_SSL', false), 'timeout' => env('FREEIPAPI_TIMEOUT', 30), 'testing_ip_address' => env('FREEIPAPI_TESTING_IP_ADDRESS', '208.67.222.222'), 'usual_localhost_ip' => [ '127.0.0.1', '::1', 'localhost', ], ];
Usage
Show content only to users from the United States
use NawrasBukhari\GeoContent\Facades\GeoContent; $geoContent = new GeoContent(); if ($geoContent->country('United States of America')) { // Display restricted content here }
Allowing Content for Specific Continents Similarly, you can use the continent method to display content exclusively to users from particular continents:
use NawrasBukhari\GeoContent\Facades\GeoContent; $geoContent = new GeoContent(); if ($geoContent->continent('AM')) { // Display restricted content here }
Disallowing Content for Specific Countries
You can use the onlyShowInCountry()
or onlyShowInCountryCode()
method to display content to users from specific country
use NawrasBukhari\GeoContent\Facades\GeoContent; // Create an instance of the GeoContent class $geoContent = new GeoContent(); // Hide content from users in Russia if ($geoContent->onlyShowInCountry('Russia')) { // Display non-restricted content here for users from Russia }
Testing
composer test
Changelog
Please see CHANGELOG for more information on what has changed recently.
Credits
License
The MIT License (MIT). Please see License File for more information.