diff --git a/package-lock.json b/package-lock.json index 739fd91..4431bf9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1230,8 +1230,7 @@ "ansi-regex": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" }, "ansi-styles": { "version": "3.2.1", @@ -3495,8 +3494,7 @@ "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" }, "eslint-scope": { "version": "4.0.0", @@ -4767,7 +4765,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", - "dev": true, "requires": { "ansi-regex": "2.1.1" } @@ -5774,6 +5771,38 @@ "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", "dev": true }, + "ladash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/ladash/-/ladash-1.2.0.tgz", + "integrity": "sha1-wlWPJYd5hc5VWqbnByO0SnLAw2Y=", + "requires": { + "chalk": "1.1.3" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=" + }, + "chalk": { + "version": "1.1.3", + "resolved": "http://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "requires": { + "ansi-styles": "2.2.1", + "escape-string-regexp": "1.0.5", + "has-ansi": "2.0.0", + "strip-ansi": "3.0.1", + "supports-color": "2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=" + } + } + }, "last-call-webpack-plugin": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/last-call-webpack-plugin/-/last-call-webpack-plugin-3.0.0.tgz", @@ -8840,7 +8869,6 @@ "version": "3.0.1", "resolved": "http://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, "requires": { "ansi-regex": "2.1.1" } diff --git a/package.json b/package.json index fbd06ee..a8e0587 100644 --- a/package.json +++ b/package.json @@ -16,6 +16,7 @@ "chart": "^0.1.2", "chart.js": "^2.7.2", "countup.js": "^1.9.3", + "ladash": "^1.2.0", "quasar-extras": "^2.0.8", "roboto-font": "^0.1.0", "vivus": "^0.4.4", diff --git a/src/components/views/login/signup.vue b/src/components/views/login/signup.vue index 3c19485..6a1120c 100644 --- a/src/components/views/login/signup.vue +++ b/src/components/views/login/signup.vue @@ -84,7 +84,7 @@ - Submit + Submit @@ -104,7 +104,11 @@ import {mapGetters, mapActions} from 'vuex' import * as types from '../../../store/mutation-types' - import { Errori_MongoDb } from '../../../store/modules/user' + import {Errori_MongoDb} from '../../../store/modules/user' + + import axios from 'axios'; + + import { debounce } from 'quasar' export default { @@ -118,7 +122,9 @@ confirmpassword: process.env.TEST_PASSWORD, dateOfBirth: '', terms: true, - } + }, + duplicate_email: false, + duplicate_username: false, } }, computed: { @@ -144,9 +150,36 @@ }, validations: { form: { - email: {required, email}, + email: { + required, email, + }, password: {required, minLength: minLength(8), maxLength: maxLength(20)}, - username: {required, minLength: minLength(6), maxLength: maxLength(20)}, + username: { + required, minLength: minLength(6), maxLength: maxLength(20), + unique: value => { + if (value === '') return true; + debounce(function() { + return axios.get(process.env.MONGODB_HOST + '/users/' + value) + .then(res => { + console.log("STATUS: "); + console.log(res.status); + if (res.status !== 200) + return true; + else + return false; + }).then(ris => { + setTimeout(() => { + // + return ris; + }, 1000); + }) + .catch((e) => { + console.log(e); + return true; + }) + }, 2000); + } + }, confirmpassword: { sameAsPassword: sameAs('password') }, @@ -154,13 +187,6 @@ } }, - watch: { - getscode(code) { - if (code === Errori_MongoDb.DUPLICATE_EMAIL_ID) { - this.$q.notify(this.$t('reg.err.duplicate_email')); - } - } - }, methods: { ...mapActions("user", { signup: types.USER_SIGNUP, @@ -171,12 +197,27 @@ if (!item.required) return this.$t('reg.err.required'); if (!item.minLength) return this.$t('reg.err.atleast') + ` ${item.$params.minLength.min} ` + this.$t('reg.err.char'); if (!item.maxLength) return this.$t('reg.err.notmore') + ` ${item.$params.maxLength.max} ` + this.$t('reg.err.char'); - if (item.duplicated) return this.$t('reg.err.duplicate_email'); return ''; }, + checkErrors(riscode){ + //console.log("RIS = " + riscode); + if (riscode === Errori_MongoDb.DUPLICATE_EMAIL_ID) { + this.$q.notify(this.$t('reg.err.duplicate_email')); + }else if (riscode === Errori_MongoDb.DUPLICATE_USERNAME_ID) { + this.$q.notify(this.$t('reg.err.duplicate_username')); + } else if (riscode === Errori_MongoDb.OK) { + this.$router.push('/'); + } else { + this.$q.notify("Errore num " + riscode); + } + + }, submit() { this.$v.form.$touch(); + this.duplicate_email = false; + this.duplicate_username = false; + if (!this.form.terms) { this.$q.notify(this.$t('reg.err.terms')); return @@ -192,12 +233,7 @@ console.log(this.form); this.signup(this.form) .then((riscode) => { - //console.log("RIS = " + riscode); - if (riscode === Errori_MongoDb.DUPLICATE_EMAIL_ID) { - this.$q.notify(this.$t('reg.err.duplicate_email')); - } else { - this.$router.push('/'); - } + this.checkErrors(riscode); }).catch(error => { console.log("ERROR = " + error); }); diff --git a/src/i18n.js b/src/i18n.js index ce161e7..b356405 100644 --- a/src/i18n.js +++ b/src/i18n.js @@ -20,7 +20,8 @@ const messages = { notmore: 'non dev\'essere lungo più di', char: 'caratteri', terms: 'Devi accettare le condizioni, per continuare.', - duplicate_email: 'l\'Email è già stata registrata' + duplicate_email: 'l\'Email è già stata registrata', + duplicate_username: 'L\'Username è stato già utilizzato' } }, }, @@ -46,6 +47,7 @@ const messages = { char: 'characters long', terms: 'You need to agree with the terms & conditions.', duplicate_email: 'Email was already registered', + duplicate_username: 'Username is already taken' } }, },