| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- from pydantic import BaseModel, Field
-
- from services.enterprise.base import EnterpriseRequest
-
-
- class WebAppSettings(BaseModel):
- access_mode: str = Field(
- description="Access mode for the web app. Can be 'public' or 'private'",
- default="private",
- alias="accessMode",
- )
-
-
- class EnterpriseService:
- @classmethod
- def get_info(cls):
- return EnterpriseRequest.send_request("GET", "/info")
-
- @classmethod
- def get_workspace_info(cls, tenant_id: str):
- return EnterpriseRequest.send_request("GET", f"/workspace/{tenant_id}/info")
-
- class WebAppAuth:
- @classmethod
- def is_user_allowed_to_access_webapp(cls, user_id: str, app_code: str):
- params = {"userId": user_id, "appCode": app_code}
- data = EnterpriseRequest.send_request("GET", "/webapp/permission", params=params)
-
- return data.get("result", False)
-
- @classmethod
- def get_app_access_mode_by_id(cls, app_id: str) -> WebAppSettings:
- if not app_id:
- raise ValueError("app_id must be provided.")
- params = {"appId": app_id}
- data = EnterpriseRequest.send_request("GET", "/webapp/access-mode/id", params=params)
- if not data:
- raise ValueError("No data found.")
- return WebAppSettings(**data)
-
- @classmethod
- def batch_get_app_access_mode_by_id(cls, app_ids: list[str]) -> dict[str, WebAppSettings]:
- if not app_ids:
- return {}
- body = {"appIds": app_ids}
- data: dict[str, str] = EnterpriseRequest.send_request("POST", "/webapp/access-mode/batch/id", json=body)
- if not data:
- raise ValueError("No data found.")
-
- if not isinstance(data["accessModes"], dict):
- raise ValueError("Invalid data format.")
-
- ret = {}
- for key, value in data["accessModes"].items():
- curr = WebAppSettings()
- curr.access_mode = value
- ret[key] = curr
-
- return ret
-
- @classmethod
- def get_app_access_mode_by_code(cls, app_code: str) -> WebAppSettings:
- if not app_code:
- raise ValueError("app_code must be provided.")
- params = {"appCode": app_code}
- data = EnterpriseRequest.send_request("GET", "/webapp/access-mode/code", params=params)
- if not data:
- raise ValueError("No data found.")
- return WebAppSettings(**data)
-
- @classmethod
- def update_app_access_mode(cls, app_id: str, access_mode: str):
- if not app_id:
- raise ValueError("app_id must be provided.")
- if access_mode not in ["public", "private", "private_all"]:
- raise ValueError("access_mode must be either 'public', 'private', or 'private_all'")
-
- data = {"appId": app_id, "accessMode": access_mode}
-
- response = EnterpriseRequest.send_request("POST", "/webapp/access-mode", json=data)
-
- return response.get("result", False)
-
- @classmethod
- def cleanup_webapp(cls, app_id: str):
- if not app_id:
- raise ValueError("app_id must be provided.")
-
- body = {"appId": app_id}
- EnterpriseRequest.send_request("DELETE", "/webapp/clean", json=body)
|