feat(ops-web): enhance login preference to include saved password functionality
Frontend CI / Frontend (push) Successful in 4m3s

This commit is contained in:
2026-06-02 14:59:54 +08:00
parent 723c3ffb86
commit 36d2f99fcf
3 changed files with 13 additions and 4 deletions
+3 -1
View File
@@ -19,6 +19,7 @@ export interface OpsSession {
export interface LoginPreference { export interface LoginPreference {
remember: boolean remember: boolean
lastUsername: string lastUsername: string
savedPassword: string
} }
export interface StoredSession { export interface StoredSession {
@@ -31,7 +32,7 @@ function emptySession(): OpsSession {
} }
function emptyPreference(): LoginPreference { function emptyPreference(): LoginPreference {
return { remember: false, lastUsername: '' } return { remember: false, lastUsername: '', savedPassword: '' }
} }
function hasWindow(): boolean { function hasWindow(): boolean {
@@ -105,6 +106,7 @@ export function readLoginPreference(): LoginPreference {
return { return {
remember: parsed.remember === true, remember: parsed.remember === true,
lastUsername: typeof parsed.lastUsername === 'string' ? parsed.lastUsername : '', lastUsername: typeof parsed.lastUsername === 'string' ? parsed.lastUsername : '',
savedPassword: typeof parsed.savedPassword === 'string' ? parsed.savedPassword : '',
} }
} catch { } catch {
return emptyPreference() return emptyPreference()
+5 -1
View File
@@ -65,7 +65,11 @@ export const useAuthStore = defineStore('ops-auth', () => {
}, },
payload.remember, payload.remember,
) )
writeLoginPreference({ remember: payload.remember, lastUsername: payload.username }) writeLoginPreference({
remember: payload.remember,
lastUsername: payload.remember ? payload.username : '',
savedPassword: payload.remember ? payload.password : '',
})
}) })
.finally(() => { .finally(() => {
loginPromise = null loginPromise = null
+5 -2
View File
@@ -70,7 +70,7 @@
<div class="options"> <div class="options">
<label class="remember"> <label class="remember">
<input v-model="remember" type="checkbox" /> <input v-model="remember" type="checkbox" />
记住登录状态 记住账号和密码
</label> </label>
</div> </div>
@@ -131,9 +131,12 @@ const formState = reactive({
onMounted(() => { onMounted(() => {
const pref = readLoginPreference() const pref = readLoginPreference()
remember.value = pref.remember remember.value = pref.remember
if (pref.lastUsername) { if (pref.remember && pref.lastUsername) {
formState.username = pref.lastUsername formState.username = pref.lastUsername
} }
if (pref.remember && pref.savedPassword) {
formState.password = pref.savedPassword
}
}) })
function formatLoginError(error: unknown): string { function formatLoginError(error: unknown): string {