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={}) raise HTTPException(status_code=401, detail="Попытка авторизации не прошла успешно (неверная пара логин / пароль)", headers={})
###################################### ######################################
else: 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 else: return None # Credentials are not required - return none
#network.predictor.enabled
lRouteList =[] lRouteList =[]

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

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

Loading…
Cancel
Save