P::OBTAIN_OWN_ACCOUNT_INFO, self::ACCOUNT_EMAIL => P::OBTAIN_ACCOUNT_EMAIL, ]; private const array ALLOWED_SCOPES = [ P::OBTAIN_OWN_ACCOUNT_INFO, P::OBTAIN_ACCOUNT_EMAIL, P::MINECRAFT_SERVER_SESSION, self::OFFLINE_ACCESS, self::CHANGE_SKIN, ]; public function getScopeEntityByIdentifier($identifier): ?ScopeEntityInterface { $identifier = $this->convertToInternalPermission($identifier); if (!in_array($identifier, self::ALLOWED_SCOPES, true)) { return null; } return new ScopeEntity($identifier); } public function finalizeScopes( array $scopes, string $grantType, ClientEntityInterface $clientEntity, ?string $userIdentifier = null, ?string $authCodeId = null, ): array { return $scopes; } private function convertToInternalPermission(string $publicScope): string { return self::PUBLIC_SCOPES_TO_INTERNAL_PERMISSIONS[$publicScope] ?? $publicScope; } }