11
2+ import base64
23from typing import Optional
34from fastapi import Request
45from fastapi .responses import JSONResponse
@@ -127,11 +128,12 @@ async def validateEmbedded(self, param: str, trans: I18n) -> tuple[any]:
127128 options = {"verify_signature" : False , "verify_exp" : False },
128129 algorithms = [security .ALGORITHM ]
129130 )
130- if not payload ['embeddedId' ]:
131- return False , f"Miss embeddedId payload error!"
131+ app_key = payload .get ('appId' , '' )
132+ embeddedId = payload .get ('embeddedId' , None )
133+ if not embeddedId :
134+ embeddedId = xor_decrypt (app_key )
132135 if not payload ['account' ]:
133136 return False , f"Miss account payload error!"
134- embeddedId = payload ['embeddedId' ]
135137 account = payload ['account' ]
136138 with Session (engine ) as session :
137139 """ session_user = await get_user_info(session = session, user_id = token_data.id)
@@ -156,4 +158,10 @@ async def validateEmbedded(self, param: str, trans: I18n) -> tuple[any]:
156158 except Exception as e :
157159 SQLBotLogUtil .exception (f"Embedded validation error: { str (e )} " )
158160 # Return False and the exception message
159- return False , e
161+ return False , e
162+
163+ def xor_decrypt (encrypted_str : str , key : int = 0xABCD1234 ) -> int :
164+ encrypted_bytes = base64 .urlsafe_b64decode (encrypted_str )
165+ hex_str = encrypted_bytes .hex ()
166+ encrypted_num = int (hex_str , 16 )
167+ return encrypted_num ^ key
0 commit comments