fix: Make Register links properly navigate to registration form
- Initialize isRegistering state from URL query parameter (mode=register) - Update URL when toggling between login/register modes for shareable links - Remove duplicate useRoute() calls in login/register handlers - Ensures all Register buttons throughout the app show the registration form This fixes the issue where Register links navigated to /login?mode=register but the login page ignored the mode parameter and showed the login form instead. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -169,6 +169,9 @@
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
const route = useRoute()
|
||||
const router = useRouter()
|
||||
|
||||
const username = ref('')
|
||||
const password = ref('')
|
||||
const confirmPassword = ref('')
|
||||
@@ -177,7 +180,9 @@ const firstName = ref('')
|
||||
const lastName = ref('')
|
||||
const error = ref('')
|
||||
const loading = ref(false)
|
||||
const isRegistering = ref(false)
|
||||
|
||||
// Initialize from URL query parameter
|
||||
const isRegistering = ref(route.query.mode === 'register')
|
||||
|
||||
const passwordRequirements = computed(() => ({
|
||||
minLength: password.value.length >= 8,
|
||||
@@ -206,6 +211,15 @@ function toggleMode() {
|
||||
email.value = ''
|
||||
firstName.value = ''
|
||||
lastName.value = ''
|
||||
|
||||
// Update URL to reflect mode
|
||||
const query = { ...route.query }
|
||||
if (isRegistering.value) {
|
||||
query.mode = 'register'
|
||||
} else {
|
||||
delete query.mode
|
||||
}
|
||||
router.replace({ query })
|
||||
}
|
||||
|
||||
async function handleLogin() {
|
||||
@@ -223,7 +237,6 @@ async function handleLogin() {
|
||||
|
||||
if (response.success) {
|
||||
// Check if there's a redirect parameter
|
||||
const route = useRoute()
|
||||
const redirect = route.query.redirect as string
|
||||
await navigateTo(redirect || '/')
|
||||
}
|
||||
@@ -236,19 +249,19 @@ async function handleLogin() {
|
||||
|
||||
async function handleRegister() {
|
||||
error.value = ''
|
||||
|
||||
|
||||
// Validate password requirements
|
||||
if (!isPasswordValid.value) {
|
||||
error.value = 'Please meet all password requirements'
|
||||
return
|
||||
}
|
||||
|
||||
|
||||
// Validate passwords match
|
||||
if (!passwordsMatch.value) {
|
||||
error.value = 'Passwords do not match'
|
||||
return
|
||||
}
|
||||
|
||||
|
||||
loading.value = true
|
||||
|
||||
try {
|
||||
@@ -265,7 +278,6 @@ async function handleRegister() {
|
||||
|
||||
if (response.success) {
|
||||
// Check if there's a redirect parameter
|
||||
const route = useRoute()
|
||||
const redirect = route.query.redirect as string
|
||||
await navigateTo(redirect || '/')
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user