uralkal: zitadel-action — при 403 на admin API берёт организацию токена через /management/v1/orgs/me
This commit is contained in:
parent
59a02bc7dc
commit
297f4b0adf
@ -77,20 +77,34 @@ data:
|
||||
client = httpx.Client(base_url=ZITADEL, headers=HEADERS, timeout=30)
|
||||
|
||||
|
||||
def call(method, path, body=None, org_id=None):
|
||||
def call(method, path, body=None, org_id=None, allow=()):
|
||||
headers = {"x-zitadel-orgid": org_id} if org_id else {}
|
||||
r = client.request(method, path, json=body, headers=headers)
|
||||
if r.status_code in allow:
|
||||
return None
|
||||
if r.status_code >= 300:
|
||||
print(f"{method} {path} -> {r.status_code}: {r.text}")
|
||||
sys.exit(1)
|
||||
return r.json() if r.content else {}
|
||||
|
||||
|
||||
orgs = call("POST", "/admin/v1/orgs/_search", {"queries": []}).get("result", [])
|
||||
org = next((o for o in orgs if o.get("name", "").lower() == ORG_NAME.lower()), None)
|
||||
if org is None:
|
||||
print(f"org '{ORG_NAME}' not found, available: {[o.get('name') for o in orgs]}")
|
||||
sys.exit(1)
|
||||
me = call("GET", "/auth/v1/users/me")["user"]
|
||||
print(f"token user {me.get('userName')} id={me.get('id')}")
|
||||
|
||||
org = None
|
||||
found_orgs = call("POST", "/admin/v1/orgs/_search", {"queries": []}, allow=(403,))
|
||||
if found_orgs is not None:
|
||||
orgs = found_orgs.get("result", [])
|
||||
org = next((o for o in orgs if o.get("name", "").lower() == ORG_NAME.lower()), None)
|
||||
if org is None:
|
||||
print(f"org '{ORG_NAME}' not found, available: {[o.get('name') for o in orgs]}")
|
||||
sys.exit(1)
|
||||
else:
|
||||
org = call("GET", "/management/v1/orgs/me")["org"]
|
||||
print(f"no instance permissions, using token org '{org.get('name')}'")
|
||||
if org.get("name", "").lower() != ORG_NAME.lower():
|
||||
print(f"token org is '{org.get('name')}', not '{ORG_NAME}'")
|
||||
sys.exit(1)
|
||||
org_id = org["id"]
|
||||
print(f"org {org['name']} id={org_id}")
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user