123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- #pragma once
- #include <QDialog>
- #include <string>
- #include <memory>
- #include "auth-base.hpp"
- class QCefWidget;
- class OAuthLogin : public QDialog {
- Q_OBJECT
- QCefWidget *cefWidget = nullptr;
- QString code;
- bool get_token = false;
- bool fail = false;
- public:
- OAuthLogin(QWidget *parent, const std::string &url, bool token);
- ~OAuthLogin();
- inline QString GetCode() const { return code; }
- inline bool LoadFail() const { return fail; }
- virtual int exec() override;
- virtual void reject() override;
- virtual void accept() override;
- public slots:
- void urlChanged(const QString &url);
- };
- class OAuth : public Auth {
- Q_OBJECT
- public:
- inline OAuth(const Def &d) : Auth(d) {}
- typedef std::function<std::shared_ptr<Auth>(
- QWidget *, const std::string &service_name)>
- login_cb;
- typedef std::function<void()> delete_cookies_cb;
- static std::shared_ptr<Auth> Login(QWidget *parent,
- const std::string &service);
- static void DeleteCookies(const std::string &service);
- static void RegisterOAuth(const Def &d, create_cb create,
- login_cb login,
- delete_cookies_cb delete_cookies);
- protected:
- std::string refresh_token;
- std::string token;
- bool implicit = false;
- uint64_t expire_time = 0;
- int currentScopeVer = 0;
- virtual void SaveInternal() override;
- virtual bool LoadInternal() override;
- virtual bool RetryLogin() = 0;
- bool TokenExpired();
- bool GetToken(const char *url, const std::string &client_id,
- int scope_ver,
- const std::string &auth_code = std::string(),
- bool retry = false);
- bool GetToken(const char *url, const std::string &client_id,
- const std::string &secret,
- const std::string &redirect_uri, int scope_ver,
- const std::string &auth_code, bool retry);
- private:
- bool GetTokenInternal(const char *url, const std::string &client_id,
- const std::string &secret,
- const std::string &redirect_uri, int scope_ver,
- const std::string &auth_code, bool retry);
- };
- class OAuthStreamKey : public OAuth {
- Q_OBJECT
- protected:
- std::string key_;
- public:
- inline OAuthStreamKey(const Def &d) : OAuth(d) {}
- inline const std::string &key() const { return key_; }
- virtual void OnStreamConfig() override;
- };
|