feat(07.3-03): frontend remember_me — checkbox + ref threading + store pass-through
- LoginView.vue: add rememberMe ref(false) + "Stay signed in for 30 days" checkbox in password step; thread rememberMe.value through all 3 submit handlers (submitPassword, submitTotp, submitBackupCode) (D-12) - stores/auth.js: login() forwards options.rememberMe as remember_me in api.login body (D-12) - api/client.js: no change needed — already forwards full body verbatim - Frontend build passes (vite build exits 0)
This commit is contained in:
@@ -66,6 +66,7 @@ export const useAuthStore = defineStore('auth', () => {
|
||||
password,
|
||||
totp_code: options.totpCode ?? null,
|
||||
backup_code: options.backupCode ?? null,
|
||||
remember_me: options.rememberMe ?? false,
|
||||
})
|
||||
|
||||
if (data.requires_totp) {
|
||||
|
||||
@@ -27,6 +27,17 @@
|
||||
/>
|
||||
</div>
|
||||
|
||||
<!-- Stay signed in checkbox (D-12) -->
|
||||
<div class="flex items-center gap-2">
|
||||
<input
|
||||
v-model="rememberMe"
|
||||
id="remember-me"
|
||||
type="checkbox"
|
||||
class="rounded border-gray-300 text-indigo-600 focus:ring-indigo-500"
|
||||
/>
|
||||
<label for="remember-me" class="text-sm text-gray-600">Stay signed in for 30 days</label>
|
||||
</div>
|
||||
|
||||
<!-- Form-level error -->
|
||||
<div
|
||||
v-if="error"
|
||||
@@ -191,6 +202,7 @@ const totpInput = ref('')
|
||||
const backupCodeInput = ref('')
|
||||
const loading = ref(false)
|
||||
const error = ref(null)
|
||||
const rememberMe = ref(false)
|
||||
|
||||
// Step: 'password' | 'totp' | 'backup'
|
||||
const step = ref('password')
|
||||
@@ -225,7 +237,7 @@ async function submitPassword() {
|
||||
loading.value = true
|
||||
error.value = null
|
||||
try {
|
||||
const result = await authStore.login(email.value, password.value)
|
||||
const result = await authStore.login(email.value, password.value, { rememberMe: rememberMe.value })
|
||||
await handleLoginResult(result)
|
||||
} catch (e) {
|
||||
error.value = e.message
|
||||
@@ -240,6 +252,7 @@ async function submitTotp() {
|
||||
try {
|
||||
const result = await authStore.login(email.value, password.value, {
|
||||
totpCode: totpInput.value,
|
||||
rememberMe: rememberMe.value,
|
||||
})
|
||||
await handleLoginResult(result)
|
||||
} catch (e) {
|
||||
@@ -255,6 +268,7 @@ async function submitBackupCode() {
|
||||
try {
|
||||
const result = await authStore.login(email.value, password.value, {
|
||||
backupCode: backupCodeInput.value,
|
||||
rememberMe: rememberMe.value,
|
||||
})
|
||||
await handleLoginResult(result)
|
||||
} catch (e) {
|
||||
|
||||
Reference in New Issue
Block a user