| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 | 
							- #include "auth-base.hpp"
 
- #include "window-basic-main.hpp"
 
- #include <vector>
 
- #include <map>
 
- struct AuthInfo {
 
- 	Auth::Def def;
 
- 	Auth::create_cb create;
 
- };
 
- static std::vector<AuthInfo> authDefs;
 
- void Auth::RegisterAuth(const Def &d, create_cb create)
 
- {
 
- 	AuthInfo info = {d, create};
 
- 	authDefs.push_back(info);
 
- }
 
- std::shared_ptr<Auth> Auth::Create(const std::string &service)
 
- {
 
- 	for (auto &a : authDefs) {
 
- 		if (service.find(a.def.service) != std::string::npos) {
 
- 			return a.create();
 
- 		}
 
- 	}
 
- 	return nullptr;
 
- }
 
- Auth::Type Auth::AuthType(const std::string &service)
 
- {
 
- 	for (auto &a : authDefs) {
 
- 		if (service.find(a.def.service) != std::string::npos) {
 
- 			return a.def.type;
 
- 		}
 
- 	}
 
- 	return Type::None;
 
- }
 
- bool Auth::External(const std::string &service)
 
- {
 
- 	for (auto &a : authDefs) {
 
- 		if (service.find(a.def.service) != std::string::npos) {
 
- 			return a.def.externalOAuth;
 
- 		}
 
- 	}
 
- 	return false;
 
- }
 
- void Auth::Load()
 
- {
 
- 	OBSBasic *main = OBSBasic::Get();
 
- 	const char *typeStr = config_get_string(main->Config(), "Auth", "Type");
 
- 	if (!typeStr)
 
- 		typeStr = "";
 
- 	main->auth = Create(typeStr);
 
- 	if (main->auth) {
 
- 		if (main->auth->LoadInternal()) {
 
- 			main->auth->LoadUI();
 
- 			main->SetBroadcastFlowEnabled(
 
- 				main->auth->broadcastFlow());
 
- 		}
 
- 	} else {
 
- 		main->SetBroadcastFlowEnabled(false);
 
- 	}
 
- }
 
- void Auth::Save()
 
- {
 
- 	OBSBasic *main = OBSBasic::Get();
 
- 	Auth *auth = main->auth.get();
 
- 	if (!auth) {
 
- 		if (config_has_user_value(main->Config(), "Auth", "Type")) {
 
- 			config_remove_value(main->Config(), "Auth", "Type");
 
- 			config_save_safe(main->Config(), "tmp", nullptr);
 
- 		}
 
- 		return;
 
- 	}
 
- 	config_set_string(main->Config(), "Auth", "Type", auth->service());
 
- 	auth->SaveInternal();
 
- 	config_save_safe(main->Config(), "tmp", nullptr);
 
- }
 
 
  |