Skip to content

Commit a8acdfd

Browse files
committed
Login links used-at w-i-p
1 parent 5cb06ad commit a8acdfd

File tree

5 files changed

+24
-11
lines changed

5 files changed

+24
-11
lines changed

database/migrations/create_login_links_table.php.stub

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ return new class extends Migration
1818
$table->string('email')->index();
1919
$table->string('token')->index()->nullable;
2020
$table->dateTime('expires_at');
21+
$table->dateTime('used_at');
2122
$table->string('user_agent')->nullable();
2223
$table->ipAddress('ip_address')->nullable();
2324
$table->timestamps();

resources/lang/en/translations.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,9 @@
1212
'totalthree' => 'Login Links Invalid',
1313
'token' => 'Token',
1414
'expires_at' => 'Expires at',
15+
'used_at' => 'Used at',
16+
'used' => 'Used',
17+
'created_at' => 'Created at',
1518
'email' => 'E-Mail',
1619
'user_agent' => 'User Agent',
1720
'ip_address' => 'IP-Adresse',

src/Http/Controllers/LoginLinkController.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ public function authenticate($userId, $token)
7070
$userType = 'App\Models\User';
7171
}
7272

73-
$loginLink->update(['token' => 'used']);
73+
$loginLink->update(['used_at' => now()]);
7474

7575
$userModel = Config::get('login-link.user_models.'.$userType, User::class);
7676
$user = $userModel::findOrFail($userId);

src/Models/LoginLink.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,14 @@ class LoginLink extends Model
1515
'email',
1616
'token',
1717
'expires_at',
18+
'used_at',
1819
'user_agent',
1920
'ip_address',
2021
];
2122

2223
protected $casts = [
2324
'expires_at' => 'datetime',
25+
'used_at' => 'datetime',
2426
];
2527

2628
/**

src/Resources/LoginLinkResource.php

Lines changed: 17 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
use Filament\Resources\Resource;
1111
use Filament\Tables\Actions\DeleteBulkAction;
1212
use Filament\Tables\Actions\EditAction;
13+
use Filament\Tables\Columns\IconColumn;
1314
use Filament\Tables\Columns\TextColumn;
1415
use Filament\Tables\Table;
1516
use Illuminate\Support\Facades\Config;
@@ -39,8 +40,10 @@ public static function form(Form $form): Form
3940
->columnSpan(2),
4041
TextInput::make('token')
4142
->label(__('login-link::translations.token'))
42-
->maxLength(255),
43+
->maxLength(255)
44+
->columnSpan(2),
4345
DateTimePicker::make('expires_at'),
46+
DateTimePicker::make('used_at'),
4447
Select::make('user_type')
4548
->options(function () {
4649
$models = Config::get('login-link.user_models', []);
@@ -70,24 +73,28 @@ public static function table(Table $table): Table
7073
{
7174
return $table
7275
->columns([
76+
IconColumn::make('used')
77+
->label('Valid')
78+
->icons([
79+
'heroicon-o-x-circle' => fn ($record) => empty($record->used_at),
80+
'heroicon-o-check-circle' => fn ($record) => ! empty($record->used_at),
81+
])
82+
->tooltip(fn ($record) => empty($record->used_at) ? 'Not Used' : 'Used')
83+
->sortable(),
7384
TextColumn::make('email')
7485
->label(__('login-link::translations.email'))
7586
->sortable(),
76-
TextColumn::make('token')
77-
->label(__('login-link::translations.token'))
78-
->sortable(),
79-
TextColumn::make('expires_at')
87+
TextColumn::make('created_at')
8088
->label(__('login-link::translations.expires_at'))
81-
->sortable(),
82-
TextColumn::make('user_agent')
83-
->label(__('login-link::translations.user_agent'))
89+
->since()
8490
->sortable(),
8591
TextColumn::make('expires_at')
8692
->label(__('login-link::translations.expires_at'))
8793
->since()
8894
->sortable(),
89-
TextColumn::make('ip_address')
90-
->label(__('login-link::translations.ip_address'))
95+
TextColumn::make('used_at')
96+
->label(__('login-link::translations.used_at'))
97+
->since()
9198
->sortable(),
9299
TextColumn::make('user_type')
93100
->label(__('login-link::translations.user_type'))

0 commit comments

Comments
 (0)