Skip to content

Commit 6b6c9bd

Browse files
authored
Gate: Show target in description (#1653)
* Gate: Show target in description * Tweak text
1 parent 94a574a commit 6b6c9bd

File tree

2 files changed

+19
-4
lines changed

2 files changed

+19
-4
lines changed

src/DataCollector/GateCollector.php

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
use Illuminate\Auth\Access\Response;
88
use Illuminate\Contracts\Auth\Access\Gate;
99
use Illuminate\Contracts\Auth\Authenticatable;
10+
use Illuminate\Database\Eloquent\Model;
1011
use Symfony\Component\VarDumper\Cloner\VarCloner;
1112
use 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),

tests/DataCollector/GateCollectorTest.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,14 +37,14 @@ public function testItCollectsGateChecks()
3737
$gateError = $collect['messages'][0];
3838
$this->assertEquals('error', $gateError['label']);
3939
$this->assertEquals(
40-
'[ability => test, result => null, user => 1, arguments => []]',
40+
'[ability => test, target => null, result => null, user => 1, arguments => []]',
4141
$gateError['message']
4242
);
4343

4444
$gateSuccess = $collect['messages'][1];
4545
$this->assertEquals('success', $gateSuccess['label']);
4646
$this->assertEquals(
47-
'[ability => test, result => true, user => 1, arguments => []]',
47+
'[ability => test, target => null, result => true, user => 1, arguments => []]',
4848
$gateSuccess['message']
4949
);
5050
}

0 commit comments

Comments
 (0)