diff --git a/html/src/app.js b/html/src/app.js
index 923abff8..794793e2 100644
--- a/html/src/app.js
+++ b/html/src/app.js
@@ -926,12 +926,16 @@ speechSynthesis.getVoices();
}
*/
API.login = function (params) {
- var { username, password, saveCredentials } = params;
+ var { username, password, saveCredentials, cipher } = params;
username = encodeURIComponent(username);
password = encodeURIComponent(password);
var auth = btoa(`${username}:${password}`);
if (saveCredentials) {
delete params.saveCredentials;
+ if (cipher) {
+ params.password = cipher;
+ delete params.cipher;
+ }
$app.saveCredentials = params;
}
return this.call(`auth/user?apiKey=${this.cachedConfig.clientApiKey}`, {
@@ -5016,27 +5020,29 @@ speechSynthesis.getVoices();
},
).then(({value}) => {
for (let name in this.loginForm.savedCredentials) {
- security.decrypt(this.loginForm.savedCredentials[name].loginParmas.password, value).then(plaintext => {
- this.loginForm.savedCredentials[name].loginParmas.password = plaintext;
+ security.decrypt(this.loginForm.savedCredentials[name].loginParmas.password, value).then(pt => {
+ $app.saveCredentials = { username: name, password: pt };
+ this.updateStoredUser(this.loginForm.savedCredentials[name].user);
}).catch(_ => {
this.enablePrimaryPassword = true;
+ configRepository.setBool('enablePrimaryPassword', true);
})
}
- this.savePrimaryPassword();
}).catch(_ => {
this.enablePrimaryPassword = true;
- this.savePrimaryPassword();
+ configRepository.setBool('enablePrimaryPassword', true);
})
}
}
- $app.methods.savePrimaryPassword = function () {
+ $app.methods.setPrimaryPassword = function () {
configRepository.setBool('enablePrimaryPassword', this.enablePrimaryPassword);
this.enablePrimaryPasswordDialog.visible = false;
if(this.enablePrimaryPassword) {
let key = this.enablePrimaryPasswordDialog.password;
for (let name in this.loginForm.savedCredentials) {
- security.encrypt(this.loginForm.savedCredentials[name].loginParmas.password, key).then(plaintext => {
- this.loginForm.savedCredentials[name].loginParmas.password = plaintext;
+ security.encrypt(this.loginForm.savedCredentials[name].loginParmas.password, key).then(ct => {
+ $app.saveCredentials = { username: name, password: ct};
+ this.updateStoredUser(this.loginForm.savedCredentials[name].user);
})
}
}
@@ -5071,12 +5077,14 @@ speechSynthesis.getVoices();
}).then(() => {
API.login({
username: loginParmas.username,
- password: pwd
+ password: pwd,
+ cipher: loginParmas.password
}).catch((err2) => {
this.loginForm.loading = false;
API.logout();
return reject(err2);
}).then(() => {
+ this.loginForm.loading = false;
return resolve();
});
});
@@ -5089,6 +5097,11 @@ speechSynthesis.getVoices();
$app.methods.deleteSavedLogin = function (username) {
var savedCredentialsArray = JSON.parse(configRepository.getString('savedCredentials'));
delete savedCredentialsArray[username];
+ // Disable primary password when no account is available.
+ if (Object.keys(savedCredentialsArray).length === 0) {
+ $app.enablePrimaryPassword = false;
+ configRepository.setBool('enablePrimaryPassword', false);
+ }
$app.loginForm.savedCredentials = savedCredentialsArray;
var jsonCredentialsArray = JSON.stringify(savedCredentialsArray);
configRepository.setString('savedCredentials', jsonCredentialsArray);
diff --git a/html/src/index.pug b/html/src/index.pug
index aa60b2fe..0f5c1a64 100644
--- a/html/src/index.pug
+++ b/html/src/index.pug
@@ -740,7 +740,7 @@ html
el-switch(v-model="displayVRCPlusIconsAsAvatar")
div.options-container-item
span.name Use a Primary Password
- el-switch(v-model="enablePrimaryPassword" @change="enablePrimaryPasswordChange")
+ el-switch(v-model="enablePrimaryPassword" @change="enablePrimaryPasswordChange" :disabled="!loginForm.savedCredentials[API.currentUser.username]")
div.options-container
span.header Side Pannel Sorting Options
div.options-container-item
@@ -2410,7 +2410,7 @@ html
)
template(#footer)
el-button(
- type="primary" size="small" @click="savePrimaryPassword"
+ type="primary" size="small" @click="setPrimaryPassword"
:disabled="enablePrimaryPasswordDialog.password.length===0||enablePrimaryPasswordDialog.password!==enablePrimaryPasswordDialog.rePassword"
) OK
script(src="app.js")