fix: harden login for MLPS requirements

This commit is contained in:
2026-05-14 11:05:20 +08:00
parent ecf3ee1ef0
commit 879677516f
39 changed files with 1230 additions and 71 deletions
@@ -7,7 +7,7 @@ const { apiBaseURL, error, pending, setApiBaseURL, login } = useDesktopSession()
const menuOpen = ref(false)
const showServerDialog = ref(false)
const showPassword = ref(false)
const rememberPassword = ref(!!localStorage.getItem('geo_rankly_saved_password'))
const rememberAccount = ref(!!localStorage.getItem('geo_rankly_saved_identifier'))
const savedIdentifier =
localStorage.getItem('geo_rankly_saved_identifier') ??
localStorage.getItem('geo_rankly_saved_email') ??
@@ -16,7 +16,7 @@ const savedIdentifier =
const form = reactive({
apiBaseURL: apiBaseURL.value,
identifier: savedIdentifier,
password: localStorage.getItem('geo_rankly_saved_password') || '',
password: '',
})
const menuRef = ref<HTMLElement | null>(null)
@@ -26,7 +26,7 @@ function toggleMenu() {
}
function onRememberChange(event: Event) {
rememberPassword.value = (event.target as HTMLInputElement).checked
rememberAccount.value = (event.target as HTMLInputElement).checked
}
function handleOutsideClick(event: MouseEvent) {
@@ -53,14 +53,13 @@ function saveServerSettings() {
}
async function submitLogin() {
if (rememberPassword.value) {
localStorage.removeItem('geo_rankly_saved_password')
if (rememberAccount.value) {
localStorage.setItem('geo_rankly_saved_identifier', form.identifier)
localStorage.removeItem('geo_rankly_saved_email')
localStorage.setItem('geo_rankly_saved_password', form.password)
} else {
localStorage.removeItem('geo_rankly_saved_identifier')
localStorage.removeItem('geo_rankly_saved_email')
localStorage.removeItem('geo_rankly_saved_password')
}
await login({
@@ -179,8 +178,8 @@ onBeforeUnmount(() => {
<div class="options-row">
<label class="check-label">
<input type="checkbox" :checked="rememberPassword" @change="onRememberChange" />
<span>记住密码</span>
<input type="checkbox" :checked="rememberAccount" @change="onRememberChange" />
<span>记住账号</span>
</label>
</div>