feat(auth): add CPA mint pipeline
This commit is contained in:
@@ -0,0 +1,64 @@
|
||||
"""High-level OIDC mint + export pipeline."""
|
||||
|
||||
from .browser_confirm import mint_with_browser
|
||||
from .schema import DEFAULT_BASE_URL, build_cpa_xai_auth
|
||||
from .writer import write_cpa_xai_auth
|
||||
|
||||
|
||||
def mint_and_export(
|
||||
email,
|
||||
password,
|
||||
auth_dir,
|
||||
page=None,
|
||||
proxy=None,
|
||||
headless=False,
|
||||
base_url=DEFAULT_BASE_URL,
|
||||
browser_timeout_sec=240.0,
|
||||
force_standalone=True,
|
||||
cookies=None,
|
||||
reuse_browser=True,
|
||||
recycle_every=15,
|
||||
log=None,
|
||||
cancel=None,
|
||||
):
|
||||
logger = log or (lambda message: None)
|
||||
email = str(email or "").strip()
|
||||
password = str(password or "")
|
||||
if not email or not password:
|
||||
return {"ok": False, "email": email, "error": "missing email/password"}
|
||||
try:
|
||||
tokens = mint_with_browser(
|
||||
email=email,
|
||||
password=password,
|
||||
page=None if force_standalone else page,
|
||||
proxy=proxy,
|
||||
headless=bool(headless),
|
||||
browser_timeout_sec=float(browser_timeout_sec),
|
||||
poll_log=logger,
|
||||
cancel=cancel,
|
||||
force_standalone=bool(force_standalone),
|
||||
cookies=cookies,
|
||||
reuse_browser=bool(reuse_browser),
|
||||
recycle_every=int(recycle_every or 0),
|
||||
)
|
||||
except Exception as exc:
|
||||
logger("mint failed: %s" % exc)
|
||||
return {"ok": False, "email": email, "error": str(exc)}
|
||||
payload = build_cpa_xai_auth(
|
||||
email=email,
|
||||
access_token=tokens["access_token"],
|
||||
refresh_token=tokens["refresh_token"],
|
||||
id_token=tokens.get("id_token"),
|
||||
expires_in=tokens.get("expires_in"),
|
||||
base_url=base_url,
|
||||
token_endpoint=tokens.get("token_endpoint") or "",
|
||||
)
|
||||
path = write_cpa_xai_auth(auth_dir, payload)
|
||||
logger("wrote %s" % path)
|
||||
return {
|
||||
"ok": True,
|
||||
"email": email,
|
||||
"path": str(path),
|
||||
"user_code": tokens.get("user_code"),
|
||||
"base_url": str(base_url or DEFAULT_BASE_URL),
|
||||
}
|
||||
Reference in New Issue
Block a user