Register - basic form validations

This commit is contained in:
Philipp Dormann 2021-02-27 15:32:43 +01:00
parent 94f5787988
commit 2b303ac9b2
4 changed files with 57 additions and 31 deletions

View File

@ -3,7 +3,5 @@
</template> </template>
<script setup> <script setup>
// import HelloWorld from "./components/HelloWorld.vue"; //
// import LoginForm from "./components/LoginForm.vue";
// import Footer from "./components/Footer.vue";
</script> </script>

View File

@ -18,8 +18,10 @@
autocomplete="off" autocomplete="off"
:placeholder="[[$t('vorname')]]" :placeholder="[[$t('vorname')]]"
type="text" type="text"
class="dark:bg-gray-800 mt-1 focus:ring-indigo-500 block w-full shadow-sm rounded-l-md sm:text-sm border-gray-300 border bg-gray-50 text-gray-500 rounded-md p-2" :class="{ 'border-red-500': (!userdetails.firstname.trim()), 'border-green-300': (userdetails.firstname.trim()) }"
class="dark:bg-gray-800 mt-1 focus:ring-indigo-500 block w-full shadow-sm sm:text-sm border-gray-300 border bg-gray-50 text-gray-500 rounded-md p-2"
/> />
<!-- -->
<label for="middle_name" class="block font-medium">{{ $t('mittelname') }}</label> <label for="middle_name" class="block font-medium">{{ $t('mittelname') }}</label>
<input <input
v-model="userdetails.middlename" v-model="userdetails.middlename"
@ -28,8 +30,9 @@
autocomplete="off" autocomplete="off"
:placeholder="[[$t('mittelname')]]" :placeholder="[[$t('mittelname')]]"
type="text" type="text"
class="dark:bg-gray-800 mt-1 focus:ring-indigo-500 block w-full shadow-sm rounded-l-md sm:text-sm border-gray-300 border bg-gray-50 text-gray-500 rounded-md p-2" class="dark:bg-gray-800 mt-1 focus:ring-indigo-500 block w-full shadow-sm sm:text-sm border-gray-300 border bg-gray-50 text-gray-500 rounded-md p-2"
/> />
<!-- -->
<label for="last_name" class="block font-medium"> <label for="last_name" class="block font-medium">
{{ $t('nachname') }} {{ $t('nachname') }}
<span class="font-bold">*</span> <span class="font-bold">*</span>
@ -41,8 +44,10 @@
autocomplete="off" autocomplete="off"
:placeholder="[[$t('nachname')]]" :placeholder="[[$t('nachname')]]"
type="text" type="text"
class="dark:bg-gray-800 mt-1 focus:ring-indigo-500 block w-full shadow-sm rounded-l-md sm:text-sm border-gray-300 border bg-gray-50 text-gray-500 rounded-md p-2" :class="{ 'border-red-500': (!userdetails.lastname.trim()), 'border-green-300': (userdetails.lastname.trim()) }"
class="dark:bg-gray-800 mt-1 focus:ring-indigo-500 block w-full shadow-sm sm:text-sm border-gray-300 border bg-gray-50 text-gray-500 rounded-md p-2"
/> />
<!-- -->
<label for="email_address" class="block font-medium"> <label for="email_address" class="block font-medium">
E-Mail Adresse E-Mail Adresse
<span class="font-bold">*</span> <span class="font-bold">*</span>
@ -54,10 +59,23 @@
autocomplete="off" autocomplete="off"
placeholder="E-Mail Adresse" placeholder="E-Mail Adresse"
type="email" type="email"
:class="{ 'border-red-500': (!isEmail(userdetails.mail)), 'border-gray-300': (isEmail(userdetails.mail)) }" :class="{ 'border-red-500': (!isEmail(userdetails.mail)), 'border-green-300': (isEmail(userdetails.mail)) }"
class="dark:bg-gray-800 mt-1 block w-full shadow-sm rounded-l-md sm:text-sm border bg-gray-50 text-gray-100 rounded-md p-2" class="dark:bg-gray-800 mt-1 block w-full shadow-sm sm:text-sm border bg-gray-50 text-gray-500 rounded-md p-2"
/> />
<p class="text-sm">{{ $t('please_provide_valid_mail') }}</p> <p v-if="!isEmail(userdetails.mail)" class="text-sm">{{ $t('please_provide_valid_mail') }}</p>
<!-- -->
<label for="phone" class="block font-medium">{{ $t('phone_number') }}</label>
<input
v-model="userdetails.phone"
name="phone"
id="phone"
autocomplete="off"
:placeholder="[[$t('phone_number')]]"
type="tel"
:class="{ 'border-red-500': (!phone_valid), 'border-green-300': (phone_valid) }"
class="dark:bg-gray-800 mt-1 block w-full shadow-sm sm:text-sm border bg-gray-50 text-gray-500 rounded-md p-2"
/>
<!-- -->
<div class="grid grid-cols-6 mt-6"> <div class="grid grid-cols-6 mt-6">
<div class="col-span-6"></div> <div class="col-span-6"></div>
<div class="flex items-start col-span-6"> <div class="flex items-start col-span-6">
@ -86,7 +104,7 @@
:placeholder="[[$t('strasse')]]" :placeholder="[[$t('strasse')]]"
id="street" id="street"
autocomplete="street-address" autocomplete="street-address"
class="dark:bg-gray-800 mt-1 focus:ring-indigo-500 block w-full shadow-sm rounded-l-md sm:text-sm border-gray-300 border bg-gray-50 text-gray-500 rounded-md p-2" class="dark:bg-gray-800 mt-1 focus:ring-indigo-500 block w-full shadow-sm sm:text-sm border-gray-300 border bg-gray-50 text-gray-500 rounded-md p-2"
/> />
</div> </div>
<div class="col-span-6 sm:col-span-6 lg:col-span-2"> <div class="col-span-6 sm:col-span-6 lg:col-span-2">
@ -96,7 +114,7 @@
name="city" name="city"
:placeholder="[[$t('ort')]]" :placeholder="[[$t('ort')]]"
id="city" id="city"
class="dark:bg-gray-800 mt-1 focus:ring-indigo-500 block w-full shadow-sm rounded-l-md sm:text-sm border-gray-300 border bg-gray-50 text-gray-500 rounded-md p-2" class="dark:bg-gray-800 mt-1 focus:ring-indigo-500 block w-full shadow-sm sm:text-sm border-gray-300 border bg-gray-50 text-gray-500 rounded-md p-2"
/> />
</div> </div>
<div class="col-span-6 sm:col-span-3 lg:col-span-2"> <div class="col-span-6 sm:col-span-3 lg:col-span-2">
@ -107,7 +125,7 @@
:placeholder="[[$t('plz')]]" :placeholder="[[$t('plz')]]"
id="postal_code" id="postal_code"
autocomplete="postal-code" autocomplete="postal-code"
class="dark:bg-gray-800 mt-1 focus:ring-indigo-500 block w-full shadow-sm rounded-l-md sm:text-sm border-gray-300 border bg-gray-50 text-gray-500 rounded-md p-2" class="dark:bg-gray-800 mt-1 focus:ring-indigo-500 block w-full shadow-sm sm:text-sm border-gray-300 border bg-gray-50 text-gray-500 rounded-md p-2"
/> />
</div> </div>
</div> </div>
@ -163,20 +181,27 @@ import { ref } from "vue";
import axios from "redaxios"; import axios from "redaxios";
import Toastify from "toastify-js"; import Toastify from "toastify-js";
import isEmail from 'validator/es/lib/isEmail'; import isEmail from 'validator/es/lib/isEmail';
import isMobilePhone from 'validator/es/lib/isMobilePhone';
let userdetails = ref({ firstname: "", lastname: "", middlename: "", mail: "" }); let userdetails = ref({ firstname: "", lastname: "", middlename: "", mail: "", phone: "" });
let phone_valid = ref(!userdetails.value.phone.trim() || isMobilePhone(userdetails.value.phone));
let provide_address = ref(false); let provide_address = ref(false);
let agb_accepted = ref(false); let agb_accepted = ref(false);
function login() { function login() {
userdetails = userdetails.value; userdetails = userdetails.value;
if (userdetails.phone === "" || isMobilePhone(userdetails.phone)) {
if (isEmail(userdetails.mail)) { if (isEmail(userdetails.mail)) {
axios.post('https://dev.lauf-fuer-kaya.de/api/runners/register', { let postdata = {
"email": userdetails.mail, "email": userdetails.mail,
"firstname": userdetails.firstname, "firstname": userdetails.firstname,
"middlename": userdetails.middlename, "middlename": userdetails.middlename,
"lastname": userdetails.lastname, "lastname": userdetails.lastname,
"address": {} "address": {}
}) }
if (isMobilePhone(userdetails.phone)) {
postdata.phone = userdetails.phone;
}
axios.post('https://dev.lauf-fuer-kaya.de/api/runners/register',)
.then(function(response) { .then(function(response) {
response = response.data; response = response.data;
const token = response.token; const token = response.token;
@ -188,6 +213,7 @@ function login() {
console.log(error); console.log(error);
}); });
} }
}
// console.log(agb_accepted.value); // console.log(agb_accepted.value);
// alert("AGB was " + (agb_accepted.value === true ? "accepted" : "not accepted")); // alert("AGB was " + (agb_accepted.value === true ? "accepted" : "not accepted"));
} }

View File

@ -4,6 +4,7 @@
"mittelname": "Mittelname", "mittelname": "Mittelname",
"nachname": "Nachname", "nachname": "Nachname",
"ort": "Ort", "ort": "Ort",
"phone_number": "Telefonnummer",
"please_provide_valid_mail": "Bitte geben Sie eine gültige E-Mail Adresse an", "please_provide_valid_mail": "Bitte geben Sie eine gültige E-Mail Adresse an",
"plz": "PLZ", "plz": "PLZ",
"provide_address": "Adresse angeben?", "provide_address": "Adresse angeben?",

View File

@ -4,6 +4,7 @@
"mittelname": "Middlename", "mittelname": "Middlename",
"nachname": "Lastname", "nachname": "Lastname",
"ort": "City", "ort": "City",
"phone_number": "Phone Number",
"please_provide_valid_mail": "Please provide a valid mail address.", "please_provide_valid_mail": "Please provide a valid mail address.",
"plz": "zipcode", "plz": "zipcode",
"provide_address": "Provide a postal address?", "provide_address": "Provide a postal address?",