11<?php
22
3- namespace Code16 \Sharp \Auth \Passkeys ;
3+ namespace Code16 \Sharp \Auth \Passkeys \ Entity ;
44
55use Code16 \Sharp \Auth \Passkeys \Commands \UpdatePasskeyNameCommand ;
66use Code16 \Sharp \EntityList \Commands \EntityCommand ;
7+ use Code16 \Sharp \EntityList \Fields \EntityListBadgeField ;
78use Code16 \Sharp \EntityList \Fields \EntityListField ;
89use Code16 \Sharp \EntityList \Fields \EntityListFieldsContainer ;
9- use Code16 \Sharp \EntityList \Filters \HiddenFilter ;
1010use Code16 \Sharp \EntityList \SharpEntityList ;
1111use Illuminate \Contracts \Auth \Authenticatable ;
1212use Illuminate \Contracts \Support \Arrayable ;
13+ use Illuminate \Database \Eloquent \Model ;
1314use Spatie \LaravelPasskeys \Models \Concerns \HasPasskeys ;
1415
1516class PasskeyList extends SharpEntityList
@@ -21,6 +22,10 @@ public function buildList(EntityListFieldsContainer $fields): void
2122 EntityListField::make ('name ' )
2223 ->setLabel ('Name ' )
2324 )
25+ ->addField (
26+ EntityListBadgeField::make ('usage ' )
27+ ->setLabel ('Usage ' )
28+ )
2429 ->addField (
2530 EntityListField::make ('created_at ' )
2631 ->setLabel ('Creation date ' )
@@ -63,32 +68,26 @@ public function getInstanceCommands(): ?array
6368 ];
6469 }
6570
66- protected function getFilters (): ?array
67- {
68- return [
69- HiddenFilter::make ('user_id ' ),
70- ];
71- }
72-
7371 public function delete (mixed $ id ): void
7472 {
7573 $ this ->currentUser ()->passKeys ()->findOrFail ($ id )->delete ();
7674 }
7775
7876 public function getListData (): array |Arrayable
7977 {
80- return $ this ->transform (
81- $ this ->currentUser ()->passkeys
82- );
78+ return $ this
79+ ->setCustomTransformer ('usage ' , function ($ value , Model $ passkey ) {
80+ return $ passkey ->getKey () == request ()->cookie ('sharp_last_used_passkey ' )
81+ ? 'Used in this browser '
82+ : null ;
83+ })
84+ ->transform (
85+ $ this ->currentUser ()->passkeys
86+ );
8387 }
8488
8589 protected function currentUser (): Authenticatable &HasPasskeys
8690 {
87- // disabling for now (security concerns)
88- // if($this->queryParams->filterFor('user_id')) {
89- // return Config::getAuthenticatableModel()::findOrFail($this->queryParams->filterFor('user_id'));
90- // }
91-
9291 /** @var Authenticatable&HasPasskeys $user */
9392 $ user = auth ()->user ();
9493
0 commit comments