fix UIDesktop Get_UIOList & UIWeb WebUserUACHierarchyGet

merge-requests/2/head
Vladislav Klychkov 2 years ago
parent b265823b98
commit c16dde0fbb

@ -118,10 +118,10 @@ def IdentifyAuthorize(inRequest:Request, inResponse:Response,
raise HTTPException(status_code=401, detail="Попытка авторизации не прошла успешно (неверная пара логин / пароль)", headers={})
######################################
else:
raise HTTPException(status_code=401, detail="Попытка авторизации не прошла успешно (неполная пара логин / пароль)", headers={'Content-type':'text/html', 'WWW-Authenticate':'Basic'})
raise HTTPException(status_code=401, detail="Попытка авторизации не прошла успешно (неполная пара логин / пароль)", headers={ 'WWW-Authenticate':'Basic'})
else: return None # Credentials are not required - return none
#network.predictor.enabled
lRouteList =[]

@ -623,6 +623,14 @@ def OrchestratorIsAdmin():
elif CrossOS.IS_LINUX_BOOL: return os.getuid()==0
else: return True
def OrchestratorIsCredentialsAsk():
"""L+,W+: Проверить, активирована ли авторизация при переходе к Оркестратору.
:return: True - Активирована; False - Деактивирована
"""
inGSettings = GSettingsGet()
return inGSettings["ServerDict"]["AccessUsers"]["FlagCredentialsAsk"]
def OrchestratorIsInited() -> bool:
"""L+,W+: Проверить, было ли проинициализировано ядро Оркестратора
@ -1069,6 +1077,11 @@ def WebUserLoginGet(inAuthTokenStr: str=None) -> str:
:return: Логин пользователя
:rtype: str
"""
isCredentialAsk = OrchestratorIsCredentialsAsk()
if isCredentialAsk:
if inAuthTokenStr is None: raise ConnectionError("Не удается получить токен для авторизации")
else:
if inAuthTokenStr is None: return None
inGS = GSettingsGet() # Get the global settings
return inGS.get("ServerDict", {}).get("AccessUsers", {}).get("AuthTokensDict", {}).get(inAuthTokenStr, {}).get("User", None)
@ -1082,17 +1095,21 @@ def WebUserDomainGet(inAuthTokenStr: str=None) -> str:
:rtype: str
"""
isCredentialAsk = OrchestratorIsCredentialsAsk()
if isCredentialAsk:
if inAuthTokenStr is None: raise ConnectionError("Не удается получить токен для авторизации")
else:
if inAuthTokenStr is None: return None
inGS = GSettingsGet() # Get the global settings
return inGS.get("ServerDict", {}).get("AccessUsers", {}).get("AuthTokensDict", {}).get(inAuthTokenStr, {}).get("Domain", None)
def WebUserInfoGet(inAuthTokenStr=None):
"""L+,W+: Информация о пользователе, который отправил HTTP запрос.
:param inRequest: Экземпляр HTTP request. Опционален, если сообщение фиксируется из под потока, который был инициирован запросом пользователя
:return: Сведения в формате {"DomainUpperStr": "PYOPENRPA", "UserNameUpperStr": "IVAN.MASLOV"}
"""
try:
lResultDict = {
"DomainUpperStr": WebUserDomainGet(inAuthTokenStr=inAuthTokenStr).upper(),
@ -1109,6 +1126,7 @@ def WebUserIsSuperToken(inAuthTokenStr: str=None):
:type inAuthTokenStr: str, опционально
:return: True - является супертокеном; False - не является супертокеном; None - авторизация не производилась
"""
if inAuthTokenStr is None: return None
inGSettings = GSettingsGet() # Get the global settings
lIsSuperTokenBool = False
@ -1123,7 +1141,13 @@ def WebUserUACHierarchyGet(inAuthTokenStr: str=None) -> dict:
:type inAuthTokenStr: str, опционально
:return: UAC словарь доступа или {}, что означает полный доступ
"""
isCredentialAsk = OrchestratorIsCredentialsAsk()
if isCredentialAsk:
if inAuthTokenStr is None: raise ConnectionError("Не удается получить токен для авторизации")
else:
if inAuthTokenStr is None: return {}
lDomainUpperStr = WebUserDomainGet(inAuthTokenStr=inAuthTokenStr).upper()
lUserUpperStr = WebUserLoginGet(inAuthTokenStr=inAuthTokenStr).upper()
if lUserUpperStr is None: return {}
@ -1137,7 +1161,14 @@ def WebUserUACCheck(inAuthTokenStr:str=None, inKeyList:list=None) -> bool:
:return: True - доступ имеется, False - доступа нет
:rtype: bool
"""
if inAuthTokenStr is None: return True # Если авторизации не происходило - супердоступ
isCredentialAsk = OrchestratorIsCredentialsAsk()
# Если авторизации не происходило - супердоступ
if isCredentialAsk:
if inAuthTokenStr is None: return False
else:
if inAuthTokenStr is None: return True
lResult = True # Init flag
lRoleHierarchyDict = WebUserUACHierarchyGet(inAuthTokenStr=inAuthTokenStr) # get the Hierarchy
# Try to get value from key list

@ -128,6 +128,7 @@ def UIOSelector_Get_UIOList (inSpecificationList,inElement=None,inFlagRaiseExcep
inSpecificationList=copy.deepcopy(inSpecificationList)
lResultList=[]
lChildrenList=[]
try:
#Получить родительский объект если на вход ничего не поступило
if inElement is None:
#сформировать спецификацию на получение элемента
@ -245,6 +246,9 @@ def UIOSelector_Get_UIOList (inSpecificationList,inElement=None,inFlagRaiseExcep
if inElement is None and len(lResultList)==0 and inFlagRaiseException:
raise pywinauto.findwindows.ElementNotFoundError("Robot can't find element by the UIOSelector")
return lResultList
except Exception:
if inFlagRaiseException: raise ValueError("Не удается получить UIOList")
else: return []
#old:PywinautoExtElementGet
def UIOSelector_Get_UIO (inSpecificationList,inElement=None,inFlagRaiseException=True):

Loading…
Cancel
Save