diff options
| author | Tianhao Wang <wth@riseup.net> | 2023-12-15 12:36:02 +0000 |
|---|---|---|
| committer | Tianhao Wang <wth@riseup.net> | 2023-12-15 12:39:19 +0000 |
| commit | 1a145c3da2e8189d0be51c773f6d003a690930fe (patch) | |
| tree | dc38325722563f190856689aaed37012ffc2d705 | |
| parent | 331949a184e304c5a7d489ec50f1894526c7bd85 (diff) | |
clean up login logics
| -rw-r--r-- | cat.py | 48 |
1 files changed, 33 insertions, 15 deletions
@@ -9,29 +9,47 @@ import hnnews import catdb import emojis -# TODO re-organize auth mgmt. But it involves a lot of mamual testing so I'll -# leave it to the future... -def init_app(config): - Mastodon.create_app(config.APPNAME, api_base_url=config.BASEURL, - to_file=config.CLIENTID) - session = login_refresh_token() +class VnilCat: + # recover session > login > init_app + def init_app(self): + try: + Mastodon.create_app(self.config.APPNAME, api_base_url=self.config.BASEURL, to_file=self.config.CLIENTID) + self.session = Mastodon(client_id=self.config.CLIENTID, access_token=self.config.TOKEN, feature_set="pleroma") + except Exception as e: + print("[booting] app init failed") -def login_refresh_token(config): - session = Mastodon(client_id=config.CLIENTID) - session.log_in(username=config.UNAME, - password=config.PW, to_file=config.TOKEN) - return session + def login(self): + print("[auth] trying manual login") + if self.config.UNAME == "" or self.config.PW == "": + (self.config.UNAME, self.config.PW) = cfg.get_secrets_from_input() + try: + self.session.log_in(username=self.config.UNAME,password=self.config.PW, to_file=self.config.TOKEN) + except Exception as e: + print("[auth] log in failed: ", e) + exit() -def restore_session(config): - return Mastodon(client_id=config.CLIENTID, access_token=config.TOKEN, feature_set='pleroma') + def init_session(self): + if not os.path.isfile(self.config.CLIENTID): + print("[booting] first time? creating new app..") + self.init_app() + self.login() + return + else: + self.session = Mastodon(client_id=self.config.CLIENTID, access_token=self.config.TOKEN, feature_set="pleroma") + try: + self.session.account_verify_credentials() + print("[auth] credentials valid") + except: + print("[auth] invalid credentials, trying to log in with pw") + self.login() -class VnilCat: def __init__(self, config=cfg): self.config = cfg - self.session = restore_session(self.config) + self.init_session() self.news = [] self.tl_lastseen_sid = None + print("[booting] checking client data") if not os.path.isfile(self.config.CLIENTID): print("[booting] client data doesn't exist..creating...") |
