Download airs/base.py from airsltd/mcps: direct link, hf CLI and curl.
- Browser
- Download file 3.96 kB
-
https://huggingface.co/spaces/airsltd/mcps/resolve/main/airs/base.py
- Command line
-
hf download hf://spaces/airsltd/mcps/airs/base.py
-
curl -L -o base.py https://huggingface.co/spaces/airsltd/mcps/resolve/main/airs/base.py
3.96 kB
| import os | |
| from supabase import create_client, Client | |
| # 创建 Base 类,Base类主要实现应用的用户管理,数据库连接等功能 | |
| 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: # Supabase Python SDK 在错误时 user 为 None | |
| return {"success": False, "error": response.session.user.identities[0].identity_data['error']} # 尝试获取更具体的错误信息 | |
| # 注册成功 | |
| return { | |
| "success": True, | |
| "user": response.user.model_dump(), # 将 UserModel 转换为字典 | |
| "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: # Supabase Python SDK 在错误时 user 为 None | |
| return {"success": False, "error": response.session.user.identities[0].identity_data['error']} # 尝试获取更具体的错误信息 | |
| # 登录成功,保存会话信息 | |
| return { | |
| "success": True, | |
| "user": response.user.model_dump(), # 将 UserModel 转换为字典 | |
| "session": response.session.model_dump(), # 将 SessionModel 转换为字典 | |
| "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() # 将 UserModel 转换为字典 | |
| 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() | |
| # Supabase Python SDK 的 sign_out 不直接返回 error 属性, | |
| # 成功时通常返回 None 或一个空对象 | |
| # 如果有异常会直接抛出 | |
| return True | |
| except Exception as e: | |
| print(f"退出登录出错: {str(e)}") | |
| return False | |
| def test(self): | |
| """ | |
| 测试方法,返回一个简单的字符串 | |
| """ | |
| return "Base class test method called" |