208 lines
5.1 KiB
TypeScript
Executable File
208 lines
5.1 KiB
TypeScript
Executable File
import { tools } from '@store/Modules/tools'
|
|
|
|
import { ISignupOptions } from 'model'
|
|
|
|
import { Logo } from '../../components/logo'
|
|
|
|
// import 'vue-country-code/dist/vue-country-code.css'
|
|
|
|
import { CTitleBanner } from '../CTitleBanner'
|
|
import { computed, defineComponent, reactive, ref } from 'vue'
|
|
import { CSignIn } from '@/components/CSignIn'
|
|
import { useQuasar } from 'quasar'
|
|
import { useI18n } from '@/boot/i18n'
|
|
import { DefaultProfile, useUserStore } from '@store/UserStore'
|
|
import useValidate from '@vuelidate/core'
|
|
import useVuelidate from '@vuelidate/core'
|
|
|
|
import { email, minLength, required, sameAs } from '@vuelidate/validators'
|
|
// import { ValidationRuleset } from 'vuelidate'
|
|
import { complexity, registeredemail, registereduser } from '../../validation'
|
|
|
|
import 'vue3-tel-input/dist/vue3-tel-input.css'
|
|
|
|
// import {Loading, QSpinnerFacebook, QSpinnerGears} from 'quasar'
|
|
|
|
export default defineComponent({
|
|
name: 'CSignUp',
|
|
components: { Logo, CTitleBanner },
|
|
props: {
|
|
showadultcheck: {
|
|
type: Boolean,
|
|
required: false,
|
|
default: false,
|
|
},
|
|
showcell: {
|
|
type: Boolean,
|
|
required: false,
|
|
default: false,
|
|
},
|
|
shownationality: {
|
|
type: Boolean,
|
|
required: false,
|
|
default: false,
|
|
},
|
|
},
|
|
setup(props, { emit }) {
|
|
const $q = useQuasar()
|
|
const { t } = useI18n()
|
|
const userStore = useUserStore()
|
|
|
|
const countryname = ref('')
|
|
const iamadult = ref(false)
|
|
const duplicate_email = ref(false)
|
|
const duplicate_username = ref(false)
|
|
|
|
const signup = reactive(<ISignupOptions> {
|
|
email: process.env.TEST_EMAIL || '',
|
|
username: process.env.TEST_USERNAME || '',
|
|
name: process.env.TEST_NAME || '',
|
|
surname: process.env.TEST_SURNAME || '',
|
|
password: process.env.TEST_PASSWORD || '',
|
|
repeatPassword: process.env.TEST_PASSWORD || '',
|
|
terms: !process.env.PROD,
|
|
profile: DefaultProfile,
|
|
aportador_solidario: '',
|
|
})
|
|
|
|
const validations: any = computed(() => {
|
|
return {
|
|
repeatPassword: {
|
|
required,
|
|
repeatPassword: sameAs(signup.password),
|
|
},
|
|
password: {
|
|
required,
|
|
minLength: minLength(8),
|
|
complexity,
|
|
},
|
|
username: {
|
|
required,
|
|
minLength: minLength(6),
|
|
registereduser,
|
|
},
|
|
name: {
|
|
required,
|
|
},
|
|
surname: {
|
|
required,
|
|
},
|
|
email: {
|
|
email,
|
|
registeredemail,
|
|
required,
|
|
},
|
|
terms: {
|
|
required,
|
|
},
|
|
}
|
|
})
|
|
|
|
// @ts-ignore
|
|
const v$ = useVuelidate(validations, signup)
|
|
|
|
function allowSubmit() {
|
|
|
|
let error = v$.value.$error || v$.value.$invalid
|
|
|
|
if (props.showadultcheck)
|
|
error = error || !iamadult.value
|
|
|
|
if (props.showcell) {
|
|
if (signup.profile)
|
|
error = error || signup.profile.cell!.length <= 6
|
|
else
|
|
error = true
|
|
}
|
|
|
|
return !error
|
|
}
|
|
|
|
function env() {
|
|
return process.env
|
|
}
|
|
|
|
|
|
function changeemail() {
|
|
signup.email = tools.removespaces(signup.email!)
|
|
signup.email = signup.email.toLowerCase()
|
|
emit('update:value', signup.email)
|
|
}
|
|
|
|
function changeusername(value: string) {
|
|
signup.username = tools.removespaces(signup.username)
|
|
emit('update:value', signup.username)
|
|
}
|
|
|
|
function submitOk() {
|
|
v$.value.$touch()
|
|
|
|
signup.email = tools.removespaces(signup.email!)
|
|
signup.email = signup.email.toLowerCase()
|
|
signup.username = tools.removespaces(signup.username)
|
|
|
|
duplicate_email.value = false
|
|
duplicate_username.value = false
|
|
|
|
if (!signup.terms) {
|
|
tools.showNotif($q, t('reg.err.terms'))
|
|
return
|
|
}
|
|
|
|
/*if (v$.signup.$error) {
|
|
tools.showNotif($q, t('reg.err.errore_generico'))
|
|
return
|
|
} */
|
|
|
|
signup.name = tools.CapitalizeAllWords(signup.name)
|
|
signup.surname = tools.CapitalizeAllWords(signup.surname)
|
|
|
|
$q.loading.show({ message: t('reg.incorso') })
|
|
|
|
console.log(signup)
|
|
return userStore.signup(tools.clone(signup))
|
|
.then((ris: any) => {
|
|
if (tools.SignUpcheckErrors($q, ris.code, ris.msg))
|
|
$q.loading.hide()
|
|
}).catch((error: string) => {
|
|
console.log('ERROR = ' + error)
|
|
$q.loading.hide()
|
|
})
|
|
|
|
}
|
|
|
|
function intcode_change(coderec: any) {
|
|
// console.log('intcode', coderec)
|
|
if (signup.profile) {
|
|
signup.profile.intcode_cell = '+' + coderec.dialCode
|
|
signup.profile.iso2_cell = coderec.iso2
|
|
}
|
|
}
|
|
|
|
function selectcountry({ name, iso2, dialCode }: { name: string, iso2: string, dialCode: string }) {
|
|
// console.log(name, iso2, dialCode)
|
|
signup.profile.nationality = iso2
|
|
countryname.value = name
|
|
}
|
|
|
|
function inputUsername(value: string) {
|
|
signup.username = value.trim()
|
|
}
|
|
|
|
return {
|
|
changeemail,
|
|
changeusername,
|
|
submitOk,
|
|
inputUsername,
|
|
selectcountry,
|
|
intcode_change,
|
|
tools,
|
|
countryname,
|
|
signup,
|
|
iamadult,
|
|
v$,
|
|
allowSubmit,
|
|
}
|
|
},
|
|
})
|