diff --git a/.changeset/poor-cameras-march.md b/.changeset/poor-cameras-march.md new file mode 100644 index 0000000000..13c68c78d4 --- /dev/null +++ b/.changeset/poor-cameras-march.md @@ -0,0 +1,5 @@ +--- +'@directus/app': patch +--- + +Fixed an issue that prevented logging in when emails contained unicode characters diff --git a/app/src/routes/login/components/login-form/login-form.vue b/app/src/routes/login/components/login-form/login-form.vue index c0cab47ccc..55c21a6627 100644 --- a/app/src/routes/login/components/login-form/login-form.vue +++ b/app/src/routes/login/components/login-form/login-form.vue @@ -56,7 +56,10 @@ const errorFormatted = computed(() => { }); async function onSubmit() { - if (email.value === null || password.value === null) { + // Simple RegEx, not for validation, but to prevent unnecessary login requests when the value is clearly invalid + const emailRegex = /^\S+@\S+$/; + + if (email.value === null || !emailRegex.test(email.value) || password.value === null) { error.value = 'INVALID_PAYLOAD'; return; } @@ -77,7 +80,7 @@ async function onSubmit() { const redirectQuery = router.currentRoute.value.query.redirect as string; - let lastPage: string | undefined; + let lastPage: string | null = null; if (userStore.currentUser && 'last_page' in userStore.currentUser) { lastPage = userStore.currentUser.last_page; @@ -97,7 +100,7 @@ async function onSubmit() {