<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Yakubu Damilola</title>
    <description>The latest articles on Forem by Yakubu Damilola (@dammydev2).</description>
    <link>https://forem.com/dammydev2</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F323241%2F3eaaa8bc-a911-4d30-b7f2-f8ed5ac90dd4.jpeg</url>
      <title>Forem: Yakubu Damilola</title>
      <link>https://forem.com/dammydev2</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/dammydev2"/>
    <language>en</language>
    <item>
      <title>How to get user activity on your web application</title>
      <dc:creator>Yakubu Damilola</dc:creator>
      <pubDate>Sat, 27 Jun 2020 08:57:05 +0000</pubDate>
      <link>https://forem.com/dammydev2/how-to-get-user-activity-on-your-web-application-4h</link>
      <guid>https://forem.com/dammydev2/how-to-get-user-activity-on-your-web-application-4h</guid>
      <description>&lt;h3&gt;
  
  
  &lt;strong&gt;Activity log&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;This is an open source laravel project that you can use to monitor whatever post activity a user create on your project (The most reputable Laravel package provided for detecting user agent is Agent developed by Jens Segers and its the one I will use. All the information you need to know about user are accessible by using &lt;a href="https://github.com/jenssegers/agent"&gt;Agent&lt;/a&gt;) &lt;br&gt;&lt;br&gt;
it saves the user&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;device&lt;/li&gt;
&lt;li&gt;platform&lt;/li&gt;
&lt;li&gt;browser&lt;/li&gt;
&lt;li&gt;IP address&lt;/li&gt;
&lt;li&gt;user auth id&lt;/li&gt;
&lt;li&gt;user auth email&lt;/li&gt;
&lt;li&gt;user activity&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;in your laravel project run:&lt;br&gt;&lt;br&gt;
&lt;code&gt;composer require jenssegers/agent&lt;/code&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;
Then find the config/app.php and then find &lt;strong&gt;providers array&lt;/strong&gt; add:&lt;br&gt;&lt;br&gt;&lt;br&gt;
&lt;code&gt;Jenssegers\Agent\AgentServiceProvider::class,&lt;/code&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;
In the same config/app.php file find the &lt;strong&gt;aliases array&lt;/strong&gt; and add:&lt;br&gt;&lt;br&gt;
&lt;code&gt;'Agent' =&amp;gt; Jenssegers\Agent\Facades\Agent::class,&lt;/code&gt;&lt;br&gt;&lt;br&gt;
then run:&lt;br&gt;
&lt;br&gt;&lt;br&gt;
&lt;code&gt;php artisan make:model ActivityLog -m&lt;/code&gt; &lt;br&gt;&lt;br&gt;
this will create 2 files&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;ActivityLog.php in your app folder &lt;/li&gt;
&lt;li&gt;activity log migration file in your database/migration folder (something like &lt;code&gt;2020_06_21_151755_create_activity_logs_table&lt;/code&gt;)
open your &lt;strong&gt;ActivityLog.php&lt;/strong&gt; and add the following codes inside the class {...}&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;code&gt;protected $fillable = [&lt;br&gt;
        'device',&lt;br&gt;
        'platform',&lt;br&gt;
        'browser',&lt;br&gt;
        'ip_address',&lt;br&gt;
        'user_id',&lt;br&gt;
        'user_email',&lt;br&gt;
        'user_activity'&lt;br&gt;
    ];&lt;/code&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;
open your migration file in &lt;strong&gt;2 above&lt;/strong&gt; and add the following lines inside the schema function after &lt;strong&gt;$table-&amp;gt;id();&lt;/strong&gt;&lt;br&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;        $table-&amp;gt;string('device');
        $table-&amp;gt;string('platform');
        $table-&amp;gt;string('browser');
        $table-&amp;gt;string('ip_address');
        $table-&amp;gt;string('user_id')-&amp;gt;nullable();
        $table-&amp;gt;string('user_email');
        $table-&amp;gt;string('user_activity');
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;if you don't have an authentication scaffold already in your project run: &lt;br&gt;&lt;br&gt;
 &lt;code&gt;php artisan make:auth&lt;/code&gt; for laravel 5.8 and below&lt;br&gt;&lt;br&gt;
for laravel 6.0 and above run:&lt;br&gt;
&lt;code&gt;composer require laravel/ui&lt;/code&gt;&lt;br&gt;&lt;br&gt;
&lt;code&gt;php artisan ui vue --auth&lt;/code&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;
create a folder called "Services" in your app folder and create a file called ActivityService.php (app\services\ActivityServices.php), open your ActivityService.php file and add the following code: &lt;br&gt; &lt;br&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;&amp;lt;?php&lt;/code&gt;&lt;br&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;namespace App\Services;&lt;/code&gt; &lt;br&gt;
&lt;code&gt;use App\ActivityLog;&lt;/code&gt;&lt;br&gt;
&lt;code&gt;use Jenssegers\Agent\Agent;&lt;/code&gt;&lt;br&gt;
&lt;code&gt;class ActivityService&lt;/code&gt;&lt;br&gt;
{&lt;br&gt;
    &lt;code&gt;protected $activityLog;&lt;/code&gt;&lt;br&gt;
    &lt;code&gt;public function __construct(&lt;/code&gt;&lt;br&gt;
        &lt;code&gt;ActivityLog $activityLog&lt;/code&gt;&lt;br&gt;
    ) {&lt;br&gt;
        &lt;code&gt;$this-&amp;gt;activityLog = $activityLog;&lt;/code&gt;&lt;br&gt;
    }&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;public function enterActivity($user_activity,$email)
{
    $agent = new Agent();
    $platform = $agent-&amp;gt;platform();
    // Ubuntu, Windows, OS X, ...
    $browser = $agent-&amp;gt;browser();
    // Chrome, IE, Safari, Firefox, ...
    $this-&amp;gt;activityLog-&amp;gt;create([
        'platform' =&amp;gt; $agent-&amp;gt;version($platform),
        'browser' =&amp;gt; $agent-&amp;gt;version($browser),
        'device' =&amp;gt; $agent-&amp;gt;device(),
        'ip_address' =&amp;gt; \Request::ip(),
        'user_id' =&amp;gt; null,
        'user_email' =&amp;gt; $email,
        'user_activity' =&amp;gt; $user_activity
    ]);
}
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;code&gt;}&lt;/code&gt;&lt;br&gt;&lt;br&gt;&lt;/p&gt;

&lt;p&gt;run migration in order to create the activity log table in your DB&lt;br&gt;&lt;br&gt;&lt;br&gt;
open RegisterController.php and call the Activity service:&lt;br&gt; &lt;code&gt;use App\Services\ActivityService;&lt;/code&gt;&lt;br&gt;&lt;br&gt;
in your &lt;strong&gt;RegisterController class&lt;/strong&gt; add &lt;code&gt;protected $activityService;&lt;/code&gt;&lt;br&gt;&lt;br&gt;
in your __construct() method add &lt;code&gt;ActivityService $activityService&lt;/code&gt; and in the __construct() function add &lt;code&gt;$this-&amp;gt;activityService = $activityService;&lt;/code&gt;&lt;br&gt; your __construct() method code should look like&lt;br&gt;&lt;br&gt;&lt;br&gt;
&lt;code&gt;protected $activityService;&lt;/code&gt;&lt;br&gt;
    &lt;code&gt;public function __construct(ActivityService $activityService)&lt;/code&gt;&lt;br&gt;
    {&lt;br&gt;
        &lt;code&gt;$this-&amp;gt;activityService = $activityService;&lt;/code&gt;&lt;br&gt;
        &lt;code&gt;$this-&amp;gt;middleware('guest');&lt;/code&gt;&lt;br&gt;
    }&lt;br&gt;
then add the below code in your create function&lt;br&gt;&lt;br&gt;
        &lt;code&gt;$user_activity = 'user attempted to login'&lt;/code&gt;;&lt;br&gt;
        &lt;code&gt;$email = $data['email'];&lt;/code&gt;&lt;br&gt;
        &lt;code&gt;$this-&amp;gt;activityService-&amp;gt;enterActivity($user_activity,$email);&lt;/code&gt;&lt;br&gt;&lt;br&gt;
try to register, once you have registered, check the activity log table you will see all the details of the person &lt;br&gt;
including his IP address, the &lt;strong&gt;$user_activity&lt;/strong&gt; can be changed to whatever you like depending on the user activity, The service can be called anywhere in your controller, just remember to include the &lt;strong&gt;$user_activity and $email&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;below is the github link to the repo, you can fork it if you wish:&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--vJ70wriM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://practicaldev-herokuapp-com.freetls.fastly.net/assets/github-logo-ba8488d21cd8ee1fee097b8410db9deaa41d0ca30b004c0c63de0a479114156f.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/dammydev2"&gt;
        dammydev2
      &lt;/a&gt; / &lt;a href="https://github.com/dammydev2/activity-log"&gt;
        activity-log
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;h3&gt;
&lt;strong&gt;Activity log&lt;/strong&gt;
&lt;/h3&gt;
&lt;p&gt;This is an open source laravel project that you can use to monitor whatever post activity a user create on your project (The most reputable Laravel package provided for detecting user agent is Agent developed by Jens Segers and its the one I will use. All the information you need to know about user are accessible by using &lt;a href="https://github.com/jenssegers/agent"&gt;Agent&lt;/a&gt;) &lt;br&gt;
it saves the user&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;device&lt;/li&gt;
&lt;li&gt;platform&lt;/li&gt;
&lt;li&gt;browser&lt;/li&gt;
&lt;li&gt;IP address&lt;/li&gt;
&lt;li&gt;user auth id&lt;/li&gt;
&lt;li&gt;user auth email&lt;/li&gt;
&lt;li&gt;user activity&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;in your laravel project run:&lt;br&gt;
&lt;code&gt;composer require jenssegers/agent&lt;/code&gt;&lt;br&gt;&lt;br&gt;
Then find the config/app.php and then find &lt;strong&gt;providers array&lt;/strong&gt; add:&lt;br&gt;&lt;br&gt;
&lt;code&gt;Jenssegers\Agent\AgentServiceProvider::class,&lt;/code&gt;&lt;br&gt;&lt;br&gt;
In the same config/app.php file find the &lt;strong&gt;aliases array&lt;/strong&gt; and add:&lt;br&gt;
&lt;code&gt;'Agent' =&amp;gt; Jenssegers\Agent\Facades\Agent::class,&lt;/code&gt;&lt;br&gt;
then run
&lt;br&gt;
&lt;code&gt;php artisan make:model ActivityLog -m&lt;/code&gt; &lt;br&gt;
this will create 2 files&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;ActivityLog.php in your app folder&lt;/li&gt;
&lt;li&gt;activity log migration file in your database/migration folder (something like &lt;code&gt;2020_06_21_151755_create_activity_logs_table&lt;/code&gt;)
open your &lt;strong&gt;ActivityLog.php&lt;/strong&gt; and add the following codes inside…&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/dammydev2/activity-log"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;&lt;strong&gt;hope this helps&lt;/strong&gt;, I can be reached via &lt;a href="mailto:damilola.yakubu@yahoo.com"&gt;damilola.yakubu@yahoo.com&lt;/a&gt;&lt;br&gt;&lt;br&gt;
twitter: &lt;a href="https://twitter.com/dammydev"&gt;https://twitter.com/dammydev&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Thanks&lt;/p&gt;

</description>
      <category>php</category>
      <category>laravel</category>
      <category>application</category>
      <category>activity</category>
    </item>
  </channel>
</rss>
