mirror of
				https://github.com/elyby/oauth2-server.git
				synced 2025-05-31 14:12:07 +05:30 
			
		
		
		
	Fix implicit grant scopes
This commit is contained in:
		@@ -154,13 +154,6 @@ class ImplicitGrant extends AbstractAuthorizeGrant
 | 
			
		||||
            $redirectUri
 | 
			
		||||
        );
 | 
			
		||||
 | 
			
		||||
        // Finalize the requested scopes
 | 
			
		||||
        $finalizedScopes = $this->scopeRepository->finalizeScopes(
 | 
			
		||||
            $scopes,
 | 
			
		||||
            $this->getIdentifier(),
 | 
			
		||||
            $client
 | 
			
		||||
        );
 | 
			
		||||
 | 
			
		||||
        $stateParameter = $this->getQueryStringParameter('state', $request);
 | 
			
		||||
 | 
			
		||||
        $authorizationRequest = new AuthorizationRequest();
 | 
			
		||||
@@ -172,7 +165,7 @@ class ImplicitGrant extends AbstractAuthorizeGrant
 | 
			
		||||
            $authorizationRequest->setState($stateParameter);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        $authorizationRequest->setScopes($finalizedScopes);
 | 
			
		||||
        $authorizationRequest->setScopes($scopes);
 | 
			
		||||
 | 
			
		||||
        return $authorizationRequest;
 | 
			
		||||
    }
 | 
			
		||||
@@ -194,6 +187,14 @@ class ImplicitGrant extends AbstractAuthorizeGrant
 | 
			
		||||
 | 
			
		||||
        // The user approved the client, redirect them back with an access token
 | 
			
		||||
        if ($authorizationRequest->isAuthorizationApproved() === true) {
 | 
			
		||||
            // Finalize the requested scopes
 | 
			
		||||
            $finalizedScopes = $this->scopeRepository->finalizeScopes(
 | 
			
		||||
                $authorizationRequest->getScopes(),
 | 
			
		||||
                $this->getIdentifier(),
 | 
			
		||||
                $authorizationRequest->getClient(),
 | 
			
		||||
                $authorizationRequest->getUser()->getIdentifier()
 | 
			
		||||
            );
 | 
			
		||||
 | 
			
		||||
            $accessToken = $this->issueAccessToken(
 | 
			
		||||
                $this->accessTokenTTL,
 | 
			
		||||
                $authorizationRequest->getClient(),
 | 
			
		||||
 
 | 
			
		||||
@@ -94,7 +94,6 @@ class ImplicitGrantTest extends TestCase
 | 
			
		||||
        $scopeRepositoryMock = $this->getMockBuilder(ScopeRepositoryInterface::class)->getMock();
 | 
			
		||||
        $scopeEntity = new ScopeEntity();
 | 
			
		||||
        $scopeRepositoryMock->method('getScopeEntityByIdentifier')->willReturn($scopeEntity);
 | 
			
		||||
        $scopeRepositoryMock->method('finalizeScopes')->willReturnArgument(0);
 | 
			
		||||
 | 
			
		||||
        $grant = new ImplicitGrant(new \DateInterval('PT10M'));
 | 
			
		||||
        $grant->setClientRepository($clientRepositoryMock);
 | 
			
		||||
@@ -129,7 +128,6 @@ class ImplicitGrantTest extends TestCase
 | 
			
		||||
        $scopeRepositoryMock = $this->getMockBuilder(ScopeRepositoryInterface::class)->getMock();
 | 
			
		||||
        $scopeEntity = new ScopeEntity();
 | 
			
		||||
        $scopeRepositoryMock->method('getScopeEntityByIdentifier')->willReturn($scopeEntity);
 | 
			
		||||
        $scopeRepositoryMock->method('finalizeScopes')->willReturnArgument(0);
 | 
			
		||||
 | 
			
		||||
        $grant = new ImplicitGrant(new \DateInterval('PT10M'));
 | 
			
		||||
        $grant->setClientRepository($clientRepositoryMock);
 | 
			
		||||
@@ -286,9 +284,14 @@ class ImplicitGrantTest extends TestCase
 | 
			
		||||
        $accessTokenRepositoryMock->method('getNewToken')->willReturn(new AccessTokenEntity());
 | 
			
		||||
        $accessTokenRepositoryMock->method('persistNewAccessToken')->willReturnSelf();
 | 
			
		||||
 | 
			
		||||
        $scopeRepositoryMock = $this->getMockBuilder(ScopeRepositoryInterface::class)->getMock();
 | 
			
		||||
        $scopeEntity = new ScopeEntity();
 | 
			
		||||
        $scopeRepositoryMock->method('finalizeScopes')->willReturnArgument(0);
 | 
			
		||||
 | 
			
		||||
        $grant = new ImplicitGrant(new \DateInterval('PT10M'));
 | 
			
		||||
        $grant->setPrivateKey(new CryptKey('file://' . __DIR__ . '/../Stubs/private.key'));
 | 
			
		||||
        $grant->setAccessTokenRepository($accessTokenRepositoryMock);
 | 
			
		||||
        $grant->setScopeRepository($scopeRepositoryMock);
 | 
			
		||||
 | 
			
		||||
        $this->assertInstanceOf(RedirectResponse::class, $grant->completeAuthorizationRequest($authRequest));
 | 
			
		||||
    }
 | 
			
		||||
@@ -309,9 +312,14 @@ class ImplicitGrantTest extends TestCase
 | 
			
		||||
        $accessTokenRepositoryMock->method('getNewToken')->willReturn(new AccessTokenEntity());
 | 
			
		||||
        $accessTokenRepositoryMock->method('persistNewAccessToken')->willReturnSelf();
 | 
			
		||||
 | 
			
		||||
        $scopeRepositoryMock = $this->getMockBuilder(ScopeRepositoryInterface::class)->getMock();
 | 
			
		||||
        $scopeEntity = new ScopeEntity();
 | 
			
		||||
        $scopeRepositoryMock->method('finalizeScopes')->willReturnArgument(0);
 | 
			
		||||
 | 
			
		||||
        $grant = new ImplicitGrant(new \DateInterval('PT10M'));
 | 
			
		||||
        $grant->setPrivateKey(new CryptKey('file://' . __DIR__ . '/../Stubs/private.key'));
 | 
			
		||||
        $grant->setAccessTokenRepository($accessTokenRepositoryMock);
 | 
			
		||||
        $grant->setScopeRepository($scopeRepositoryMock);
 | 
			
		||||
 | 
			
		||||
        $grant->completeAuthorizationRequest($authRequest);
 | 
			
		||||
    }
 | 
			
		||||
@@ -330,9 +338,14 @@ class ImplicitGrantTest extends TestCase
 | 
			
		||||
        $accessTokenRepositoryMock->expects($this->at(0))->method('persistNewAccessToken')->willThrowException(UniqueTokenIdentifierConstraintViolationException::create());
 | 
			
		||||
        $accessTokenRepositoryMock->expects($this->at(1))->method('persistNewAccessToken')->willReturnSelf();
 | 
			
		||||
 | 
			
		||||
        $scopeRepositoryMock = $this->getMockBuilder(ScopeRepositoryInterface::class)->getMock();
 | 
			
		||||
        $scopeEntity = new ScopeEntity();
 | 
			
		||||
        $scopeRepositoryMock->method('finalizeScopes')->willReturnArgument(0);
 | 
			
		||||
 | 
			
		||||
        $grant = new ImplicitGrant(new \DateInterval('PT10M'));
 | 
			
		||||
        $grant->setPrivateKey(new CryptKey('file://' . __DIR__ . '/../Stubs/private.key'));
 | 
			
		||||
        $grant->setAccessTokenRepository($accessTokenRepositoryMock);
 | 
			
		||||
        $grant->setScopeRepository($scopeRepositoryMock);
 | 
			
		||||
 | 
			
		||||
        $this->assertInstanceOf(RedirectResponse::class, $grant->completeAuthorizationRequest($authRequest));
 | 
			
		||||
    }
 | 
			
		||||
@@ -354,9 +367,14 @@ class ImplicitGrantTest extends TestCase
 | 
			
		||||
        $accessTokenRepositoryMock->method('getNewToken')->willReturn(new AccessTokenEntity());
 | 
			
		||||
        $accessTokenRepositoryMock->method('persistNewAccessToken')->willThrowException(OAuthServerException::serverError('something bad happened'));
 | 
			
		||||
 | 
			
		||||
        $scopeRepositoryMock = $this->getMockBuilder(ScopeRepositoryInterface::class)->getMock();
 | 
			
		||||
        $scopeEntity = new ScopeEntity();
 | 
			
		||||
        $scopeRepositoryMock->method('finalizeScopes')->willReturnArgument(0);
 | 
			
		||||
 | 
			
		||||
        $grant = new ImplicitGrant(new \DateInterval('PT10M'));
 | 
			
		||||
        $grant->setPrivateKey(new CryptKey('file://' . __DIR__ . '/../Stubs/private.key'));
 | 
			
		||||
        $grant->setAccessTokenRepository($accessTokenRepositoryMock);
 | 
			
		||||
        $grant->setScopeRepository($scopeRepositoryMock);
 | 
			
		||||
 | 
			
		||||
        $grant->completeAuthorizationRequest($authRequest);
 | 
			
		||||
    }
 | 
			
		||||
@@ -378,9 +396,14 @@ class ImplicitGrantTest extends TestCase
 | 
			
		||||
        $accessTokenRepositoryMock->method('getNewToken')->willReturn(new AccessTokenEntity());
 | 
			
		||||
        $accessTokenRepositoryMock->method('persistNewAccessToken')->willThrowException(UniqueTokenIdentifierConstraintViolationException::create());
 | 
			
		||||
 | 
			
		||||
        $scopeRepositoryMock = $this->getMockBuilder(ScopeRepositoryInterface::class)->getMock();
 | 
			
		||||
        $scopeEntity = new ScopeEntity();
 | 
			
		||||
        $scopeRepositoryMock->method('finalizeScopes')->willReturnArgument(0);
 | 
			
		||||
 | 
			
		||||
        $grant = new ImplicitGrant(new \DateInterval('PT10M'));
 | 
			
		||||
        $grant->setPrivateKey(new CryptKey('file://' . __DIR__ . '/../Stubs/private.key'));
 | 
			
		||||
        $grant->setAccessTokenRepository($accessTokenRepositoryMock);
 | 
			
		||||
        $grant->setScopeRepository($scopeRepositoryMock);
 | 
			
		||||
 | 
			
		||||
        $grant->completeAuthorizationRequest($authRequest);
 | 
			
		||||
    }
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user