diff --git a/js/ui/profileModalController.js b/js/ui/profileModalController.js index 8655c0ae..0d54727f 100644 --- a/js/ui/profileModalController.js +++ b/js/ui/profileModalController.js @@ -9294,12 +9294,26 @@ export class ProfileModalController { const secretAccessKey = this.storageSecretKeyInput?.value?.trim() || ""; const bucket = this.storageBucketInput?.value?.trim() || ""; const forcePathStyle = provider === PROVIDERS.GENERIC; + const publicBaseUrl = this.storagePrefixInput?.value?.trim() || ""; if (!accessKeyId || !secretAccessKey || !endpointOrAccount) { this.setStorageFormStatus("Missing credentials for test.", "error"); return; } + if ( + provider === "cloudflare_r2" && + (publicBaseUrl.includes(".r2.cloudflarestorage.com") || + publicBaseUrl.includes(".s3.") || + publicBaseUrl.includes(".amazonaws.com")) + ) { + this.setStorageFormStatus( + "Invalid Public URL. Please use your R2.dev or custom domain.", + "error", + ); + return; + } + this.setStorageFormStatus("Testing connection...", "info"); const config = { @@ -9312,6 +9326,8 @@ export class ProfileModalController { if (provider === "cloudflare_r2") { config.accountId = endpointOrAccount; + config.publicBaseUrl = publicBaseUrl; + config.baseDomain = publicBaseUrl; } else { config.endpoint = endpointOrAccount; config.forcePathStyle = forcePathStyle;