parent
efcb7f5674
commit
863568d7d0
|
@ -1,4 +1,5 @@
|
|||
{
|
||||
"access_is_only_provided_via_your_email_link": "Der Zugang erfolgt nur über den Link, den Sie bei der Registrierung erhalten haben.",
|
||||
"already_have_an_account": "Sie haben bereits einen Account?",
|
||||
"apartment_suite_etc": "Addresszeile 2",
|
||||
"configuration_error": "Konfigurationsfehler",
|
||||
|
@ -13,10 +14,13 @@
|
|||
"imprint": "Impressum",
|
||||
"lap_time": "Rundenzeit",
|
||||
"lap_times": "Rundenzeiten",
|
||||
"lost_your_registration_mail": "Haben Sie Ihre Registrierungsmail verloren?",
|
||||
"main_page_text": "Hier können Sie sich für den Lauf Für Kaya! registrieren oder ihr Läuferprofil verwalten.",
|
||||
"mittelname": "Mittelname",
|
||||
"nachname": "Nachname",
|
||||
"no_laps_scans_were_recorded_yet": "Es wurden noch keine Runden / Scans aufgezeichnet ...",
|
||||
"not_registered_yet": "Noch nicht registriert?",
|
||||
"organization": "Organisation",
|
||||
"ort": "Ort",
|
||||
"phone_number": "Telefonnummer",
|
||||
"please_provide_a_valid_zipcode": "Bitte geben Sie eine gültige Postleitzahl an...",
|
||||
|
@ -29,7 +33,9 @@
|
|||
"register_now": "Jetzt für den Lauf für Kaya! 2021 registrieren."
|
||||
},
|
||||
"register_now": "Jetzt registrieren!",
|
||||
"register_now_small": "Jetzt registrieren",
|
||||
"registrieren": "Registrieren",
|
||||
"resend_the_registration_mail": "Registrierungsmail erneut versenden",
|
||||
"save_changes": "Änderungen speichern",
|
||||
"sponsoring": "Sponsoring",
|
||||
"strasse": "Straße",
|
||||
|
@ -37,5 +43,7 @@
|
|||
"this_is_not_a_valid_international_phone_number": "Dies ist keine gültige internationale Telefonnummer",
|
||||
"tos": "AGBs",
|
||||
"view_my_data": "Meine Läuferdaten einsehen",
|
||||
"vorname": "Vorname"
|
||||
"vorname": "Vorname",
|
||||
"you_have_been_registered": "Sie wurden registriert!",
|
||||
"you_have_not_provided_a_valid_access_key": "Sie haben keinen gültigen Zugangsschlüssel angegeben..."
|
||||
}
|
|
@ -1,4 +1,5 @@
|
|||
{
|
||||
"access_is_only_provided_via_your_email_link": "Access is only provided via the link you received upon registration.",
|
||||
"already_have_an_account": "Already have an account?",
|
||||
"apartment_suite_etc": "Apartment, suite, etc.",
|
||||
"configuration_error": "Configuration error",
|
||||
|
@ -13,10 +14,12 @@
|
|||
"imprint": "Imprint",
|
||||
"lap_time": "Lap time",
|
||||
"lap_times": "Lap times",
|
||||
"lost_your_registration_mail": "Lost your registration mail?",
|
||||
"main_page_text": "Here you can register for the Lauf Für Kaya! or manage your runner profile.",
|
||||
"mittelname": "Middlename",
|
||||
"nachname": "Lastname",
|
||||
"no_laps_scans_were_recorded_yet": "No laps/ scans were recorded yet...",
|
||||
"not_registered_yet": "Not registered yet?",
|
||||
"organization": "Organization",
|
||||
"ort": "City",
|
||||
"phone_number": "Phone Number",
|
||||
|
@ -30,7 +33,9 @@
|
|||
"register_now": "Register now for Lauf für Kaya! 2021."
|
||||
},
|
||||
"register_now": "Register now!",
|
||||
"register_now_small": "Register now",
|
||||
"registrieren": "Register Now",
|
||||
"resend_the_registration_mail": "Resend the registration mail",
|
||||
"save_changes": "Save changes",
|
||||
"sponsoring": "Sponsoring",
|
||||
"strasse": "Street/ Block",
|
||||
|
@ -39,5 +44,6 @@
|
|||
"tos": "Terms of Service",
|
||||
"view_my_data": "View my data",
|
||||
"vorname": "Firstname",
|
||||
"you_have_been_registered": "You have been registered!"
|
||||
"you_have_been_registered": "You have been registered!",
|
||||
"you_have_not_provided_a_valid_access_key": "You have not provided a valid access key..."
|
||||
}
|
|
@ -1 +1,152 @@
|
|||
<template>You have not provided a valid access key...</template>
|
||||
<template>
|
||||
<div class="min-h-screen flex items-center justify-center">
|
||||
<div class="max-w-md w-full py-12 px-6">
|
||||
<img class="mx-auto h-24 w-auto" src="/favicon.png" alt />
|
||||
<h1
|
||||
class="sm:text-3xl text-2xl font-medium title-font mb-4 text-center"
|
||||
>Lauf für Kaya! - {{ $t('profile') }}</h1>
|
||||
<p class="mx-auto leading-relaxed text-base text-center">
|
||||
{{ $t('you_have_not_provided_a_valid_access_key') }}
|
||||
<br />
|
||||
{{ $t('access_is_only_provided_via_your_email_link') }}
|
||||
</p>
|
||||
<div class="mt-6">
|
||||
<div class="relative">
|
||||
<div class="absolute inset-0 flex items-center">
|
||||
<div class="w-full border-t border-gray-300"></div>
|
||||
</div>
|
||||
<div class="relative flex justify-center text-sm">
|
||||
<span
|
||||
class="px-2 bg-white dark:bg-gray-900"
|
||||
>{{ $t('lost_your_registration_mail') }}</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="mt-4">
|
||||
<label for="email_address" class="block font-medium">
|
||||
{{ $t('e_mail_adress') }}
|
||||
<span class="font-bold">*</span>
|
||||
</label>
|
||||
<input
|
||||
v-model="userdetails.mail"
|
||||
name="email_address"
|
||||
id="email_address"
|
||||
autocomplete="off"
|
||||
:placeholder="[[$t('e_mail_adress')]]"
|
||||
type="email"
|
||||
: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 sm:text-sm border-2 bg-gray-50 text-gray-500 rounded-md p-2"
|
||||
/>
|
||||
<p
|
||||
v-if="!isEmail(userdetails.mail)"
|
||||
class="text-sm"
|
||||
>{{ $t('please_provide_valid_mail') }}</p>
|
||||
</div>
|
||||
<div class="mt-2">
|
||||
<a
|
||||
href="./login"
|
||||
class="block w-full text-center py-2 px-3 border-2 border-gray-300 rounded-md p-1 dark:bg-gray-800 font-medium hover:border-gray-400 focus:outline-none focus:border-gray-400 sm:text-sm"
|
||||
>{{ $t('resend_the_registration_mail') }}</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="mt-12">
|
||||
<div class="relative">
|
||||
<div class="absolute inset-0 flex items-center">
|
||||
<div class="w-full border-t border-gray-300"></div>
|
||||
</div>
|
||||
<div class="relative flex justify-center text-sm">
|
||||
<span class="px-2 bg-white dark:bg-gray-900">{{ $t('not_registered_yet') }}</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="mt-2">
|
||||
<a
|
||||
href="./register/"
|
||||
class="text-white block w-full text-center py-2 px-3 border-2 border-gray-300 rounded-md p-1 bg-blue-800 font-medium hover:border-gray-400 focus:outline-none focus:border-gray-400 sm:text-sm"
|
||||
>{{ $t('register_now_small') }}</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup>
|
||||
import { computed, ref, reactive, defineProps } from "vue";
|
||||
import axios from "redaxios";
|
||||
import isEmail from 'validator/es/lib/isEmail';
|
||||
import isMobilePhone from 'validator/es/lib/isMobilePhone';
|
||||
import isPostalCode from 'validator/es/lib/isPostalCode';
|
||||
import { useToast } from "vue-toastification";
|
||||
|
||||
const props = defineProps({
|
||||
token: String
|
||||
})
|
||||
if (props.token) {
|
||||
axios.get(`${config.baseurl}api/organizations/selfservice/${props.token}`)
|
||||
.then(({ data }) => {
|
||||
state.org_name = data.name;
|
||||
state.org_teams = data.teams;
|
||||
org_team.value = data.teams[0]?.id;
|
||||
})
|
||||
.catch((error) => {
|
||||
console.log(error);
|
||||
});
|
||||
}
|
||||
|
||||
let userdetails = ref({ firstname: "", lastname: "", middlename: "", mail: "", phone: "", address: { street: "", address2: "", city: "", zipcode: "" } });
|
||||
let provide_address = ref(false);
|
||||
let agb_accepted = ref(false);
|
||||
let data_confirmed = ref(false);
|
||||
let org_team = ref("");
|
||||
//
|
||||
const state = reactive({
|
||||
org_name: "",
|
||||
org_teams: [],
|
||||
submit_enabled: computed(() => agb_accepted.value === true && data_confirmed.value === true && (isMobilePhone(userdetails.value.phone) || !userdetails.value.phone.trim()) && isEmail(userdetails.value.mail)
|
||||
&& userdetails.value.firstname
|
||||
&& userdetails.value.lastname && (provide_address.value === false || provide_address.value === true && (userdetails.value.address.street.trim() && userdetails.value.address.city.trim() && isPostalCode(userdetails.value.address.zipcode, "DE"))))
|
||||
})
|
||||
const toast = useToast();
|
||||
function login() {
|
||||
userdetails = userdetails.value;
|
||||
if (userdetails.phone === "" || isMobilePhone(userdetails.phone)) {
|
||||
if (isEmail(userdetails.mail)) {
|
||||
let postdata = {
|
||||
"email": userdetails.mail,
|
||||
"firstname": userdetails.firstname,
|
||||
"middlename": userdetails.middlename,
|
||||
"lastname": userdetails.lastname,
|
||||
"address": {}
|
||||
}
|
||||
if (isMobilePhone(userdetails.phone)) {
|
||||
postdata.phone = userdetails.phone;
|
||||
}
|
||||
if (provide_address.value === true) {
|
||||
postdata.address = {
|
||||
address1: userdetails.address.street,
|
||||
address2: userdetails.address.address2 || "",
|
||||
city: userdetails.address.city,
|
||||
postalcode: userdetails.address.zipcode,
|
||||
country: "DE",
|
||||
}
|
||||
}
|
||||
if (state.org_name !== '' && state.org_teams.length > 0) {
|
||||
postdata.team = org_team.value;
|
||||
}
|
||||
toast("registration in progress...");
|
||||
const browserlocale = ((navigator.languages && navigator.languages[0]) || '').substr(0, 2);
|
||||
let url = `${config.baseurl}api/runners/register/?locale=${browserlocale}`;
|
||||
if (props.token) {
|
||||
url = `${config.baseurl}api/runners/register/${props.token}/?locale=${browserlocale}`
|
||||
}
|
||||
axios.post(url, postdata)
|
||||
.then(({ data }) => {
|
||||
const token = btoa(data.token);
|
||||
// alert(token);
|
||||
location.replace(`${config.baseurl_selfservice}profile/${token}`);
|
||||
})
|
||||
.catch((error) => {
|
||||
console.log(error);
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
Loading…
Reference in New Issue