| import os |
| from supabase import create_client, Client |
|
|
| |
| class Base: |
| def __init__(self): |
| supabase_url = os.getenv("SUPABASE_URL") |
| supabase_key = os.getenv("SUPABASE_KEY") |
|
|
| if not supabase_url or not supabase_key: |
| raise ValueError("SUPABASE_URL and SUPABASE_KEY environment variables must be set.") |
|
|
| self.supabase: Client = create_client(supabase_url, supabase_key) |
|
|
| def sign_up_with_email(self, email, password): |
| """ |
| 使用邮箱和密码注册新用户 |
| |
| Args: |
| email: 用户邮箱 |
| password: 用户密码 |
| |
| Returns: |
| 成功返回用户数据,失败返回错误信息 |
| """ |
| try: |
| |
| response = self.supabase.auth.sign_up({ |
| "email": email, |
| "password": password |
| }) |
|
|
| |
| if response.user is None: |
| return {"success": False, "error": response.session.user.identities[0].identity_data['error']} |
| |
| |
| return { |
| "success": True, |
| "user": response.user.model_dump(), |
| "message": "注册成功!请检查邮箱完成验证。" |
| } |
| except Exception as e: |
| return {"success": False, "error": str(e)} |
|
|
| def sign_in_with_email(self, email, password): |
| """ |
| 使用邮箱和密码登录 |
| |
| Args: |
| email: 用户邮箱 |
| password: 用户密码 |
| |
| Returns: |
| 成功返回用户数据和会话信息,失败返回错误信息 |
| """ |
| try: |
| |
| response = self.supabase.auth.sign_in_with_password({ |
| "email": email, |
| "password": password |
| }) |
|
|
| |
| if response.user is None: |
| return {"success": False, "error": response.session.user.identities[0].identity_data['error']} |
|
|
| |
| return { |
| "success": True, |
| "user": response.user.model_dump(), |
| "session": response.session.model_dump(), |
| "message": "登录成功!" |
| } |
| except Exception as e: |
| return {"success": False, "error": str(e)} |
|
|
| def get_current_user(self): |
| """ |
| 获取当前登录用户 |
| |
| Returns: |
| 用户信息或 None |
| """ |
| try: |
| |
| response = self.supabase.auth.get_session() |
|
|
| if response.session: |
| return response.user.model_dump() |
| else: |
| return None |
| except Exception as e: |
| print(f"获取用户信息出错: {str(e)}") |
| return None |
|
|
| def sign_out(self): |
| """ |
| 退出登录 |
| |
| Returns: |
| 成功返回 True,失败返回 False |
| """ |
| try: |
| response = self.supabase.auth.sign_out() |
| |
| |
| |
| return True |
| except Exception as e: |
| print(f"退出登录出错: {str(e)}") |
| return False |
|
|
| def test(self): |
| """ |
| 测试方法,返回一个简单的字符串 |
| """ |
| return "Base class test method called" |