from tools import * from AppBridge import * from Utils.Lib import * from Utils.Config import * from Utils.Models import * from Utils.Object import * from Utils.Browser import * class UGM: def __init__(self): pass @staticmethod def GetUserDataByUserUUID(UserUUID: UUIDObj) -> GERPUser: if not UserUUID: return return GERPUser.query.filter(GERPUser.UserUUID == UserUUID).first() @staticmethod def GetUserDataByUserName(UserName) -> GERPUser: if not UserName: return return GERPUser.query.filter(GERPUser.UserName == UserName).first() @staticmethod def GetUserAvatar(User: GERPUser) -> bytes: if not User: return False return GERPUserAvatar.query.filter(GERPUserAvatar.UserUUID == UUIDObj(User.UserUUID)).first() @staticmethod def CreateELT(User: GERPUser, MaxTime: int = 3600 * 24 * 30, Type: int = 0, AllowIP: list = None, Commit: bool = True) -> GERPUserELT: ELTSession = GERPUserELT() ELTSession.ELTUUID = UUIDObj(NewUUID()) ELTSession.ELTUserUUID = UUIDObj(User.UserUUID) ELTSession.ELTCreatime = Timer.GetTime() ELTSession.ELTEndTime = Timer.GetTime() + datetime.timedelta(seconds=MaxTime) ELTSession.ELTType = Type ELTSession.ELTAllowIP = AllowIP if AllowIP else [IP.GetIP()] if Commit: try: db.session.add(ELTSession) db.session.commit() except: traceback.print_exc() return False return ELTSession @staticmethod def VerifyELT(ELT: UUIDObj = None) -> GERPUserELT | bool: if not ELT or type(ELT) != UUIDObj: ELT = Cookie.get("ELToken") if not ELT: return False _: GERPUserELT = GERPUserELT.query.filter( GERPUserELT.ELTUUID == UUIDObj(ELT) ).first() if not _: return False if _.ELTEndTime.timestamp() < time.time(): return False current_ip = IP.GetIP() if current_ip and current_ip != "*" and not "*" in (_.ELTAllowIP or []) and current_ip not in (_.ELTAllowIP or []): return False return _ @staticmethod def GetELTUser(ELT: UUIDObj = None) -> GERPUser | None: if not (E := UGM.VerifyELT(ELT)): return False return E.User _UGM = UGM