feat(ops-web): enhance login preference to include saved password functionality
Frontend CI / Frontend (push) Successful in 4m3s
Frontend CI / Frontend (push) Successful in 4m3s
This commit is contained in:
@@ -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()
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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 {
|
||||||
|
|||||||
Reference in New Issue
Block a user