Improve text prompts when reCAPTCHA is enabled

This commit is contained in:
Little_Qiu 2019-03-24 22:46:47 +08:00 committed by Pig Fang
parent 37cc838137
commit f6845ab22c
4 changed files with 31 additions and 4 deletions

View File

@ -68,6 +68,8 @@ export default {
password: '', password: '',
remember: false, remember: false,
tooManyFails: blessing.extra.tooManyFails, tooManyFails: blessing.extra.tooManyFails,
recaptcha: blessing.extra.recaptcha,
invisible: blessing.extra.invisible,
infoMsg: '', infoMsg: '',
warningMsg: '', warningMsg: '',
pending: false, pending: false,
@ -112,7 +114,13 @@ export default {
}, 1000) }, 1000)
} else { } else {
if (loginFails > 3 && !this.tooManyFails) { if (loginFails > 3 && !this.tooManyFails) {
this.$alert(this.$t('auth.tooManyFails'), { type: 'error' }) if (this.recaptcha) {
if (!this.invisible) {
this.$alert(this.$t('auth.tooManyFails.recaptcha'), { type: 'error' })
}
} else {
this.$alert(this.$t('auth.tooManyFails.captcha'), { type: 'error' })
}
this.tooManyFails = true this.tooManyFails = true
} }
this.infoMsg = '' this.infoMsg = ''

View File

@ -23,6 +23,8 @@ test('login', async () => {
Vue.prototype.$http.post Vue.prototype.$http.post
.mockResolvedValueOnce({ errno: 1, msg: 'fail' }) .mockResolvedValueOnce({ errno: 1, msg: 'fail' })
.mockResolvedValueOnce({ errno: 1, login_fails: 4 }) .mockResolvedValueOnce({ errno: 1, login_fails: 4 })
.mockResolvedValueOnce({ errno: 1, login_fails: 4 })
.mockResolvedValueOnce({ errno: 1, login_fails: 4 })
.mockResolvedValueOnce({ errno: 0, msg: 'ok' }) .mockResolvedValueOnce({ errno: 0, msg: 'ok' })
const wrapper = mount(Login, { stubs: { Captcha } }) const wrapper = mount(Login, { stubs: { Captcha } })
const form = wrapper.find('form') const form = wrapper.find('form')
@ -51,9 +53,22 @@ test('login', async () => {
form.trigger('submit') form.trigger('submit')
await wrapper.vm.$nextTick() await wrapper.vm.$nextTick()
expect(Vue.prototype.$alert).toBeCalledWith('auth.tooManyFails', { type: 'error' }) expect(Vue.prototype.$alert).toBeCalledWith('auth.tooManyFails.captcha', { type: 'error' })
expect(wrapper.find('img').exists()).toBeTrue() expect(wrapper.find('img').exists()).toBeTrue()
wrapper.setData({
recaptcha: 'sitekey', invisible: true, tooManyFails: false,
})
form.trigger('submit')
await wrapper.vm.$nextTick()
wrapper.setData({
recaptcha: 'sitekey', invisible: false, tooManyFails: false,
})
form.trigger('submit')
await wrapper.vm.$nextTick()
expect(Vue.prototype.$alert).toBeCalledWith('auth.tooManyFails.recaptcha', { type: 'error' })
wrapper.find('[type="checkbox"]').setChecked() wrapper.find('[type="checkbox"]').setChecked()
form.trigger('submit') form.trigger('submit')
await wrapper.vm.$nextTick() await wrapper.vm.$nextTick()

View File

@ -4,7 +4,9 @@ auth:
emptyCaptcha: Empty captcha. emptyCaptcha: Empty captcha.
login: Log In login: Log In
loggingIn: Logging In loggingIn: Logging In
tooManyFails: You fails too many times! Please enter the CAPTCHA. tooManyFails:
captcha: You fails too many times! Please enter the CAPTCHA.
recaptcha: You fails too many times! Please pass the reCAPTCHA challenge.
emptyEmail: Empty email address. emptyEmail: Empty email address.
invalidEmail: Invalid format of email address. invalidEmail: Invalid format of email address.
invalidPassword: Invalid password. The length of password should between 8 and 32. invalidPassword: Invalid password. The length of password should between 8 and 32.

View File

@ -4,7 +4,9 @@ auth:
emptyCaptcha: 你还没有填写验证码哦 emptyCaptcha: 你还没有填写验证码哦
login: 登录 login: 登录
loggingIn: 登录中 loggingIn: 登录中
tooManyFails: 你尝试的次数太多啦,请输入验证码 tooManyFails:
captcha: 你尝试的次数太多啦,请输入验证码
recaptcha: 你尝试的次数太多啦,请通过 reCAPTCHA 人机验证
emptyEmail: 你还没有填写邮箱哦 emptyEmail: 你还没有填写邮箱哦
invalidEmail: 邮箱格式不正确! invalidEmail: 邮箱格式不正确!
invalidPassword: 无效的密码。密码长度应该大于 8 并小于 32。 invalidPassword: 无效的密码。密码长度应该大于 8 并小于 32。