Route Supabase REST/Auth/Storage/Functions traffic through api.caterium.ru proxy
The api.caterium.ru PHP reverse proxy has been deployed and verified end-to-end (curl tests plus live authenticated RPC calls through a real browser session). This switches the client's Supabase fetch calls to go through the proxy so requests from Russia work without a VPN. Realtime's WebSocket connection is unaffected since it doesn't go through fetch. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
parent
aafad18d6a
commit
5d73b2c37e
@ -1988,6 +1988,17 @@ window.SUN_LEGACY_CATALOG_V175=[{"id":"1","name":"Фуршетный бокс
|
|||||||
|
|
||||||
const DEFAULT_SUPABASE_URL = 'https://cksuehzcimitsxmeloes.supabase.co';
|
const DEFAULT_SUPABASE_URL = 'https://cksuehzcimitsxmeloes.supabase.co';
|
||||||
const DEFAULT_SUPABASE_KEY = 'sb_publishable_v8Z3hEBnu7zsDwAb5KCWcg_T96IejsM';
|
const DEFAULT_SUPABASE_KEY = 'sb_publishable_v8Z3hEBnu7zsDwAb5KCWcg_T96IejsM';
|
||||||
|
const SUPABASE_API_PROXY = 'https://api.caterium.ru';
|
||||||
|
function supabaseProxyFetch(input, init) {
|
||||||
|
try {
|
||||||
|
const url = typeof input === 'string' ? input : input?.url;
|
||||||
|
if (url && url.indexOf(DEFAULT_SUPABASE_URL) === 0) {
|
||||||
|
const proxied = SUPABASE_API_PROXY + url.slice(DEFAULT_SUPABASE_URL.length);
|
||||||
|
input = typeof input === 'string' ? proxied : new Request(proxied, input);
|
||||||
|
}
|
||||||
|
} catch (_) {}
|
||||||
|
return fetch(input, init);
|
||||||
|
}
|
||||||
|
|
||||||
let config = loadConfig();
|
let config = loadConfig();
|
||||||
let client = null;
|
let client = null;
|
||||||
@ -2951,7 +2962,7 @@ window.SUN_LEGACY_CATALOG_V175=[{"id":"1","name":"Фуршетный бокс
|
|||||||
await loadSupabaseLibrary();
|
await loadSupabaseLibrary();
|
||||||
const signature=`${config.url}|${config.key}`;
|
const signature=`${config.url}|${config.key}`;
|
||||||
if(!client||signature!==clientSignature){
|
if(!client||signature!==clientSignature){
|
||||||
client=window.supabase.createClient(config.url,config.key,{auth:{persistSession:true,autoRefreshToken:true,detectSessionInUrl:true}});clientSignature=signature;
|
client=window.supabase.createClient(config.url,config.key,{auth:{persistSession:true,autoRefreshToken:true,detectSessionInUrl:true},global:{fetch:supabaseProxyFetch}});clientSignature=signature;
|
||||||
client.auth.onAuthStateChange((_event,next)=>{session=next;membershipsLoading=Boolean(next?.user);membershipsLoaded=!next?.user;setTimeout(async()=>{try{if(!next?.user){const sw=await switchTenantLocal('');if(sw.changed){location.reload();return;}}else{const sw=await loadMemberships();if(sw){location.reload();return;}}}finally{renderCloudUI();updatePill();}},0);});
|
client.auth.onAuthStateChange((_event,next)=>{session=next;membershipsLoading=Boolean(next?.user);membershipsLoaded=!next?.user;setTimeout(async()=>{try{if(!next?.user){const sw=await switchTenantLocal('');if(sw.changed){location.reload();return;}}else{const sw=await loadMemberships();if(sw){location.reload();return;}}}finally{renderCloudUI();updatePill();}},0);});
|
||||||
}
|
}
|
||||||
const {data,error}=await client.auth.getSession();if(error)throw error;session=data.session||null;
|
const {data,error}=await client.auth.getSession();if(error)throw error;session=data.session||null;
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user