| |
| """Test Supabase signup and check auth configuration""" |
| import psycopg2 |
| import json |
| import urllib.request |
| import urllib.error |
|
|
| SUPABASE_URL = "https://mitlbxlqjibfcxswgmbq.supabase.co" |
|
|
| |
| conn = psycopg2.connect( |
| host='aws-1-eu-central-1.pooler.supabase.com', |
| port=5432, |
| dbname='postgres', |
| user='postgres.mitlbxlqjibfcxswgmbq', |
| password='Veteroner06.,' |
| ) |
| cur = conn.cursor() |
|
|
| |
| print("=== All auth.users ===") |
| cur.execute(""" |
| SELECT id, email, created_at, confirmed_at, banned_until, |
| is_sso_user, deleted_at, is_anonymous, |
| raw_app_meta_data |
| FROM auth.users ORDER BY created_at |
| """) |
| for row in cur.fetchall(): |
| print(f" email={row[1]}") |
| print(f" created={row[2]}, confirmed={row[3]}") |
| print(f" banned_until={row[4]}, is_sso={row[5]}, deleted={row[6]}, is_anon={row[7]}") |
| print(f" app_meta={row[8]}") |
| print() |
|
|
| |
| print("=== user_profiles ===") |
| cur.execute("SELECT id, display_name, is_admin, is_banned, created_at FROM user_profiles") |
| for row in cur.fetchall(): |
| print(f" id={str(row[0])[:8]}... name={row[1]} admin={row[2]} banned={row[3]} created={row[4]}") |
|
|
| |
| try: |
| cur.execute("SELECT * FROM auth.instances LIMIT 5") |
| print("\n=== auth.instances ===") |
| for row in cur.fetchall(): |
| print(f" {row}") |
| except Exception as e: |
| print(f"\n=== auth.instances: {e}") |
| conn.rollback() |
|
|
| |
| try: |
| cur.execute("SELECT count(*) FROM auth.flow_state") |
| print(f"\n=== auth.flow_state count: {cur.fetchone()[0]}") |
| except Exception as e: |
| print(f"\n=== auth.flow_state: {e}") |
| conn.rollback() |
|
|
| |
| try: |
| cur.execute(""" |
| SELECT count(*) FROM auth.users |
| WHERE created_at > now() - interval '1 hour' |
| """) |
| print(f"\n=== Users created in last hour: {cur.fetchone()[0]}") |
| except Exception as e: |
| print(f"\n=== Error: {e}") |
| conn.rollback() |
|
|
| |
| cur.execute(""" |
| SELECT prosrc FROM pg_proc WHERE proname = 'handle_new_user' |
| """) |
| row = cur.fetchone() |
| if row: |
| print("\n=== handle_new_user function source ===") |
| print(row[0]) |
|
|
| |
| cur.execute(""" |
| SELECT prosrc FROM pg_proc WHERE proname = 'is_admin' |
| """) |
| row = cur.fetchone() |
| if row: |
| print("\n=== is_admin function source ===") |
| print(row[0]) |
|
|
| |
| print("\n=== Syncing missing user_profiles ===") |
| cur.execute(""" |
| SELECT u.id, u.email, u.raw_user_meta_data |
| FROM auth.users u |
| LEFT JOIN user_profiles up ON u.id = up.id |
| WHERE up.id IS NULL |
| """) |
| missing = cur.fetchall() |
| print(f" Found {len(missing)} users without profiles") |
| for row in missing: |
| print(f" Missing: {row[1]} (id={str(row[0])[:8]}...)") |
|
|
| conn.close() |
|
|
| |
| print("\n=== Testing signup via Supabase REST API ===") |
| |
| |
| import os |
| import glob |
|
|
| anon_key = None |
| for pattern in [ |
| '/Volumes/LaCie/borsa_uygulamasi/nextjs-app/.env*', |
| '/Volumes/LaCie/borsa_uygulamasi/nextjs-app/.env.local', |
| '/Volumes/LaCie/borsa_uygulamasi/huggingface-space/nextjs-app/.env*', |
| ]: |
| for f in glob.glob(pattern): |
| try: |
| with open(f) as fh: |
| for line in fh: |
| if 'SUPABASE_ANON_KEY' in line and '=' in line: |
| val = line.split('=', 1)[1].strip() |
| if val and val != 'your_supabase_anon_key': |
| anon_key = val |
| print(f" Found anon key in {f}") |
| except: |
| pass |
|
|
| if anon_key: |
| |
| data = json.dumps({ |
| "email": "test_registration_check@example.com", |
| "password": "TestPass123!" |
| }).encode() |
| |
| req = urllib.request.Request( |
| f"{SUPABASE_URL}/auth/v1/signup", |
| data=data, |
| headers={ |
| "apikey": anon_key, |
| "Content-Type": "application/json" |
| } |
| ) |
| try: |
| resp = urllib.request.urlopen(req, timeout=15) |
| result = json.loads(resp.read()) |
| print(f" Signup result: {json.dumps(result, indent=2)[:500]}") |
| except urllib.error.HTTPError as e: |
| body = e.read().decode() |
| print(f" Signup HTTP Error {e.code}: {body}") |
| except Exception as e: |
| print(f" Signup error: {e}") |
| else: |
| print(" Could not find SUPABASE_ANON_KEY - checking .env files...") |
| for pattern in ['/Volumes/LaCie/borsa_uygulamasi/**/.env*']: |
| for f in glob.glob(pattern, recursive=True): |
| print(f" Found env file: {f}") |
|
|