1
0
Fork 0
mirror of synced 2024-06-28 19:21:05 +12:00
Rare/rare/components/dialogs/login/browser_login.py

47 lines
1.6 KiB
Python
Raw Normal View History

import json
from logging import getLogger
2021-05-29 06:34:34 +12:00
from PyQt5.QtCore import pyqtSignal, QUrl
from PyQt5.QtGui import QDesktopServices
from PyQt5.QtWidgets import QWidget
from custom_legendary.core import LegendaryCore
2021-05-29 06:34:34 +12:00
from rare.ui.components.dialogs.login.browser_login import Ui_BrowserLogin
logger = getLogger("BrowserLogin")
2021-02-18 22:22:15 +13:00
2021-05-29 06:34:34 +12:00
class BrowserLogin(QWidget, Ui_BrowserLogin):
success = pyqtSignal()
2021-05-29 06:34:34 +12:00
changed = pyqtSignal()
login_url = "https://www.epicgames.com/id/login?redirectUrl=https%3A%2F%2Fwww.epicgames.com%2Fid%2Fapi%2Fredirect"
2021-05-29 06:34:34 +12:00
def __init__(self, core: LegendaryCore, parent=None):
super(BrowserLogin, self).__init__(parent=parent)
self.setupUi(self)
2021-05-29 06:34:34 +12:00
self.core = core
2021-05-29 06:34:34 +12:00
self.open_button.clicked.connect(lambda: QDesktopServices.openUrl(QUrl(self.login_url)))
self.sid_edit.textChanged.connect(self.changed.emit)
2021-05-29 06:34:34 +12:00
def is_valid(self):
return len(self.sid_edit.text()) == 32
2021-05-29 06:34:34 +12:00
def do_login(self):
self.status_label.setText(self.tr("Logging in..."))
sid = self.sid_edit.text()
# when the text copied
if sid.startswith("{") and sid.endswith("}"):
sid = json.loads(sid)["sid"]
2021-05-29 06:34:34 +12:00
try:
token = self.core.auth_sid(sid)
if self.core.auth_code(token):
logger.info(f"Successfully logged in as {self.core.lgd.userdata['displayName']}")
self.success.emit()
else:
self.status_label.setText(self.tr("Login failed."))
logger.warning("Failed to login through browser")
except Exception as e:
logger.warning(e)