happyDemon / UsrLastly by happyDemon

Keep track of your users' last visit
214
14
3
Package Data
Maintainer Username: happyDemon
Maintainer Contact: maxim.kerstens@gmail.com (Maxim Kerstens)
Package Create Date: 2015-03-29
Package Last Update: 2015-12-27
Home Page: https://packagist.org/packages/happydemon/usrlastly
Language: PHP
License: MIT
Last Refreshed: 2024-04-17 15:06:53
Package Statistics
Total Downloads: 214
Monthly Downloads: 0
Daily Downloads: 0
Total Stars: 14
Total Watchers: 3
Total Forks: 4
Total Open Issues: 2

UsrLastly

This nifty little package makes it easy to store and retrieve a user's 'last seen' status.

It's a light implementation that's easy to extend.

It uses a middleware to check if a user is logged in, if so it will store the user's current visit.

Installation

First add the package to your composer file by runningthis command:

composer require happydemon/usrlastly

This will install the latest version.

Next add the service provider in your app.php config:

    'providers' => [
        ...
        'HappyDemon\UsrLastly\UsrLastlyServiceProvider',
    ]

Next publish the config file:

php artisan vendor:publish

Now it's time to register LastSeenMiddleware as global middleware in app/Http/Kernel.php:

	protected $middleware = [
		...
		'HappyDemon\UsrLastly\Middleware\LastSeenMiddleware'
	];

Lastly let's move on to your user model, open it and add the required trait:

Above your class reference the trait

use HappyDemon\UsrLastly\LastSeenTrait as LastSeen;

and in your user model add

use LastSeen;

Storages

I've bundled 2 types of storage, this is where the 'last seen status' gets stored.

You can either store this status in your database or with Redis.

Database

To let this package do its work you'll first need to publish and run a database migration

php artisan vendor:publish --provider="HappyDemon\UsrLastly\UsrLastlyServiceProvider" --tag="migrations"
php artisan migrate

That should have prepared your database and you should be ready.

Redis

This storage requires even less setup, all you have to do is open up config/userlastly.php and change the storage key to redis

User provider

I'm sure not everybody is using Laravel's built-in Auth to handle user authentication so I've extracted this bit too, at this moment though it's the only auth implemented.

This is something that's used by the package, not something other developers should worry about.

We can do this in 3 steps:

  • Create a class that implements HappyDemon\UsrLastly\User with a getUser() method that returns a logged in user or false
  • Binding that class to laravel's container
  • Change config/userlastly.php's user_provider key to name of that binding.

You can check the docs for the worked out example.

Retrieving 'last seen' status

Load your user like you would normally and call lastSeen(), as an example I'll just grab the first user in the database:

$user = User::find(1);

dd($user->lastSeen());

That method should return an object with 2 properties:

  • date which is a Carbon date object
  • request, an array which holds information on where the user was