Skip to content

Commit 1e0b04d

Browse files
committed
Fix for method signature mismatch
1 parent 5678b08 commit 1e0b04d

File tree

2 files changed

+37
-0
lines changed

2 files changed

+37
-0
lines changed

src/Authorizer.php

+9
Original file line numberDiff line numberDiff line change
@@ -187,6 +187,15 @@ public function getScopes()
187187
*/
188188
public function hasScope($scope)
189189
{
190+
if (is_array($scope)) {
191+
foreach ($scope as $s) {
192+
if ($this->hasScope($s) === false) {
193+
return false;
194+
}
195+
}
196+
return true;
197+
}
198+
190199
return $this->checker->getAccessToken()->hasScope($scope);
191200
}
192201

tests/unit/LucaDegasperi/OAuth2Server/AuthorizerSpec.php

+28
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,34 @@ function it_checks_if_a_scope_is_included_into_the_current_ones(ResourceServer $
6262
$accessTokenEntity->hasScope('foo')->willReturn(true)->shouldBeCalled();
6363
$checker->getAccessToken()->willReturn($accessTokenEntity)->shouldBeCalled();
6464
$this->hasScope('foo')->shouldReturn(true);
65+
66+
$accessTokenEntity->hasScope('foo')->willReturn(false)->shouldBeCalled();
67+
$checker->getAccessToken()->willReturn($accessTokenEntity)->shouldBeCalled();
68+
$this->hasScope('foo')->shouldReturn(false);
69+
}
70+
71+
function it_checks_if_multiple_invalid_scopes_are_included_into_the_current_ones(ResourceServer $checker, AccessTokenEntity $accessTokenEntity)
72+
{
73+
$accessTokenEntity->hasScope('foo')->willReturn(false)->shouldBecalled();
74+
$accessTokenEntity->hasScope('bar')->willReturn(false)->shouldNotBeCalled();
75+
$checker->getAccessToken()->willReturn($accessTokenEntity)->shouldBeCalled();
76+
$this->hasScope(['foo', 'bar'])->shouldReturn(false);
77+
}
78+
79+
function it_checks_if_multiple_mixed_scopes_are_included_into_the_current_ones(ResourceServer $checker, AccessTokenEntity $accessTokenEntity)
80+
{
81+
$accessTokenEntity->hasScope('foo')->willReturn(true)->shouldBecalled();
82+
$accessTokenEntity->hasScope('bar')->willReturn(false)->shouldBeCalled();
83+
$checker->getAccessToken()->willReturn($accessTokenEntity)->shouldBeCalledTimes(2);
84+
$this->hasScope(['foo', 'bar'])->shouldReturn(false);
85+
}
86+
87+
function it_checks_if_multiple_valid_scopes_are_included_into_the_current_ones(ResourceServer $checker, AccessTokenEntity $accessTokenEntity)
88+
{
89+
$accessTokenEntity->hasScope('foo')->willReturn(true)->shouldBecalled();
90+
$accessTokenEntity->hasScope('bar')->willReturn(true)->shouldBeCalled();
91+
$checker->getAccessToken()->willReturn($accessTokenEntity)->shouldBeCalledTimes(2);
92+
$this->hasScope(['foo', 'bar'])->shouldReturn(true);
6593
}
6694

6795
function it_returns_the_resource_owner_id(ResourceServer $checker, AccessTokenEntity $accessTokenEntity, SessionEntity $sessionEntity)

0 commit comments

Comments
 (0)