coreproc/laravel-devices

Store and handle devices connecting to your web application.

0.1.0 2021-04-20 09:07 UTC

This package is auto-updated.

Last update: 2021-11-20 10:29:07 UTC


README

Latest Version on Packagist Quality Score Total Downloads

This package sets up the database and middleware needed in storing devices. This is perfect for handling mobile devices using your web API. You'll be able to identify each device, assign them an FCM token, and relate them to users as well.

Installation

You can install the package via composer:

composer require coreproc/laravel-devices

You must publish the migration with:

php artisan vendor:publish --provider="Coreproc\Devices\DevicesServiceProvider" --tag="migrations"

Migrate the statuses table:

php artisan migrate

Optionally you can publish the config file with:

php artisan vendor:publish --provider="Coreproc\Devices\DevicesServiceProvider" --tag="config"

Usage

To begin storing device information, you can attach the store.device middleware to any of your routes. Here is an example:

// routes/api.php

Route::middleware('store.device')->get('/test', function (Request $request) {
    return [];
});

Now, when you use the API endpoint /api/test, you can attach the device information to the header. Here is a complete list of data that you can enter:

curl --request GET \
  --url http://devices.test/api/test \
  --header 'x-device-app-version: 1.0.1' \
  --header 'x-device-fcm-token: firebase-cloud-messaging-token' \
  --header 'x-device-manufacturer: Samsung' \
  --header 'x-device-model: Galaxy S10' \
  --header 'x-device-os: Android' \
  --header 'x-device-os-version: 8.0' \
  --header 'x-device-udid: unique-device-udid'

This will store all of the above information to the database. Only the x-device-udid header field is required.

If a user is authenticated, it will relate the user to this device automatically.

You can define the guard to be used in the first parameter of the middleware.

// routes/api.php

Route::middleware('store.device:web')->get('/test', function (Request $request) {
    return [];
});

You can define if the device should be required or not in the second parameter, delimted by a comma.

// routes/api.php

Route::middleware('store.device:web,0')->get('/test', function (Request $request) {
    return [];
});

Changelog

Please see CHANGELOG for more information on what has changed recently.

Contributing

Please see CONTRIBUTING for details.

Security

If you discover any security related issues, please email chris.bautista@coreproc.ph instead of using the issue tracker.

About CoreProc

CoreProc is a software development company that provides software development services to startups, digital/ad agencies, and enterprises.

Learn more about us on our website.

Credits

License

The MIT License (MIT). Please see License File for more information.