Update validate data
This commit is contained in:
@@ -18,6 +18,7 @@
|
||||
placeholder="Nhập email"
|
||||
v-model="email"
|
||||
@blur="validateEmail(email)"
|
||||
@keyup.enter="signin()"
|
||||
/>
|
||||
</div>
|
||||
<p
|
||||
@@ -37,6 +38,7 @@
|
||||
placeholder="Nhập mật khẩu"
|
||||
v-model="password"
|
||||
@blur="validatePassword(password)"
|
||||
@keyup.enter="signin()"
|
||||
/>
|
||||
</p>
|
||||
<div class="control">
|
||||
@@ -59,7 +61,9 @@
|
||||
</p>
|
||||
</div>
|
||||
<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>
|
||||
</div>
|
||||
</div>
|
||||
@@ -168,13 +172,9 @@ export default {
|
||||
account: undefined,
|
||||
company: this.$companyInfo(),
|
||||
isVietnamese: true,
|
||||
isLoading: false,
|
||||
};
|
||||
},
|
||||
mounted() {
|
||||
window.addEventListener('keyup', (ev) =>
|
||||
ev.key === 'Enter' && this.$route.name === 'signup' ? this.signin() : false,
|
||||
);
|
||||
},
|
||||
watch: {
|
||||
isLoaded: function (newVal) {
|
||||
if (this.isLoaded) {
|
||||
@@ -262,50 +262,36 @@ export default {
|
||||
// Xóa lỗi cũ
|
||||
this.errors = this.errors.filter((err) => err.name !== 'email');
|
||||
|
||||
if (this.$empty(email)) {
|
||||
const res = this.$validateEmail(email);
|
||||
|
||||
if (!res.status) {
|
||||
this.errors.push({
|
||||
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) {
|
||||
// Xóa lỗi cũ
|
||||
this.errors = this.errors.filter((err) => err.name !== 'password');
|
||||
|
||||
if (this.$empty(password)) {
|
||||
const res = this.$validatePassword(password);
|
||||
|
||||
if (!res.status) {
|
||||
this.errors.push({
|
||||
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() {
|
||||
if (this.checkError()) return;
|
||||
this.isLoading = true;
|
||||
if (this.checkError()) {
|
||||
this.isLoading = false;
|
||||
return;
|
||||
}
|
||||
let conn = this.$findapi('login');
|
||||
conn.params.filter = { email: this.email, password: this.password };
|
||||
let result = await this.$getapi([conn]);
|
||||
@@ -358,8 +344,6 @@ export default {
|
||||
}
|
||||
},
|
||||
invalidLogin(data) {
|
||||
console.log('login', data);
|
||||
|
||||
if (!data) {
|
||||
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 });
|
||||
@@ -375,18 +359,20 @@ export default {
|
||||
return this.errors.length > 0 ? true : false;
|
||||
},
|
||||
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
|
||||
if (data.type === 1 || data.type__code === 'customer') {
|
||||
this.redirectUrl();
|
||||
} else if (this.$store.state.link) {
|
||||
if (this.$store.state.link) {
|
||||
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
|
||||
const browser = Bowser.getParser(window.navigator.userAgent);
|
||||
let obj = {
|
||||
@@ -399,8 +385,13 @@ export default {
|
||||
};
|
||||
ele.token = obj.token;
|
||||
await this.$insertapi('authtoken', obj);
|
||||
//await this.sendNoti(obj)
|
||||
this.$redirectWeb(ele);
|
||||
let link = this.$store.state.link;
|
||||
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();
|
||||
},
|
||||
async sendNoti(obj) {
|
||||
|
||||
@@ -339,85 +339,56 @@ export default {
|
||||
// Xóa lỗi cũ
|
||||
this.errors = this.errors.filter((err) => err.name !== 'fullname');
|
||||
|
||||
if (this.$empty(fullName)) {
|
||||
const res = this.$validateFullName(fullName);
|
||||
|
||||
if (!res.status) {
|
||||
this.errors.push({
|
||||
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) {
|
||||
// Xóa lỗi cũ
|
||||
this.errors = this.errors.filter((err) => err.name !== 'email');
|
||||
|
||||
if (this.$empty(email)) {
|
||||
const res = this.$validateEmail(email);
|
||||
|
||||
if (!res.status) {
|
||||
this.errors.push({
|
||||
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) {
|
||||
// Xóa lỗi cũ
|
||||
this.errors = this.errors.filter((err) => err.name !== 'password');
|
||||
|
||||
if (this.$empty(password)) {
|
||||
const res = this.$validatePassword(password);
|
||||
|
||||
if (!res.status) {
|
||||
this.errors.push({
|
||||
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) {
|
||||
// Xóa lỗi cũ
|
||||
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() {
|
||||
@@ -497,8 +468,6 @@ export default {
|
||||
},
|
||||
onSuccess(googleUser) {
|
||||
let info = googleUser.getBasicProfile();
|
||||
console.log('Google info', info);
|
||||
|
||||
let keys = Object.keys(info);
|
||||
this.email = info[keys[5]];
|
||||
this.fullname = info[keys[1]];
|
||||
|
||||
@@ -297,5 +297,97 @@ Vue.use({
|
||||
const regexFullName = /^[A-Za-zÀ-ỹ]+(\s[A-Za-zÀ-ỹ]+)+$/;
|
||||
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