65 lines
2.0 KiB
Python
65 lines
2.0 KiB
Python
import sqlite3
|
|
import os
|
|
|
|
|
|
class CursorAuthManager:
|
|
"""Cursor认证信息管理器"""
|
|
|
|
def __init__(self):
|
|
# 判断操作系统
|
|
if os.name == "nt": # Windows
|
|
self.db_path = os.path.join(
|
|
os.getenv("APPDATA"), "Cursor", "User", "globalStorage", "state.vscdb"
|
|
)
|
|
else: # macOS
|
|
self.db_path = os.path.expanduser(
|
|
"~/Library/Application Support/Cursor/User/globalStorage/state.vscdb"
|
|
)
|
|
|
|
def update_auth(self, email=None, access_token=None, refresh_token=None):
|
|
"""
|
|
更新Cursor的认证信息
|
|
:param email: 新的邮箱地址
|
|
:param access_token: 新的访问令牌
|
|
:param refresh_token: 新的刷新令牌
|
|
:return: bool 是否成功更新
|
|
"""
|
|
updates = []
|
|
if email is not None:
|
|
updates.append(("cursorAuth/cachedEmail", email))
|
|
if access_token is not None:
|
|
updates.append(("cursorAuth/accessToken", access_token))
|
|
if refresh_token is not None:
|
|
updates.append(("cursorAuth/refreshToken", refresh_token))
|
|
|
|
if not updates:
|
|
print("没有提供任何要更新的值")
|
|
return False
|
|
|
|
conn = None
|
|
try:
|
|
conn = sqlite3.connect(self.db_path)
|
|
cursor = conn.cursor()
|
|
|
|
for key, value in updates:
|
|
query = "UPDATE itemTable SET value = ? WHERE key = ?"
|
|
cursor.execute(query, (value, key))
|
|
|
|
if cursor.rowcount > 0:
|
|
print(f"成功更新 {key.split('/')[-1]}")
|
|
else:
|
|
print(f"未找到 {key.split('/')[-1]} 或值未变化")
|
|
|
|
conn.commit()
|
|
return True
|
|
|
|
except sqlite3.Error as e:
|
|
print("数据库错误:", str(e))
|
|
return False
|
|
except Exception as e:
|
|
print("发生错误:", str(e))
|
|
return False
|
|
finally:
|
|
if conn:
|
|
conn.close()
|