Move savedCredentials to userId

This commit is contained in:
Natsumi
2023-04-29 04:32:27 +12:00
parent ea6f8695b5
commit ca8d6e4e5a
4 changed files with 53 additions and 21 deletions

View File

@@ -469,6 +469,7 @@ namespace VRCX
// 2021.04.06 11:25:45 Log - [Network Processing] RPC invoked ConfigurePortal on (Clone [1600004] Portals/PortalInternalDynamic) for Natsumi-sama
// 2021.07.19 04:24:28 Log - [Behaviour] Will execute SendRPC/AlwaysBufferOne on (Clone [100004] Portals/PortalInternalDynamic) (UnityEngine.GameObject) for Natsumi-sama: S: "ConfigurePortal" I: 7 F: 0 B: 255 (local master owner)
// 2022.07.29 18:40:37 Log - [Behaviour] Instantiated a (Clone [800004] Portals/PortalInternalDynamic)
// 2023 - deadge
if (line.Contains("[Behaviour] Instantiated a (Clone [") && line.Contains("] Portals/PortalInternalDynamic)"))
{

View File

@@ -109,6 +109,8 @@ namespace VRCX
public string GetCookies()
{
_cookieDirty = true; // force cookies to be saved for lastUserLoggedIn
using (var memoryStream = new MemoryStream())
{
new BinaryFormatter().Serialize(memoryStream, _cookieContainer);
@@ -122,6 +124,8 @@ namespace VRCX
{
_cookieContainer = (CookieContainer)new BinaryFormatter().Deserialize(stream);
}
_cookieDirty = true; // force cookies to be saved for lastUserLoggedIn
}
#pragma warning disable CS4014

View File

@@ -4884,6 +4884,7 @@ speechSynthesis.getVoices();
this.refreshCustomCss();
this.refreshCustomScript();
this.checkVRChatDebugLogging();
this.migrateStoredUsers();
this.$nextTick(function () {
this.$el.style.display = '';
if (
@@ -6847,6 +6848,7 @@ speechSynthesis.getVoices();
// eslint-disable-next-line require-atomic-updates
$app.loginForm.lastUserLoggedIn = '';
configRepository.remove('lastUserLoggedIn');
workerTimers.setTimeout(() => location.reload(), 500);
});
$app.methods.checkPrimaryPassword = function (args) {
@@ -6899,20 +6901,22 @@ speechSynthesis.getVoices();
}
)
.then(({value}) => {
for (let name in this.loginForm.savedCredentials) {
for (let userId in this.loginForm.savedCredentials) {
security
.decrypt(
this.loginForm.savedCredentials[name]
this.loginForm.savedCredentials[userId]
.loginParmas.password,
value
)
.then((pt) => {
this.saveCredentials = {
username: name,
username:
this.loginForm.savedCredentials[userId]
.loginParmas.username,
password: pt
};
this.updateStoredUser(
this.loginForm.savedCredentials[name].user
this.loginForm.savedCredentials[userId].user
);
configRepository.setBool(
'enablePrimaryPassword',
@@ -6942,17 +6946,22 @@ speechSynthesis.getVoices();
this.enablePrimaryPasswordDialog.visible = false;
if (this.enablePrimaryPassword) {
let key = this.enablePrimaryPasswordDialog.password;
for (let name in this.loginForm.savedCredentials) {
for (let userId in this.loginForm.savedCredentials) {
security
.encrypt(
this.loginForm.savedCredentials[name].loginParmas
this.loginForm.savedCredentials[userId].loginParmas
.password,
key
)
.then((ct) => {
this.saveCredentials = {username: name, password: ct};
this.saveCredentials = {
username:
this.loginForm.savedCredentials[userId]
.loginParmas.username,
password: ct
};
this.updateStoredUser(
this.loginForm.savedCredentials[name].user
this.loginForm.savedCredentials[userId].user
);
});
}
@@ -6962,7 +6971,7 @@ speechSynthesis.getVoices();
$app.methods.updateStoredUser = async function (currentUser) {
var savedCredentials = {};
if (configRepository.getString('savedCredentials') !== null) {
var savedCredentials = JSON.parse(
savedCredentials = JSON.parse(
configRepository.getString('savedCredentials')
);
}
@@ -6971,20 +6980,38 @@ speechSynthesis.getVoices();
user: currentUser,
loginParmas: this.saveCredentials
};
savedCredentials[currentUser.username] = credentialsToSave;
savedCredentials[currentUser.id] = credentialsToSave;
delete this.saveCredentials;
} else if (
typeof savedCredentials[currentUser.username] !== 'undefined'
) {
savedCredentials[currentUser.username].user = currentUser;
savedCredentials[currentUser.username].cookies =
} else if (typeof savedCredentials[currentUser.id] !== 'undefined') {
savedCredentials[currentUser.id].user = currentUser;
savedCredentials[currentUser.id].cookies =
await webApiService.getCookies();
}
this.loginForm.savedCredentials = savedCredentials;
var jsonCredentialsArray = JSON.stringify(savedCredentials);
configRepository.setString('savedCredentials', jsonCredentialsArray);
this.loginForm.lastUserLoggedIn = currentUser.username;
configRepository.setString('lastUserLoggedIn', currentUser.username);
this.loginForm.lastUserLoggedIn = currentUser.id;
configRepository.setString('lastUserLoggedIn', currentUser.id);
};
$app.methods.migrateStoredUsers = function () {
var savedCredentials = {};
if (configRepository.getString('savedCredentials') !== null) {
savedCredentials = JSON.parse(
configRepository.getString('savedCredentials')
);
}
for (let name in savedCredentials) {
var userId = savedCredentials[name]?.user?.id;
if (userId && userId !== name) {
savedCredentials[userId] = savedCredentials[name];
delete savedCredentials[name];
}
}
configRepository.setString(
'savedCredentials',
JSON.stringify(savedCredentials)
);
};
$app.methods.relogin = function (user) {
@@ -7062,11 +7089,11 @@ speechSynthesis.getVoices();
});
};
$app.methods.deleteSavedLogin = function (username) {
$app.methods.deleteSavedLogin = function (userId) {
var savedCredentials = JSON.parse(
configRepository.getString('savedCredentials')
);
delete savedCredentials[username];
delete savedCredentials[userId];
// Disable primary password when no account is available.
if (Object.keys(savedCredentials).length === 0) {
this.enablePrimaryPassword = false;

View File

@@ -744,7 +744,7 @@ html
el-table-column(:label="$t('table.friendLog.type')" prop="type" width="150")
el-table-column(:label="$t('table.friendLog.user')" prop="displayName")
template(v-once #default="scope")
span(v-if="scope.row.type === 'DisplayName'") {{ scope.row.previousDisplayName }} #[i.el-icon-right]
span(v-if="scope.row.type === 'DisplayName'") {{ scope.row.previousDisplayName }} #[i.el-icon-right] 
span.x-link(v-text="scope.row.displayName || scope.row.userId" @click="showUserDialog(scope.row.userId)")
template(v-if="scope.row.type === 'TrustLevel'")
span ({{ scope.row.previousTrustLevel }} #[i.el-icon-right] {{ scope.row.trustLevel }})
@@ -1422,7 +1422,7 @@ html
span.sub-header {{ $t('view.settings.advanced.advanced.primary_password.header') }}
div.options-container-item
span.name(style="min-width:300px") {{ $t('view.settings.advanced.advanced.primary_password.description') }}
el-switch(v-model="enablePrimaryPassword" @change="enablePrimaryPasswordChange" :disabled="!loginForm.savedCredentials[API.currentUser.username]")
el-switch(v-model="enablePrimaryPassword" @change="enablePrimaryPasswordChange" :disabled="!loginForm.savedCredentials[API.currentUser.id]")
span.sub-header {{ $t('view.settings.advanced.advanced.relaunch_vrchat.header') }}
div.options-container-item
span.name(style="min-width:300px") {{ $t('view.settings.advanced.advanced.relaunch_vrchat.description') }}