config: simplify initial password setup

This commit is contained in:
Stéphane Lepin 2021-01-31 01:51:19 +01:00
parent 38cf0270b1
commit a8aa34529e
4 changed files with 23 additions and 29 deletions

View File

@ -17,6 +17,5 @@ OBSWebsocket.ProfileChanged.Started="WebSockets server enabled in this profile.
OBSWebsocket.ProfileChanged.Stopped="WebSockets server disabled in this profile. Server stopped."
OBSWebsocket.ProfileChanged.Restarted="WebSockets server port changed in this profile. Server restarted."
OBSWebsocket.InitialPasswordSetup.Title="obs-websocket - Server Password Configuration"
OBSWebsocket.InitialPasswordSetup.Text="It looks like you are running obs-websocket for the first time. Do you want set a password for the WebSockets server now?"
OBSWebsocket.InitialPasswordSetup.SuccessText="Server Password set successfully."
OBSWebsocket.InitialPasswordSetup.DismissedText="You can configure a server password anytime in obs-websocket settings (under the Tools menu of OBS Studio)"
OBSWebsocket.InitialPasswordSetup.Text="It looks like you are running obs-websocket for the first time. Do you want to configure a password now for the WebSockets server?"
OBSWebsocket.InitialPasswordSetup.DismissedText="You can configure a server password later in obs-websocket settings (under the Tools menu of OBS Studio)"

View File

@ -310,12 +310,6 @@ void Config::OnFrontendEvent(enum obs_frontend_event event, void* param)
void Config::FirstRunPasswordSetup()
{
// check if the password is already set
auto config = GetConfig();
if (!(config->Secret.isEmpty()) && !(config->Salt.isEmpty())) {
return;
}
// check if we already showed the auth setup prompt to the user, independently of the current settings (tied to the current profile)
config_t* globalConfig = obs_frontend_get_global_config();
bool alreadyPrompted = config_get_bool(globalConfig, SECTION_NAME, GLOBAL_AUTH_SETUP_PROMPTED);
@ -327,12 +321,16 @@ void Config::FirstRunPasswordSetup()
config_set_bool(globalConfig, SECTION_NAME, GLOBAL_AUTH_SETUP_PROMPTED, true);
config_save(globalConfig);
// check if the password is already set
auto config = GetConfig();
if (!(config->Secret.isEmpty()) && !(config->Salt.isEmpty())) {
return;
}
obs_frontend_push_ui_translation(obs_module_get_string);
QString dialogTitle = QObject::tr("OBSWebsocket.InitialPasswordSetup.Title");
QString dialogText = QObject::tr("OBSWebsocket.InitialPasswordSetup.Text");
QString successText = QObject::tr("OBSWebsocket.InitialPasswordSetup.SuccessText");
QString dismissedText = QObject::tr("OBSWebsocket.InitialPasswordSetup.DismissedText");
QString passwordLabel = QObject::tr("OBSWebsocket.Settings.Password");
obs_frontend_pop_ui_translation();
auto mainWindow = reinterpret_cast<QMainWindow*>(
@ -341,21 +339,10 @@ void Config::FirstRunPasswordSetup()
QMessageBox::StandardButton response = QMessageBox::question(mainWindow, dialogTitle, dialogText);
if (response == QMessageBox::Yes) {
bool promptAccepted = false;
QString newPassword = QInputDialog::getText(
mainWindow,
dialogTitle, passwordLabel,
QLineEdit::PasswordEchoOnEdit, QString::Null(), &promptAccepted
);
if (promptAccepted) {
// set new password
GetConfig()->SetPassword(newPassword);
QMessageBox::information(mainWindow, dialogTitle, successText);
return;
}
ShowSettingsDialog();
}
else {
// tell the user they still can set the password later in our settings dialog
QMessageBox::information(mainWindow, dialogTitle, dismissedText);
}
// tell the user they still can set the password later in our settings dialog
QMessageBox::information(mainWindow, dialogTitle, dismissedText);
}

View File

@ -47,6 +47,7 @@ OBS_MODULE_USE_DEFAULT_LOCALE("obs-websocket", "en-US")
ConfigPtr _config;
WSServerPtr _server;
WSEventsPtr _eventsSystem;
SettingsDialog* settingsDialog = nullptr;
bool obs_module_load(void) {
blog(LOG_INFO, "you can haz websockets (version %s)", OBS_WEBSOCKET_VERSION);
@ -64,14 +65,14 @@ bool obs_module_load(void) {
// UI setup
obs_frontend_push_ui_translation(obs_module_get_string);
QMainWindow* mainWindow = (QMainWindow*)obs_frontend_get_main_window();
SettingsDialog* settingsDialog = new SettingsDialog(mainWindow);
settingsDialog = new SettingsDialog(mainWindow);
obs_frontend_pop_ui_translation();
const char* menuActionText =
obs_module_text("OBSWebsocket.Settings.DialogTitle");
QAction* menuAction =
(QAction*)obs_frontend_add_tools_menu_qaction(menuActionText);
QObject::connect(menuAction, &QAction::triggered, [settingsDialog] {
QObject::connect(menuAction, &QAction::triggered, [] {
// The settings dialog belongs to the main window. Should be ok
// to pass the pointer to this QAction belonging to the main window
settingsDialog->ToggleShowHide();
@ -115,3 +116,9 @@ WSServerPtr GetServer() {
WSEventsPtr GetEventsSystem() {
return _eventsSystem;
}
void ShowSettingsDialog() {
if (settingsDialog) {
settingsDialog->setVisible(true);
}
}

View File

@ -55,6 +55,7 @@ typedef std::shared_ptr<WSEvents> WSEventsPtr;
ConfigPtr GetConfig();
WSServerPtr GetServer();
WSEventsPtr GetEventsSystem();
void ShowSettingsDialog();
#define OBS_WEBSOCKET_VERSION "4.8.0"