Skip to content

Commit ee321cc

Browse files
committed
Use a more concise syntax: guard:api|web.
1 parent b0ebb76 commit ee321cc

File tree

3 files changed

+13
-19
lines changed

3 files changed

+13
-19
lines changed

src/Middleware/LaratrustMiddleware.php

+7-13
Original file line numberDiff line numberDiff line change
@@ -78,28 +78,22 @@ protected function assignRealValuesTo($team, $options)
7878
return [
7979
(Str::contains($team, ['require_all', 'guard:']) ? null : $team),
8080
(Str::contains($team, 'require_all') ?: Str::contains($options, 'require_all')),
81-
(Str::contains($team, 'guard:') ? $this->extractGuards($team) : (
82-
Str::contains($options, 'guard:')
83-
? $this->extractGuards($options)
84-
: [Config::get('auth.defaults.guard')]
85-
)),
81+
($this->extractGuards($team) ?: $this->extractGuards($options) ?: [Config::get('auth.defaults.guard')]),
8682
];
8783
}
8884

8985
/**
9086
* Extract the guard type from the given string.
9187
*
9288
* @param string $string
93-
* @return string
89+
* @return array
9490
*/
9591
protected function extractGuards($string)
9692
{
97-
$options = Collection::make(explode('|', $string));
98-
99-
return $options->reject(function ($option) {
100-
return strpos($option, 'guard:') === false;
101-
})->map(function ($option) {
102-
return explode(':', $option)[1];
103-
});
93+
return preg_match("/\\bguard:((?:[^|,]+)(?:[|][^|,]+)*)\b/", $string, $matches)
94+
? Collection::make(explode("|", $matches[1]))->reject(function ($value, $key) {
95+
return $value == "require_all";
96+
})
97+
: [];
10498
}
10599
}

tests/Middleware/LaratrustPermissionTest.php

+3-3
Original file line numberDiff line numberDiff line change
@@ -181,19 +181,19 @@ public function testHandle_IsLoggedInWithPermissionAndMultipleGuards_ShouldNotAb
181181
}, 'users-create|users-update'));
182182

183183
$this->assertNull($middleware->handle($this->request, function () {
184-
}, 'users-create|users-update', 'guard:api|guard:web'));
184+
}, 'users-create|users-update', 'guard:api|web'));
185185

186186
$this->assertNull($middleware->handle($this->request, function () {
187187
}, 'users-create|users-update', 'require_all'));
188188

189189
$this->assertNull($middleware->handle($this->request, function () {
190-
}, 'users-create|users-update', 'guard:api|guard:web|require_all'));
190+
}, 'users-create|users-update', 'guard:api|web,require_all'));
191191

192192
$this->assertNull($middleware->handle($this->request, function () {
193193
}, 'users-create|users-update', 'TeamA', 'require_all'));
194194

195195
$this->assertNull($middleware->handle($this->request, function () {
196-
}, 'users-create|users-update', 'TeamA', 'guard:api|guard:web|require_all'));
196+
}, 'users-create|users-update', 'TeamA', 'guard:api|web,require_all'));
197197
}
198198

199199
public function testHandle_IsLoggedInWithNoPermission_ShouldRedirectWithError()

tests/Middleware/MiddlewareLaratrustAbilityTest.php

+3-3
Original file line numberDiff line numberDiff line change
@@ -184,18 +184,18 @@ public function testHandle_IsLoggedInWithAbilityAndMultipleGuards_ShouldNotAbort
184184
}, 'admin|user', 'edit-users|update-users'));
185185

186186
$this->assertNull($middleware->handle($this->request, function () {
187-
}, 'admin|user', 'edit-users|update-users', 'guard:api|guard:web'));
187+
}, 'admin|user', 'edit-users|update-users', 'guard:api|web'));
188188

189189
$this->assertNull($middleware->handle($this->request, function () {
190190
}, 'admin|user', 'edit-users|update-users', 'require_all'));
191191

192192
$this->assertNull($middleware->handle($this->request, function () {
193-
}, 'admin|user', 'edit-users|update-users', 'guard:api|guard:web|require_all'));
193+
}, 'admin|user', 'edit-users|update-users', 'require_all,guard:api|web'));
194194

195195
$this->assertNull($middleware->handle($this->request, function () {
196196
}, 'admin|user', 'edit-users|update-users', 'TeamA', 'require_all'));
197197

198198
$this->assertNull($middleware->handle($this->request, function () {
199-
}, 'admin|user', 'edit-users|update-users', 'TeamA', 'require_all|guard:api|guard:web'));
199+
}, 'admin|user', 'edit-users|update-users', 'TeamA', 'require_all,guard:api|web'));
200200
}
201201
}

0 commit comments

Comments
 (0)