Skip to content

Commit f58ee4e

Browse files
committed
wip
1 parent 2ab5895 commit f58ee4e

14 files changed

+174
-53
lines changed

config/users.php

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
<?php
22

33
// config for LaravelUsers/LaravelUsers
4+
5+
use Backstage\LaravelUsers\Http\Middleware\DetectUserTraffic;
6+
47
return [
58
'eloquent' => [
69
'user' => [
@@ -12,5 +15,19 @@
1215
'model' => \Backstage\LaravelUsers\Eloquent\Models\UserLogin::class,
1316
'table' => 'user_logins',
1417
],
18+
19+
'user_traffic' => [
20+
'model' => \Backstage\LaravelUsers\Eloquent\Models\UserTraffic::class,
21+
'table' => 'user_traffic',
22+
],
1523
],
24+
25+
'events' => [
26+
'requests' => [
27+
'web_traffic' => [
28+
'middleware' => \Backstage\LaravelUsers\Http\Middleware\DetectUserTraffic::class,
29+
'enabled' => true,
30+
]
31+
]
32+
]
1633
];

database/migrations/1_add_sub_navigation_preference_to_users_table.php.stub

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ return new class extends Migration
1212
*/
1313
public function up(): void
1414
{
15-
Schema::table('users', function (Blueprint $table) {
15+
Schema::table(config('users.eloquent.user.table', 'users'), function (Blueprint $table) {
1616
$table->enum('sub_navigation_preference', ['start', 'end', 'top'])
1717
->default('top')
1818
->after('remember_token')
@@ -25,7 +25,7 @@ return new class extends Migration
2525
*/
2626
public function down(): void
2727
{
28-
Schema::table('users', function (Blueprint $table) {
28+
Schema::table(config('users.eloquent.user.table', 'users'), function (Blueprint $table) {
2929
$table->dropColumn('sub_navigation_preference');
3030
});
3131
}

database/migrations/3_create_user_traffic_table.php.stub

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,10 @@ return new class extends Migration
1111
*/
1212
public function up(): void
1313
{
14-
Schema::create('user_traffic', function (Blueprint $table) {
14+
Schema::create(config('users.eloquent.user_traffic.table', 'user_traffic'), function (Blueprint $table) {
1515
$table->id();
1616
$table->unsignedBigInteger('user_id')->nullable();
17+
1718
$table->string('method', 10);
1819
$table->string('path');
1920
$table->text('full_url');
@@ -32,6 +33,6 @@ return new class extends Migration
3233
*/
3334
public function down(): void
3435
{
35-
Schema::dropIfExists('user_traffic');
36+
Schema::dropIfExists(config('users.eloquent.user_traffic.table', 'user_traffic'));
3637
}
3738
};

database/migrations/4_create_users_tags_table.php.stub

Lines changed: 0 additions & 21 deletions
This file was deleted.

database/migrations/5_create_users_tags_pivot_table.php.stub

Lines changed: 0 additions & 22 deletions
This file was deleted.

database/migrations/6_user_password_nullable.php.stub

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ return new class extends Migration
1111
*/
1212
public function up(): void
1313
{
14-
Schema::table('users', function (Blueprint $table) {
14+
Schema::table(config('users.eloquent.user.table', 'users'), function (Blueprint $table) {
1515
$table->string('password')->nullable()->change();
1616
});
1717
}
@@ -21,7 +21,7 @@ return new class extends Migration
2121
*/
2222
public function down(): void
2323
{
24-
Schema::table('users', function (Blueprint $table) {
24+
Schema::table(config('users.eloquent.user.table', 'users'), function (Blueprint $table) {
2525
$table->string('password')->nullable(false)->change();
2626
});
2727
}

database/migrations/7_create_user_notification_preferences_table.php.stub

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ return new class extends Migration
1414
Schema::create('user_notification_preferences', function (Blueprint $table) {
1515
$table->id();
1616
$table->unsignedBigInteger('user_id');
17+
1718
$table->string('navigation_type');
1819
$table->timestamps();
1920

src/Eloquent/Concerns/User/HasRelations.php

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,28 @@
33
namespace Backstage\LaravelUsers\Eloquent\Concerns\User;
44

55
use Backstage\LaravelUsers\Eloquent\Models\UserLogin;
6+
use Backstage\LaravelUsers\Eloquent\Models\UserTraffic;
7+
use Illuminate\Database\Eloquent\Relations\HasMany;
68

79
trait HasRelations
810
{
9-
public function logins()
11+
/**
12+
* Get the logins for the user.
13+
*
14+
* @return \Illuminate\Database\Eloquent\Relations\HasMany
15+
*/
16+
public function logins(): HasMany
1017
{
1118
return $this->hasMany(config('users.eloquent.user_login.model', UserLogin::class), 'user_id');
1219
}
20+
21+
/**
22+
* Get the traffic for the user.
23+
*
24+
* @return \Illuminate\Database\Eloquent\Relations\HasMany
25+
*/
26+
public function traffic(): HasMany
27+
{
28+
return $this->hasMany(config('users.eloquent.user_traffic.model', UserTraffic::class), 'user_id');
29+
}
1330
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
<?php
2+
3+
namespace Backstage\LaravelUsers\Eloquent\Concerns\UserTraffic;
4+
5+
use Backstage\LaravelUsers\Eloquent\Models\User;
6+
use Illuminate\Database\Eloquent\Relations\BelongsTo;
7+
8+
trait HasRelations
9+
{
10+
public function user(): BelongsTo
11+
{
12+
return $this->belongsTo(config('users.eloquent.users.model', User::class), 'user_id', 'id');
13+
}
14+
}
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
<?php
2+
3+
namespace Backstage\LaravelUsers\Eloquent\Models;
4+
5+
use Illuminate\Database\Eloquent\Model;
6+
use Illuminate\Database\Eloquent\Relations\BelongsTo;
7+
use Backstage\LaravelUsers\Eloquent\Concerns\UserTraffic as Concerns;
8+
9+
class UserTraffic extends Model
10+
{
11+
use Concerns\HasRelations;
12+
13+
public function getTable()
14+
{
15+
return config('users.eloquent.user_traffic.table', 'user_traffic');
16+
}
17+
18+
protected $fillable = [
19+
'user_id',
20+
'method',
21+
'path',
22+
'full_url',
23+
'ip',
24+
'user_agent',
25+
'referer',
26+
'route_name',
27+
'route_action',
28+
'route_parameters',
29+
];
30+
31+
protected $casts = [
32+
'route_parameters' => 'array',
33+
];
34+
}

0 commit comments

Comments
 (0)