Update validate data
This commit is contained in:
@@ -18,6 +18,7 @@
|
|||||||
placeholder="Nhập email"
|
placeholder="Nhập email"
|
||||||
v-model="email"
|
v-model="email"
|
||||||
@blur="validateEmail(email)"
|
@blur="validateEmail(email)"
|
||||||
|
@keyup.enter="signin()"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
<p
|
<p
|
||||||
@@ -37,6 +38,7 @@
|
|||||||
placeholder="Nhập mật khẩu"
|
placeholder="Nhập mật khẩu"
|
||||||
v-model="password"
|
v-model="password"
|
||||||
@blur="validatePassword(password)"
|
@blur="validatePassword(password)"
|
||||||
|
@keyup.enter="signin()"
|
||||||
/>
|
/>
|
||||||
</p>
|
</p>
|
||||||
<div class="control">
|
<div class="control">
|
||||||
@@ -59,7 +61,9 @@
|
|||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
<div class="field mt-5 pt-1 group-action">
|
<div class="field mt-5 pt-1 group-action">
|
||||||
<button class="button is-primary" @click="signin()">Đăng nhập</button>
|
<button :class="['button', 'is-primary', isLoading && 'is-loading']" @click="signin()">
|
||||||
|
Đăng nhập
|
||||||
|
</button>
|
||||||
<a class="is-primary" @click="accountRecovery()">Quên mật khẩu?</a>
|
<a class="is-primary" @click="accountRecovery()">Quên mật khẩu?</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -168,13 +172,9 @@ export default {
|
|||||||
account: undefined,
|
account: undefined,
|
||||||
company: this.$companyInfo(),
|
company: this.$companyInfo(),
|
||||||
isVietnamese: true,
|
isVietnamese: true,
|
||||||
|
isLoading: false,
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
mounted() {
|
|
||||||
window.addEventListener('keyup', (ev) =>
|
|
||||||
ev.key === 'Enter' && this.$route.name === 'signup' ? this.signin() : false,
|
|
||||||
);
|
|
||||||
},
|
|
||||||
watch: {
|
watch: {
|
||||||
isLoaded: function (newVal) {
|
isLoaded: function (newVal) {
|
||||||
if (this.isLoaded) {
|
if (this.isLoaded) {
|
||||||
@@ -262,50 +262,36 @@ export default {
|
|||||||
// Xóa lỗi cũ
|
// Xóa lỗi cũ
|
||||||
this.errors = this.errors.filter((err) => err.name !== 'email');
|
this.errors = this.errors.filter((err) => err.name !== 'email');
|
||||||
|
|
||||||
if (this.$empty(email)) {
|
const res = this.$validateEmail(email);
|
||||||
|
|
||||||
|
if (!res.status) {
|
||||||
this.errors.push({
|
this.errors.push({
|
||||||
name: 'email',
|
name: 'email',
|
||||||
text: 'Email không được để trống.',
|
text: res.message,
|
||||||
});
|
});
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!this.$regexEmail(String(email).toLowerCase())) {
|
|
||||||
this.errors.push({
|
|
||||||
name: 'email',
|
|
||||||
text: 'Email không đúng định dạng.',
|
|
||||||
});
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
|
||||||
},
|
},
|
||||||
|
|
||||||
validatePassword(password) {
|
validatePassword(password) {
|
||||||
// Xóa lỗi cũ
|
// Xóa lỗi cũ
|
||||||
this.errors = this.errors.filter((err) => err.name !== 'password');
|
this.errors = this.errors.filter((err) => err.name !== 'password');
|
||||||
|
|
||||||
if (this.$empty(password)) {
|
const res = this.$validatePassword(password);
|
||||||
|
|
||||||
|
if (!res.status) {
|
||||||
this.errors.push({
|
this.errors.push({
|
||||||
name: 'password',
|
name: 'password',
|
||||||
text: 'Mật khẩu không được để trống.',
|
text: res.message,
|
||||||
});
|
});
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!this.$regexPassword(String(password).toLowerCase())) {
|
|
||||||
this.errors.push({
|
|
||||||
name: 'password',
|
|
||||||
text: 'Mật khẩu không đúng định dạng.',
|
|
||||||
});
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
|
||||||
},
|
},
|
||||||
|
|
||||||
async signin() {
|
async signin() {
|
||||||
if (this.checkError()) return;
|
this.isLoading = true;
|
||||||
|
if (this.checkError()) {
|
||||||
|
this.isLoading = false;
|
||||||
|
return;
|
||||||
|
}
|
||||||
let conn = this.$findapi('login');
|
let conn = this.$findapi('login');
|
||||||
conn.params.filter = { email: this.email, password: this.password };
|
conn.params.filter = { email: this.email, password: this.password };
|
||||||
let result = await this.$getapi([conn]);
|
let result = await this.$getapi([conn]);
|
||||||
@@ -358,8 +344,6 @@ export default {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
invalidLogin(data) {
|
invalidLogin(data) {
|
||||||
console.log('login', data);
|
|
||||||
|
|
||||||
if (!data) {
|
if (!data) {
|
||||||
const text = 'Tài khoản hoặc mật khẩu không chính xác';
|
const text = 'Tài khoản hoặc mật khẩu không chính xác';
|
||||||
this.errors.push({ name: 'email', text: text });
|
this.errors.push({ name: 'email', text: text });
|
||||||
@@ -375,18 +359,20 @@ export default {
|
|||||||
return this.errors.length > 0 ? true : false;
|
return this.errors.length > 0 ? true : false;
|
||||||
},
|
},
|
||||||
async fillData(data) {
|
async fillData(data) {
|
||||||
if (this.invalidLogin(data)) return;
|
this.isLoading = true;
|
||||||
|
if (this.invalidLogin(data)) {
|
||||||
|
this.isLoaded = false;
|
||||||
|
this.isLoading = false;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
//check permision
|
||||||
|
if (this.module !== 'website') {
|
||||||
|
let userapps = await this.$getdata('userapps', { user: data.id, apps__code: this.module }, undefined, true);
|
||||||
|
if (!userapps) return this.$router.push('/welcome');
|
||||||
|
}
|
||||||
this.login = data; //store login
|
this.login = data; //store login
|
||||||
if (data.type === 1 || data.type__code === 'customer') {
|
if (this.$store.state.link) {
|
||||||
this.redirectUrl();
|
|
||||||
} else if (this.$store.state.link) {
|
|
||||||
let ele = this.$copy(data);
|
let ele = this.$copy(data);
|
||||||
if (
|
|
||||||
this.$store.state.link.indexOf('bigdatatech.vn') < 0 &&
|
|
||||||
this.$store.state.link.indexOf('localhost:3000') < 0
|
|
||||||
) {
|
|
||||||
return this.$redirectWeb(ele);
|
|
||||||
}
|
|
||||||
//get token & redirect link
|
//get token & redirect link
|
||||||
const browser = Bowser.getParser(window.navigator.userAgent);
|
const browser = Bowser.getParser(window.navigator.userAgent);
|
||||||
let obj = {
|
let obj = {
|
||||||
@@ -399,8 +385,13 @@ export default {
|
|||||||
};
|
};
|
||||||
ele.token = obj.token;
|
ele.token = obj.token;
|
||||||
await this.$insertapi('authtoken', obj);
|
await this.$insertapi('authtoken', obj);
|
||||||
//await this.sendNoti(obj)
|
let link = this.$store.state.link;
|
||||||
this.$redirectWeb(ele);
|
if (data.type === 3 && link.indexOf('y99') >= 0) {
|
||||||
|
link = link.indexOf('dev') >= 0 ? '' : '';
|
||||||
|
}
|
||||||
|
let href = `${link}?username=${ele.username}&token=${ele.token}&fullname=${ele.fullname}&userid=${ele.id}`;
|
||||||
|
if (ele.avatar) href = `${href}&avatar=${ele.avatar}`;
|
||||||
|
window.location.href = href;
|
||||||
} else this.redirectUrl();
|
} else this.redirectUrl();
|
||||||
},
|
},
|
||||||
async sendNoti(obj) {
|
async sendNoti(obj) {
|
||||||
|
|||||||
@@ -339,85 +339,56 @@ export default {
|
|||||||
// Xóa lỗi cũ
|
// Xóa lỗi cũ
|
||||||
this.errors = this.errors.filter((err) => err.name !== 'fullname');
|
this.errors = this.errors.filter((err) => err.name !== 'fullname');
|
||||||
|
|
||||||
if (this.$empty(fullName)) {
|
const res = this.$validateFullName(fullName);
|
||||||
|
|
||||||
|
if (!res.status) {
|
||||||
this.errors.push({
|
this.errors.push({
|
||||||
name: 'fullname',
|
name: 'fullname',
|
||||||
text: 'Họ và tên không được để trống.',
|
text: res.message,
|
||||||
});
|
});
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (fullName.length < 5) {
|
|
||||||
this.errors.push({
|
|
||||||
name: 'fullname',
|
|
||||||
text: 'Họ và tên quá ngắn. Yêu cầu từ 5 kí tự trở nên.',
|
|
||||||
});
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
|
||||||
},
|
},
|
||||||
|
|
||||||
validateEmail(email) {
|
validateEmail(email) {
|
||||||
// Xóa lỗi cũ
|
// Xóa lỗi cũ
|
||||||
this.errors = this.errors.filter((err) => err.name !== 'email');
|
this.errors = this.errors.filter((err) => err.name !== 'email');
|
||||||
|
|
||||||
if (this.$empty(email)) {
|
const res = this.$validateEmail(email);
|
||||||
|
|
||||||
|
if (!res.status) {
|
||||||
this.errors.push({
|
this.errors.push({
|
||||||
name: 'email',
|
name: 'email',
|
||||||
text: 'Email không được để trống.',
|
text: res.message,
|
||||||
});
|
});
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!this.$regexEmail(String(email).toLowerCase())) {
|
|
||||||
this.errors.push({
|
|
||||||
name: 'email',
|
|
||||||
text: 'Email không đúng định dạng.',
|
|
||||||
});
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
|
||||||
},
|
},
|
||||||
|
|
||||||
validatePassword(password) {
|
validatePassword(password) {
|
||||||
// Xóa lỗi cũ
|
// Xóa lỗi cũ
|
||||||
this.errors = this.errors.filter((err) => err.name !== 'password');
|
this.errors = this.errors.filter((err) => err.name !== 'password');
|
||||||
|
|
||||||
if (this.$empty(password)) {
|
const res = this.$validatePassword(password);
|
||||||
|
|
||||||
|
if (!res.status) {
|
||||||
this.errors.push({
|
this.errors.push({
|
||||||
name: 'password',
|
name: 'password',
|
||||||
text: 'Mật khẩu không được để trống.',
|
text: res.message,
|
||||||
});
|
});
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!this.$regexPassword(String(password).toLowerCase())) {
|
|
||||||
this.errors.push({
|
|
||||||
name: 'password',
|
|
||||||
text: 'Mật khẩu không đúng định dạng.',
|
|
||||||
});
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
|
||||||
},
|
},
|
||||||
|
|
||||||
validatePhone(phone) {
|
validatePhone(phone) {
|
||||||
// Xóa lỗi cũ
|
// Xóa lỗi cũ
|
||||||
this.errors = this.errors.filter((err) => err.name !== 'phone');
|
this.errors = this.errors.filter((err) => err.name !== 'phone');
|
||||||
if (!this.$empty(phone)) {
|
|
||||||
if (!this.$regexPhone(phone)) {
|
|
||||||
this.errors.push({
|
|
||||||
name: 'phone',
|
|
||||||
text: 'Số điện thoại không hợp lệ.',
|
|
||||||
});
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
const res = this.$validatePhone(phone, true);
|
||||||
|
|
||||||
|
if (!res.status) {
|
||||||
|
this.errors.push({
|
||||||
|
name: 'phone',
|
||||||
|
text: res.message,
|
||||||
|
});
|
||||||
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
async createAccount() {
|
async createAccount() {
|
||||||
@@ -497,8 +468,6 @@ export default {
|
|||||||
},
|
},
|
||||||
onSuccess(googleUser) {
|
onSuccess(googleUser) {
|
||||||
let info = googleUser.getBasicProfile();
|
let info = googleUser.getBasicProfile();
|
||||||
console.log('Google info', info);
|
|
||||||
|
|
||||||
let keys = Object.keys(info);
|
let keys = Object.keys(info);
|
||||||
this.email = info[keys[5]];
|
this.email = info[keys[5]];
|
||||||
this.fullname = info[keys[1]];
|
this.fullname = info[keys[1]];
|
||||||
|
|||||||
@@ -297,5 +297,97 @@ Vue.use({
|
|||||||
const regexFullName = /^[A-Za-zÀ-ỹ]+(\s[A-Za-zÀ-ỹ]+)+$/;
|
const regexFullName = /^[A-Za-zÀ-ỹ]+(\s[A-Za-zÀ-ỹ]+)+$/;
|
||||||
return regexFullName.test(fullName);
|
return regexFullName.test(fullName);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Vue.prototype.$validateEmail = function (email, isNull = false) {
|
||||||
|
const value = (email || '').trim().toLowerCase();
|
||||||
|
|
||||||
|
if (!isNull && !value) {
|
||||||
|
return {
|
||||||
|
status: false,
|
||||||
|
message: 'Email không được bỏ trống.',
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
if (value && !this.$regexEmail(value)) {
|
||||||
|
return {
|
||||||
|
status: false,
|
||||||
|
message: 'Email không hợp lệ. Vui lòng nhập đúng định dạng (ví dụ: ex@gmail.com).',
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
return {
|
||||||
|
status: true,
|
||||||
|
message: '',
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
Vue.prototype.$validatePassword = function (password, isNull = false) {
|
||||||
|
const value = (password || '').trim();
|
||||||
|
|
||||||
|
if (!isNull && !value) {
|
||||||
|
return {
|
||||||
|
status: false,
|
||||||
|
message: 'Mật khẩu không được bỏ trống.',
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
if (value && !this.$regexPassword(value)) {
|
||||||
|
return {
|
||||||
|
status: false,
|
||||||
|
message: 'Mật khẩu không hợp lệ. Phải có ít nhất 8 ký tự, bao gồm chữ hoa, chữ thường, số và ký tự đặc biệt.',
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
return {
|
||||||
|
status: true,
|
||||||
|
message: '',
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
Vue.prototype.$validatePhone = function (phone, isNull = false) {
|
||||||
|
const value = (phone || '').trim();
|
||||||
|
|
||||||
|
if (!isNull && !value) {
|
||||||
|
return {
|
||||||
|
status: false,
|
||||||
|
message: 'Số điện thoại không được bỏ trống.',
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
if (value && !this.$regexPhone(value)) {
|
||||||
|
return {
|
||||||
|
status: false,
|
||||||
|
message: 'Số điện thoại không hợp lệ. Vui lòng nhập số điện thoại Việt Nam hợp lệ (ví dụ: 0912345678).',
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
return {
|
||||||
|
status: true,
|
||||||
|
message: '',
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
Vue.prototype.$validateFullName = function (fullName, isNull = false) {
|
||||||
|
const value = (fullName || '').trim();
|
||||||
|
|
||||||
|
if (!isNull && !value) {
|
||||||
|
return {
|
||||||
|
status: false,
|
||||||
|
message: 'Họ và tên không được bỏ trống.',
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
if (value && !this.$regexFullName(value)) {
|
||||||
|
return {
|
||||||
|
status: false,
|
||||||
|
message: 'Họ và tên không hợp lệ. Vui lòng nhập họ và tên đầy đủ.',
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
return {
|
||||||
|
status: true,
|
||||||
|
message: '',
|
||||||
|
};
|
||||||
|
};
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user