|
|
|
|
@ -1,3 +1,5 @@
|
|
|
|
|
import logging
|
|
|
|
|
|
|
|
|
|
from pydantic import BaseModel, Field
|
|
|
|
|
|
|
|
|
|
from services.enterprise.base import EnterpriseRequest
|
|
|
|
|
@ -16,55 +18,72 @@ class EnterpriseService:
|
|
|
|
|
def get_info(cls):
|
|
|
|
|
return EnterpriseRequest.send_request("GET", "/info")
|
|
|
|
|
|
|
|
|
|
@classmethod
|
|
|
|
|
def is_user_allowed_to_access_webapp(cls, user_id: str, app_code: str) -> bool:
|
|
|
|
|
params = {"userId": user_id, "appCode": app_code}
|
|
|
|
|
data = EnterpriseRequest.send_request("GET", "/webapp/permission", params=params)
|
|
|
|
|
class WebAppAuth:
|
|
|
|
|
@classmethod
|
|
|
|
|
def is_user_allowed_to_access_webapp(cls, user_id: str, app_code: str) -> bool:
|
|
|
|
|
params = {"userId": user_id, "appCode": app_code}
|
|
|
|
|
data = EnterpriseRequest.send_request("GET", "/webapp/permission", params=params)
|
|
|
|
|
|
|
|
|
|
return data.get("result", False)
|
|
|
|
|
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 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 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 batch_get_app_access_mode_by_id(cls, app_ids: list[str]) -> dict[str, WebAppSettings]:
|
|
|
|
|
if not app_ids:
|
|
|
|
|
raise ValueError("app_ids must be provided.")
|
|
|
|
|
params = {"appIds": ",".join(app_ids)}
|
|
|
|
|
data: dict[str, str] = EnterpriseRequest.send_request("GET", "/webapp/access-mode/batch/id", params=params)
|
|
|
|
|
if not data:
|
|
|
|
|
raise ValueError("No data found.")
|
|
|
|
|
|
|
|
|
|
@classmethod
|
|
|
|
|
def update_app_access_mode(cls, app_id: str, access_mode: str) -> bool:
|
|
|
|
|
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'")
|
|
|
|
|
logging.info(f"Batch get app access mode by id returns data: {data}")
|
|
|
|
|
|
|
|
|
|
data = {
|
|
|
|
|
"appId": app_id,
|
|
|
|
|
"accessMode": access_mode
|
|
|
|
|
}
|
|
|
|
|
if not isinstance(data, dict):
|
|
|
|
|
raise ValueError("Invalid data format.")
|
|
|
|
|
|
|
|
|
|
response = EnterpriseRequest.send_request("POST", "/webapp/access-mode", json=data)
|
|
|
|
|
for key, value in data.items():
|
|
|
|
|
curr = WebAppSettings()
|
|
|
|
|
curr.access_mode = value
|
|
|
|
|
data[key] = curr
|
|
|
|
|
|
|
|
|
|
return response.get("result", False)
|
|
|
|
|
return data
|
|
|
|
|
|
|
|
|
|
@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)
|
|
|
|
|
@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) -> bool:
|
|
|
|
|
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)
|
|
|
|
|
|