fix(register): phone number verification

This commit is contained in:
Philipp Dormann 2025-03-18 00:00:51 +01:00
parent f1d552ce64
commit d5eefbb5e2
Signed by: philipp
GPG Key ID: 3BB9ADD52DCA4314

View File

@ -144,9 +144,9 @@
<input v-model="userdetails.phone" name="phone" id="phone" autocomplete="off" <input v-model="userdetails.phone" name="phone" id="phone" autocomplete="off"
:placeholder="[[$t('phone_number')]]" type="text" :class="{ :placeholder="[[$t('phone_number')]]" type="text" :class="{
'border-red-500': 'border-red-500':
!isMobilePhone(userdetails.phone) && userdetails.phone.trim(), !isPhoneOkay(userdetails.phone),
'border-green-300': 'border-green-300':
isMobilePhone(userdetails.phone) && userdetails.phone.trim(), isPhoneOkay(userdetails.phone),
}" class=" }" class="
dark:bg-gray-800 dark:bg-gray-800
mt-1 mt-1
@ -160,7 +160,7 @@
rounded-md rounded-md
p-2 p-2
" /> " />
<p v-if="!isMobilePhone(userdetails.phone) && userdetails.phone.trim()" class="text-sm"> <p v-if="!isPhoneOkay(userdetails.phone)" class="text-sm">
{{ $t("this_is_not_a_valid_international_phone_number") }} {{ $t("this_is_not_a_valid_international_phone_number") }}
</p> </p>
<!-- --> <!-- -->
@ -173,7 +173,7 @@
</div> </div>
<div class="ml-3 text-sm"> <div class="ml-3 text-sm">
<label for="address_activated" class="font-medium text-gray-600 select-none">{{ $t("provide_address") <label for="address_activated" class="font-medium text-gray-600 select-none">{{ $t("provide_address")
}}</label> }}</label>
</div> </div>
</div> </div>
<div v-if="provide_address === true" class="col-span-6"> <div v-if="provide_address === true" class="col-span-6">
@ -369,6 +369,21 @@ let userdetails = ref({
phone: "", phone: "",
address: { street: "", address2: "", city: "", zipcode: "" }, address: { street: "", address2: "", city: "", zipcode: "" },
}); });
function isPhoneOkay() {
if (userdetails.value.phone === "") {
return true
}
if (userdetails.value.phone.includes(" ")) {
return false
}
if (!userdetails.value.phone.includes("+")) {
return false
}
if (isMobilePhone(userdetails.value.phone)) {
return true
}
return false
}
let provide_address = ref(false); let provide_address = ref(false);
let agb_accepted = ref(false); let agb_accepted = ref(false);
let data_confirmed = ref(false); let data_confirmed = ref(false);
@ -382,8 +397,7 @@ const state = reactive({
() => () =>
agb_accepted.value === true && agb_accepted.value === true &&
data_confirmed.value === true && data_confirmed.value === true &&
(isMobilePhone(userdetails.value.phone) || isPhoneOkay() &&
!userdetails.value.phone.trim()) &&
isEmail(userdetails.value.mail) && isEmail(userdetails.value.mail) &&
userdetails.value.firstname && userdetails.value.firstname &&
userdetails.value.lastname && userdetails.value.lastname &&
@ -396,25 +410,23 @@ const state = reactive({
}); });
const toast = useToast(); const toast = useToast();
function login() { function login() {
userdetails = userdetails.value; // userdetails = userdetails.value;
if (userdetails?.phone === "" || isMobilePhone(userdetails.phone)) { if (isPhoneOkay()) {
if (isEmail(userdetails.mail)) { if (isEmail(userdetails.value.mail)) {
let postdata = { let postdata = {
email: userdetails.mail, email: userdetails.value.mail,
firstname: userdetails.firstname, firstname: userdetails.value.firstname,
middlename: userdetails.middlename, middlename: userdetails.value.middlename,
lastname: userdetails.lastname, lastname: userdetails.value.lastname,
phone: userdetails.value.phone,
address: {}, address: {},
}; };
if (isMobilePhone(userdetails.phone)) {
postdata.phone = userdetails.phone;
}
if (provide_address.value === true) { if (provide_address.value === true) {
postdata.address = { postdata.address = {
address1: userdetails.address.street, address1: userdetails.value.address.street,
address2: userdetails.address.address2 || "", address2: userdetails.value.address.address2 || "",
city: userdetails.address.city, city: userdetails.value.address.city,
postalcode: userdetails.address.zipcode, postalcode: userdetails.value.address.zipcode,
country: "DE", country: "DE",
}; };
} }