| 1 |
<?php |
| 2 |
|
| 3 |
// phpcs:disable Yoast.NamingConventions.NamespaceName.MaxExceeded |
| 4 |
|
| 5 |
// phpcs:disable Yoast.NamingConventions.NamespaceName.TooLong -- Needed in the folder structure. |
| 6 |
namespace Yoast\WP\SEO\AI\HTTP_Request\Domain\Exceptions; |
| 7 |
|
| 8 |
/** |
| 9 |
* Thrown when the AI service rejects a request with a 403 carrying `error="insufficient_scope"`. |
| 10 |
* |
| 11 |
* This is distinct from a generic {@see Forbidden_Exception} because the recovery path differs: |
| 12 |
* a consent-revoked 403 should clear the user's consent and surface a re-consent prompt; a scope |
| 13 |
* failure should NOT touch consent (it's a deployment / token-issuance problem). Callers that catch |
| 14 |
* Forbidden_Exception to revoke consent must catch Insufficient_Scope_Exception first and re-throw |
| 15 |
* it untouched. |
| 16 |
*/ |
| 17 |
class Insufficient_Scope_Exception extends Forbidden_Exception { |
| 18 |
|
| 19 |
} |
| 20 |
|