77use Illuminate \Auth \Access \Response ;
88use Illuminate \Contracts \Auth \Access \Gate ;
99use Illuminate \Contracts \Auth \Authenticatable ;
10+ use Illuminate \Database \Eloquent \Model ;
1011use Symfony \Component \VarDumper \Cloner \VarCloner ;
1112use Illuminate \Support \Str ;
1213
@@ -32,9 +33,12 @@ public function __construct(Gate $gate)
3233 */
3334 protected function customizeMessageHtml ($ messageHtml , $ message )
3435 {
35- $ pos = strpos ((string ) $ messageHtml , 'array:4 ' );
36+ $ pos = strpos ((string ) $ messageHtml , 'array:5 ' );
3637 if ($ pos !== false ) {
37- $ messageHtml = substr_replace ($ messageHtml , $ message ['ability ' ], $ pos , 7 );
38+
39+ $ name = $ message ['ability ' ] .' ' . $ message ['target ' ] ?? '' ;
40+
41+ $ messageHtml = substr_replace ($ messageHtml , $ name , $ pos , 7 );
3842 }
3943
4044 return parent ::customizeMessageHtml ($ messageHtml , $ message );
@@ -56,8 +60,19 @@ public function addCheck($user, $ability, $result, $arguments = [])
5660 $ label = $ result ->allowed () ? 'success ' : 'error ' ;
5761 }
5862
63+ $ target = null ;
64+ if (isset ($ arguments [0 ])) {
65+ if ($ arguments [0 ] instanceof Model) {
66+ $ model = $ arguments [0 ];
67+ $ target = get_class ($ model ) . '( ' . $ model ->getKeyName () .'= ' . $ model ->getKey ().') ' ;
68+ } else if (is_string ($ arguments [0 ])) {
69+ $ target = $ arguments [0 ];
70+ }
71+ }
72+
5973 $ this ->addMessage ([
6074 'ability ' => $ ability ,
75+ 'target ' => $ target ,
6176 'result ' => $ result ,
6277 $ userKey => $ userId ,
6378 'arguments ' => $ this ->getDataFormatter ()->formatVar ($ arguments ),
0 commit comments