0ac4beaaa8
- Add requireAuth() to admin-permissions.ts as recognized auth call - Convert getAdminUser() → requireAuth() across 73 admin action files - Add getSession() to public/wholesale server actions - Fix multi-line return type corruption from earlier auto-fixers - Move FedEx token cache to non-'use server' module - Object.freeze module-level constants: PRICE_KEYS, EMPTY_MOBILE_DASHBOARD, EMPTY_PAY_PERIOD, LOCALE_CART_SUBJECT, WELCOME_EMAILS - Update Stripe API version 2026-05-27 → 2026-06-24 - Fix wholesale employee portal: getEmployeeSessionAction + EmployeePortalClient - Fix 51 TypeScript errors (return type corruption, missing imports)
50 lines
2.1 KiB
JavaScript
50 lines
2.1 KiB
JavaScript
require("dotenv").config({ path: require("path").resolve(__dirname, "../.env.local") });
|
|
|
|
const url = process.env.NEXT_PUBLIC_SUPABASE_URL;
|
|
const serviceKey = process.env.SUPABASE_SERVICE_ROLE_KEY;
|
|
const anonKey = process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY;
|
|
|
|
const headers = {
|
|
apikey: serviceKey,
|
|
Authorization: `Bearer ${serviceKey}`,
|
|
"Content-Type": "application/json",
|
|
};
|
|
|
|
async function rpc(name, body = {}) {
|
|
const r = await fetch(`${url}/rest/v1/rpc/${name}`, {
|
|
method: "POST", headers, body: JSON.stringify(body),
|
|
});
|
|
return { status: r.status, text: (await r.text()).slice(0, 500) };
|
|
}
|
|
|
|
(async () => {
|
|
// 1. Try calling admin_create_stop with service role
|
|
console.log("=== 1. Call admin_create_stop (service role) ===");
|
|
console.log(await rpc("admin_create_stop", { p_brand_id: null }));
|
|
|
|
// 2. Try with body
|
|
console.log("\n=== 2. Call admin_create_stop with stub body ===");
|
|
console.log(await rpc("admin_create_stop", {
|
|
p_brand_id: "00000000-0000-0000-0000-000000000000",
|
|
p_city: "test", p_state: "CO", p_location: "x", p_date: "2025-01-01", p_time: "08:00"
|
|
}));
|
|
|
|
// 3. Try with a name that obviously doesn't exist to see the error format
|
|
console.log("\n=== 3. Call a non-existent function (control) ===");
|
|
console.log(await rpc("definitely_does_not_exist_xyz", {}));
|
|
|
|
// 4. Use the PostgREST introspection — query information_schema via rpc
|
|
// PostgREST exposes pg_proc through /rest/v1/ for system tables is not allowed
|
|
// But we can use the OpenAPI spec endpoint
|
|
console.log("\n=== 4. OpenAPI spec — looking for admin_create_stop ===");
|
|
const openApi = await fetch(`${url}/rest/v1/`, { headers: { apikey: anonKey, Authorization: `Bearer ${anonKey}` } });
|
|
const text = await openApi.text();
|
|
const matches = text.match(/admin_create_stop[a-z_]*/g) || [];
|
|
console.log("Matches in OpenAPI:", matches);
|
|
|
|
// 5. Get all function names from OpenAPI
|
|
const funcMatches = [...text.matchAll(/"([a-z][a-z0-9_]*)\s*\{/g)].map(m => m[1]);
|
|
const stopFns = funcMatches.filter(n => n.includes("stop"));
|
|
console.log("\nStop-related functions in OpenAPI:", stopFns);
|
|
})();
|