Remove old JavaScript files
This commit is contained in:
parent
d32eb379ba
commit
f71a9b3dd8
|
|
@ -1,406 +0,0 @@
|
||||||
/* eslint no-unused-vars: "off" */
|
|
||||||
|
|
||||||
const $ = require('jquery');
|
|
||||||
window.$ = window.jQuery = $;
|
|
||||||
|
|
||||||
window.blessing = {
|
|
||||||
base_url: '/'
|
|
||||||
};
|
|
||||||
|
|
||||||
describe('tests for "captcha" module', () => {
|
|
||||||
it('refresh captcha', async () => {
|
|
||||||
const url = jest.fn(path => path);
|
|
||||||
window.url = url;
|
|
||||||
|
|
||||||
document.body.innerHTML = `
|
|
||||||
<img class="captcha" src="" />
|
|
||||||
<input id="captcha" value="old" />
|
|
||||||
`;
|
|
||||||
|
|
||||||
require('../auth/captcha')();
|
|
||||||
|
|
||||||
expect($('.captcha').attr('src')).toEqual(expect.stringContaining('auth/captcha?'));
|
|
||||||
expect($('#captcha').val()).toBe('');
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
describe('tests for "login" module', () => {
|
|
||||||
const modulePath = '../auth/login';
|
|
||||||
|
|
||||||
it('login', async () => {
|
|
||||||
const fetch = jest.fn()
|
|
||||||
.mockImplementationOnce(option => {
|
|
||||||
option.beforeSend();
|
|
||||||
return Promise.resolve({ errno: 0, msg: 'success' });
|
|
||||||
})
|
|
||||||
.mockImplementationOnce(() => Promise.resolve(
|
|
||||||
{ errno: 1, msg: 'warning1', login_fails: 1 }
|
|
||||||
))
|
|
||||||
.mockImplementationOnce(() => Promise.resolve(
|
|
||||||
{ errno: 1, msg: 'warning2', login_fails: 4 }
|
|
||||||
))
|
|
||||||
.mockImplementationOnce(() => Promise.reject());
|
|
||||||
const trans = jest.fn(key => key);
|
|
||||||
const url = jest.fn(path => path);
|
|
||||||
const swal = jest.fn();
|
|
||||||
const refreshCaptcha = jest.fn();
|
|
||||||
const showAjaxError = jest.fn();
|
|
||||||
window.fetch = fetch;
|
|
||||||
window.trans = trans;
|
|
||||||
window.url = url;
|
|
||||||
window.swal = swal;
|
|
||||||
window.showMsg = jest.fn();
|
|
||||||
window.refreshCaptcha = refreshCaptcha;
|
|
||||||
window.showAjaxError = showAjaxError;
|
|
||||||
|
|
||||||
document.body.innerHTML = `
|
|
||||||
<input id="identification" />
|
|
||||||
<input id="password" />
|
|
||||||
<div id="captcha-form"></div>
|
|
||||||
<input id="captcha" />
|
|
||||||
<input id="keep" checked />
|
|
||||||
<button id="login-button"></button>
|
|
||||||
`;
|
|
||||||
|
|
||||||
require(modulePath);
|
|
||||||
|
|
||||||
$('button').click();
|
|
||||||
expect(trans).toBeCalledWith('auth.emptyIdentification');
|
|
||||||
expect($('#identification').is(':focus')).toBe(true);
|
|
||||||
|
|
||||||
$('#identification').val('username');
|
|
||||||
$('button').click();
|
|
||||||
expect(trans).toBeCalledWith('auth.emptyPassword');
|
|
||||||
expect($('#password').is(':focus')).toBe(true);
|
|
||||||
|
|
||||||
$('#password').val('password');
|
|
||||||
$('button').click();
|
|
||||||
expect(trans).toBeCalledWith('auth.emptyCaptcha');
|
|
||||||
expect($('#captcha').is(':focus')).toBe(true);
|
|
||||||
|
|
||||||
$('#captcha').val('captcha');
|
|
||||||
await $('button').click();
|
|
||||||
expect(fetch).toBeCalledWith(expect.objectContaining({
|
|
||||||
type: 'POST',
|
|
||||||
url: 'auth/login',
|
|
||||||
dataType: 'json',
|
|
||||||
data: {
|
|
||||||
identification: 'username',
|
|
||||||
password: 'password',
|
|
||||||
keep: true,
|
|
||||||
captcha: 'captcha'
|
|
||||||
}
|
|
||||||
}));
|
|
||||||
expect($('button').html()).toBe(
|
|
||||||
'<i class="fa fa-spinner fa-spin"></i> auth.loggingIn'
|
|
||||||
);
|
|
||||||
expect($('button').prop('disabled')).toBe(true);
|
|
||||||
expect(swal).toBeCalledWith({ type: 'success', html: 'success' });
|
|
||||||
|
|
||||||
$('#captcha-form').css('display', 'none');
|
|
||||||
await $('button').click();
|
|
||||||
expect($('#captcha-form').css('display')).toBe('none');
|
|
||||||
expect(refreshCaptcha).toBeCalled();
|
|
||||||
expect(showMsg).toBeCalledWith('warning1', 'warning');
|
|
||||||
expect($('button').html()).toBe('auth.login');
|
|
||||||
expect($('button').prop('disabled')).toBe(false);
|
|
||||||
|
|
||||||
await $('button').click();
|
|
||||||
expect(swal).toBeCalledWith({ type: 'error', html: 'auth.tooManyFails' });
|
|
||||||
expect($('#captcha-form').css('display')).not.toBe('none');
|
|
||||||
expect(showMsg).toBeCalledWith('warning2', 'warning');
|
|
||||||
|
|
||||||
await $('button').click();
|
|
||||||
expect(showAjaxError).toBeCalled();
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
describe('tests for "register" module', () => {
|
|
||||||
const modulePath = '../auth/register';
|
|
||||||
|
|
||||||
it('register', async () => {
|
|
||||||
const fetch = jest.fn()
|
|
||||||
.mockImplementationOnce(option => {
|
|
||||||
option.beforeSend();
|
|
||||||
return Promise.resolve({ errno: 0, msg: 'success' });
|
|
||||||
})
|
|
||||||
.mockImplementationOnce(() => Promise.resolve(
|
|
||||||
{ errno: 1, msg: 'warning' }
|
|
||||||
))
|
|
||||||
.mockImplementationOnce(() => Promise.reject(new Error));
|
|
||||||
const trans = jest.fn(key => key);
|
|
||||||
const url = jest.fn(path => path);
|
|
||||||
const swal = jest.fn().mockImplementation(() => Promise.resolve());
|
|
||||||
const showMsg = jest.fn();
|
|
||||||
const refreshCaptcha = jest.fn();
|
|
||||||
const showAjaxError = jest.fn();
|
|
||||||
window.fetch = fetch;
|
|
||||||
window.trans = trans;
|
|
||||||
window.url = url;
|
|
||||||
window.swal = swal;
|
|
||||||
window.showMsg = showMsg;
|
|
||||||
window.refreshCaptcha = refreshCaptcha;
|
|
||||||
window.showAjaxError = showAjaxError;
|
|
||||||
|
|
||||||
document.body.innerHTML = `
|
|
||||||
<input id="email" />
|
|
||||||
<input id="nickname" />
|
|
||||||
<input id="password" />
|
|
||||||
<input id="confirm-pwd" />
|
|
||||||
<div id="captcha-form"></div>
|
|
||||||
<input id="captcha" />
|
|
||||||
<button id="register-button"></button>
|
|
||||||
`;
|
|
||||||
|
|
||||||
require(modulePath);
|
|
||||||
|
|
||||||
$('button').click();
|
|
||||||
expect(trans).toBeCalledWith('auth.emptyEmail');
|
|
||||||
expect($('#email').is(':focus')).toBe(true);
|
|
||||||
|
|
||||||
$('#email').val('email');
|
|
||||||
$('button').click();
|
|
||||||
expect(trans).toBeCalledWith('auth.invalidEmail');
|
|
||||||
expect(showMsg).toBeCalledWith('auth.invalidEmail', 'warning');
|
|
||||||
expect($('#email').is(':focus')).toBe(true);
|
|
||||||
|
|
||||||
$('#email').val('a@b.c');
|
|
||||||
$('button').click();
|
|
||||||
expect(trans).toBeCalledWith('auth.emptyPassword');
|
|
||||||
expect($('#password').is(':focus')).toBe(true);
|
|
||||||
|
|
||||||
$('#password').val('secret');
|
|
||||||
$('button').click();
|
|
||||||
expect(trans).toBeCalledWith('auth.invalidPassword');
|
|
||||||
expect(showMsg).toBeCalledWith('auth.invalidPassword', 'warning');
|
|
||||||
expect($('#password').is(':focus')).toBe(true);
|
|
||||||
|
|
||||||
$('#password').val('too_long_password_very_super_long');
|
|
||||||
$('#password').blur();
|
|
||||||
$('button').click();
|
|
||||||
expect(trans).toBeCalledWith('auth.invalidPassword');
|
|
||||||
expect(showMsg).toBeCalledWith('auth.invalidPassword', 'warning');
|
|
||||||
expect($('#password').is(':focus')).toBe(true);
|
|
||||||
|
|
||||||
$('#password').val('password');
|
|
||||||
$('button').click();
|
|
||||||
expect(trans).toBeCalledWith('auth.emptyConfirmPwd');
|
|
||||||
expect($('#confirm-pwd').is(':focus')).toBe(true);
|
|
||||||
|
|
||||||
$('#confirm-pwd').val('not_same');
|
|
||||||
$('button').click();
|
|
||||||
expect(trans).toBeCalledWith('auth.invalidConfirmPwd');
|
|
||||||
expect(showMsg).toBeCalledWith('auth.invalidConfirmPwd', 'warning');
|
|
||||||
expect($('#confirm-pwd').is(':focus')).toBe(true);
|
|
||||||
|
|
||||||
$('#confirm-pwd').val('password');
|
|
||||||
$('button').click();
|
|
||||||
expect(trans).toBeCalledWith('auth.emptyNickname');
|
|
||||||
expect($('#nickname').is(':focus')).toBe(true);
|
|
||||||
|
|
||||||
$('#nickname').val('nickname');
|
|
||||||
$('button').click();
|
|
||||||
expect(trans).toBeCalledWith('auth.emptyCaptcha');
|
|
||||||
expect($('#captcha').is(':focus')).toBe(true);
|
|
||||||
|
|
||||||
$('#captcha').val('captcha');
|
|
||||||
await $('button').click();
|
|
||||||
expect(fetch).toBeCalledWith(expect.objectContaining({
|
|
||||||
type: 'POST',
|
|
||||||
url: 'auth/register',
|
|
||||||
dataType: 'json',
|
|
||||||
data: {
|
|
||||||
email: 'a@b.c',
|
|
||||||
nickname: 'nickname',
|
|
||||||
password: 'password',
|
|
||||||
captcha: 'captcha'
|
|
||||||
}
|
|
||||||
}));
|
|
||||||
expect($('button').html()).toBe(
|
|
||||||
'<i class="fa fa-spinner fa-spin"></i> auth.registering'
|
|
||||||
);
|
|
||||||
expect($('button').prop('disabled')).toBe(true);
|
|
||||||
expect(swal).toBeCalledWith({ type: 'success', html: 'success' });
|
|
||||||
|
|
||||||
await $('button').click();
|
|
||||||
expect(refreshCaptcha).toBeCalled();
|
|
||||||
expect(showMsg).toBeCalledWith('warning', 'warning');
|
|
||||||
expect($('button').html()).toBe('auth.register');
|
|
||||||
|
|
||||||
await $('button').click();
|
|
||||||
expect(showAjaxError).toBeCalled();
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
describe('tests for "forgot" module', () => {
|
|
||||||
const modulePath = '../auth/forgot';
|
|
||||||
|
|
||||||
it('forgot password', async () => {
|
|
||||||
const fetch = jest.fn()
|
|
||||||
.mockImplementationOnce(option => {
|
|
||||||
option.beforeSend();
|
|
||||||
return Promise.resolve({ errno: 0, msg: 'success' });
|
|
||||||
})
|
|
||||||
.mockImplementationOnce(() => Promise.resolve(
|
|
||||||
{ errno: 1, msg: 'warning' }
|
|
||||||
))
|
|
||||||
.mockImplementationOnce(() => Promise.reject(new Error));
|
|
||||||
const trans = jest.fn(key => key);
|
|
||||||
const url = jest.fn(path => path);
|
|
||||||
const swal = jest.fn();
|
|
||||||
const showMsg = jest.fn();
|
|
||||||
const refreshCaptcha = jest.fn();
|
|
||||||
const showAjaxError = jest.fn();
|
|
||||||
window.fetch = fetch;
|
|
||||||
window.trans = trans;
|
|
||||||
window.url = url;
|
|
||||||
window.swal = swal;
|
|
||||||
window.showMsg = showMsg;
|
|
||||||
window.refreshCaptcha = refreshCaptcha;
|
|
||||||
window.showAjaxError = showAjaxError;
|
|
||||||
|
|
||||||
document.body.innerHTML = `
|
|
||||||
<input id="email" />
|
|
||||||
<div id="captcha-form"></div>
|
|
||||||
<input id="captcha" />
|
|
||||||
<button id="forgot-button"></button>
|
|
||||||
`;
|
|
||||||
|
|
||||||
require(modulePath);
|
|
||||||
|
|
||||||
$('button').click();
|
|
||||||
expect(trans).toBeCalledWith('auth.emptyEmail');
|
|
||||||
expect($('#email').is(':focus')).toBe(true);
|
|
||||||
|
|
||||||
$('#email').val('email');
|
|
||||||
$('button').click();
|
|
||||||
expect(trans).toBeCalledWith('auth.invalidEmail');
|
|
||||||
expect(showMsg).toBeCalledWith('auth.invalidEmail', 'warning');
|
|
||||||
expect($('#email').is(':focus')).toBe(true);
|
|
||||||
|
|
||||||
$('#email').val('a@b.c');
|
|
||||||
$('button').click();
|
|
||||||
expect(trans).toBeCalledWith('auth.emptyCaptcha');
|
|
||||||
expect($('#captcha').is(':focus')).toBe(true);
|
|
||||||
|
|
||||||
$('#captcha').val('captcha');
|
|
||||||
await $('button').click();
|
|
||||||
expect(fetch).toBeCalledWith(expect.objectContaining({
|
|
||||||
type: 'POST',
|
|
||||||
url: 'auth/forgot',
|
|
||||||
dataType: 'json',
|
|
||||||
data: {
|
|
||||||
email: 'a@b.c',
|
|
||||||
captcha: 'captcha'
|
|
||||||
}
|
|
||||||
}));
|
|
||||||
expect($('button').html()).toBe('auth.send');
|
|
||||||
expect($('button').prop('disabled')).toBe(true);
|
|
||||||
expect(showMsg).toBeCalledWith('success', 'success');
|
|
||||||
|
|
||||||
await $('button').click();
|
|
||||||
expect(refreshCaptcha).toBeCalled();
|
|
||||||
expect(showMsg).toBeCalledWith('warning', 'warning');
|
|
||||||
expect($('button').html()).toBe('auth.send');
|
|
||||||
|
|
||||||
await $('button').click();
|
|
||||||
expect($('button').html()).toBe('auth.send');
|
|
||||||
expect($('button').prop('disabled')).toBe(false);
|
|
||||||
expect(showAjaxError).toBeCalled();
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
describe('tests for "reset" module', () => {
|
|
||||||
const modulePath = '../auth/reset';
|
|
||||||
|
|
||||||
it('reset password', async () => {
|
|
||||||
const fetch = jest.fn()
|
|
||||||
.mockImplementationOnce(option => {
|
|
||||||
option.beforeSend();
|
|
||||||
return Promise.resolve({ errno: 0, msg: 'success' });
|
|
||||||
})
|
|
||||||
.mockImplementationOnce(() => Promise.resolve(
|
|
||||||
{ errno: 1, msg: 'warning' }
|
|
||||||
))
|
|
||||||
.mockImplementationOnce(() => Promise.reject(new Error));
|
|
||||||
const trans = jest.fn(key => key);
|
|
||||||
const url = jest.fn(path => path);
|
|
||||||
const swal = jest.fn().mockReturnValue(Promise.resolve());
|
|
||||||
const showMsg = jest.fn();
|
|
||||||
const getQueryString = jest.fn()
|
|
||||||
.mockReturnValueOnce('expires')
|
|
||||||
.mockReturnValueOnce('signature');
|
|
||||||
const showAjaxError = jest.fn();
|
|
||||||
window.fetch = fetch;
|
|
||||||
window.trans = trans;
|
|
||||||
window.url = url;
|
|
||||||
window.swal = swal;
|
|
||||||
window.showMsg = showMsg;
|
|
||||||
window.refreshCaptcha = jest.fn();
|
|
||||||
window.getQueryString = getQueryString;
|
|
||||||
window.showAjaxError = showAjaxError;
|
|
||||||
|
|
||||||
document.body.innerHTML = `
|
|
||||||
<input id="uid" value="1" />
|
|
||||||
<input id="password" />
|
|
||||||
<input id="confirm-pwd" />
|
|
||||||
<button id="reset-button"></button>
|
|
||||||
`;
|
|
||||||
|
|
||||||
require(modulePath);
|
|
||||||
|
|
||||||
$('button').click();
|
|
||||||
expect(trans).toBeCalledWith('auth.emptyPassword');
|
|
||||||
expect($('#password').is(':focus')).toBe(true);
|
|
||||||
|
|
||||||
$('#password').val('secret');
|
|
||||||
$('button').click();
|
|
||||||
expect(trans).toBeCalledWith('auth.invalidPassword');
|
|
||||||
expect(showMsg).toBeCalledWith('auth.invalidPassword', 'warning');
|
|
||||||
expect($('#password').is(':focus')).toBe(true);
|
|
||||||
|
|
||||||
$('#password').val('too_long_password_very_super_long');
|
|
||||||
$('#password').blur();
|
|
||||||
$('button').click();
|
|
||||||
expect(trans).toBeCalledWith('auth.invalidPassword');
|
|
||||||
expect(showMsg).toBeCalledWith('auth.invalidPassword', 'warning');
|
|
||||||
expect($('#password').is(':focus')).toBe(true);
|
|
||||||
|
|
||||||
$('#password').val('password');
|
|
||||||
$('button').click();
|
|
||||||
expect(trans).toBeCalledWith('auth.emptyConfirmPwd');
|
|
||||||
expect($('#confirm-pwd').is(':focus')).toBe(true);
|
|
||||||
|
|
||||||
$('#confirm-pwd').val('not_same');
|
|
||||||
$('button').click();
|
|
||||||
expect(trans).toBeCalledWith('auth.invalidConfirmPwd');
|
|
||||||
expect(showMsg).toBeCalledWith('auth.invalidConfirmPwd', 'warning');
|
|
||||||
expect($('#confirm-pwd').is(':focus')).toBe(true);
|
|
||||||
|
|
||||||
$('#confirm-pwd').val('password');
|
|
||||||
await $('button').click();
|
|
||||||
expect(getQueryString.mock.calls[0][0]).toBe('expires');
|
|
||||||
expect(getQueryString.mock.calls[1][0]).toBe('signature');
|
|
||||||
expect(fetch).toBeCalledWith(expect.objectContaining({
|
|
||||||
type: 'POST',
|
|
||||||
url: 'auth/reset/1?expires=expires&signature=signature',
|
|
||||||
dataType: 'json',
|
|
||||||
data: {
|
|
||||||
password: 'password'
|
|
||||||
}
|
|
||||||
}));
|
|
||||||
expect($('button').html()).toBe(
|
|
||||||
'<i class="fa fa-spinner fa-spin"></i> auth.resetting'
|
|
||||||
);
|
|
||||||
expect($('button').prop('disabled')).toBe(true);
|
|
||||||
expect(swal).toBeCalledWith({ type: 'success', html: 'success' });
|
|
||||||
|
|
||||||
await $('button').click();
|
|
||||||
expect(showMsg).toBeCalledWith('warning', 'warning');
|
|
||||||
expect($('button').html()).toBe('auth.reset');
|
|
||||||
|
|
||||||
await $('button').click();
|
|
||||||
expect($('button').html()).toBe('auth.reset');
|
|
||||||
expect(showAjaxError).toBeCalled();
|
|
||||||
});
|
|
||||||
});
|
|
||||||
File diff suppressed because it is too large
Load Diff
|
|
@ -1,15 +0,0 @@
|
||||||
'use strict';
|
|
||||||
|
|
||||||
function refreshCaptcha() {
|
|
||||||
const timestamp = new Date().getTime();
|
|
||||||
// Refresh Captcha Image
|
|
||||||
$('.captcha').attr('src', url(`auth/captcha?${timestamp}`));
|
|
||||||
// Clear input
|
|
||||||
$('#captcha').val('');
|
|
||||||
}
|
|
||||||
|
|
||||||
$('.captcha').click(refreshCaptcha);
|
|
||||||
|
|
||||||
if (process.env.NODE_ENV === 'test') {
|
|
||||||
module.exports = refreshCaptcha;
|
|
||||||
}
|
|
||||||
|
|
@ -1,51 +0,0 @@
|
||||||
/* global refreshCaptcha */
|
|
||||||
|
|
||||||
'use strict';
|
|
||||||
|
|
||||||
$('#forgot-button').click(e => {
|
|
||||||
e.preventDefault();
|
|
||||||
|
|
||||||
const data = {
|
|
||||||
email: $('#email').val(),
|
|
||||||
captcha: $('#captcha').val()
|
|
||||||
};
|
|
||||||
|
|
||||||
(function validate({ email, captcha }, callback) {
|
|
||||||
if (email === '') {
|
|
||||||
showMsg(trans('auth.emptyEmail'));
|
|
||||||
$('#email').focus();
|
|
||||||
} else if (!/\S+@\S+\.\S+/.test(email)) {
|
|
||||||
showMsg(trans('auth.invalidEmail'), 'warning');
|
|
||||||
} else if (captcha === '') {
|
|
||||||
showMsg(trans('auth.emptyCaptcha'));
|
|
||||||
$('#captcha').focus();
|
|
||||||
} else {
|
|
||||||
callback();
|
|
||||||
}
|
|
||||||
})(data, async () => {
|
|
||||||
try {
|
|
||||||
const { errno, msg } = await fetch({
|
|
||||||
type: 'POST',
|
|
||||||
url: url('auth/forgot'),
|
|
||||||
dataType: 'json',
|
|
||||||
data: data,
|
|
||||||
beforeSend: () => {
|
|
||||||
$('#forgot-button').html(
|
|
||||||
'<i class="fa fa-spinner fa-spin"></i> ' + trans('auth.sending')
|
|
||||||
).prop('disabled', 'disabled');
|
|
||||||
}
|
|
||||||
});
|
|
||||||
if (errno === 0) {
|
|
||||||
showMsg(msg, 'success');
|
|
||||||
$('#forgot-button').html(trans('auth.send')).prop('disabled', 'disabled');
|
|
||||||
} else {
|
|
||||||
showMsg(msg, 'warning');
|
|
||||||
refreshCaptcha();
|
|
||||||
$('#forgot-button').html(trans('auth.send')).prop('disabled', '');
|
|
||||||
}
|
|
||||||
} catch (error) {
|
|
||||||
showAjaxError(error);
|
|
||||||
$('#forgot-button').html(trans('auth.send')).prop('disabled', '');
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
@ -1,69 +0,0 @@
|
||||||
/* global refreshCaptcha */
|
|
||||||
|
|
||||||
'use strict';
|
|
||||||
|
|
||||||
$('#login-button').click(async e => {
|
|
||||||
e.preventDefault();
|
|
||||||
|
|
||||||
const data = {
|
|
||||||
identification: $('#identification').val(),
|
|
||||||
password: $('#password').val(),
|
|
||||||
keep: $('#keep').prop('checked') ? true : false
|
|
||||||
};
|
|
||||||
|
|
||||||
if (data.identification === '') {
|
|
||||||
showMsg(trans('auth.emptyIdentification'));
|
|
||||||
$('#identification').focus();
|
|
||||||
} else if (data.password === '') {
|
|
||||||
showMsg(trans('auth.emptyPassword'));
|
|
||||||
$('#password').focus();
|
|
||||||
} else {
|
|
||||||
// Verify it when captcha form is shown
|
|
||||||
if ($('#captcha-form').css('display') === 'block') {
|
|
||||||
data.captcha = $('#captcha').val();
|
|
||||||
|
|
||||||
if (data.captcha === '') {
|
|
||||||
showMsg(trans('auth.emptyCaptcha'));
|
|
||||||
$('#captcha').focus();
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
|
||||||
const { errno, msg, login_fails } = await fetch({
|
|
||||||
type: 'POST',
|
|
||||||
url: url('auth/login'),
|
|
||||||
dataType: 'json',
|
|
||||||
data: data,
|
|
||||||
beforeSend: () => {
|
|
||||||
$('#login-button').html(
|
|
||||||
'<i class="fa fa-spinner fa-spin"></i> ' + trans('auth.loggingIn')
|
|
||||||
).prop('disabled', 'disabled');
|
|
||||||
}
|
|
||||||
});
|
|
||||||
if (errno === 0) {
|
|
||||||
swal({ type: 'success', html: msg });
|
|
||||||
|
|
||||||
setTimeout(() => {
|
|
||||||
window.location = url(blessing.redirect_to || 'user');
|
|
||||||
}, 1000);
|
|
||||||
} else {
|
|
||||||
if (login_fails > 3) {
|
|
||||||
if ($('#captcha-form').css('display') === 'none') {
|
|
||||||
swal({ type: 'error', html: trans('auth.tooManyFails') });
|
|
||||||
|
|
||||||
$('#captcha-form').show();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
refreshCaptcha();
|
|
||||||
|
|
||||||
showMsg(msg, 'warning');
|
|
||||||
$('#login-button').html(trans('auth.login')).prop('disabled', '');
|
|
||||||
}
|
|
||||||
} catch (error) {
|
|
||||||
showAjaxError(error);
|
|
||||||
$('#login-button').html(trans('auth.login')).prop('disabled', '');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
@ -1,74 +0,0 @@
|
||||||
/* global refreshCaptcha */
|
|
||||||
|
|
||||||
'use strict';
|
|
||||||
|
|
||||||
$('#register-button').click(e => {
|
|
||||||
e.preventDefault();
|
|
||||||
|
|
||||||
const data = {
|
|
||||||
email: $('#email').val(),
|
|
||||||
password: $('#password').val(),
|
|
||||||
nickname: $('#nickname').val(),
|
|
||||||
captcha: $('#captcha').val(),
|
|
||||||
};
|
|
||||||
|
|
||||||
(function validate({ email, password, nickname, captcha }, callback) {
|
|
||||||
// Massive form validation
|
|
||||||
if (email === '') {
|
|
||||||
showMsg(trans('auth.emptyEmail'));
|
|
||||||
$('#email').focus();
|
|
||||||
} else if (!/\S+@\S+\.\S+/.test(email)) {
|
|
||||||
showMsg(trans('auth.invalidEmail'), 'warning');
|
|
||||||
} else if (password === '') {
|
|
||||||
showMsg(trans('auth.emptyPassword'));
|
|
||||||
$('#password').focus();
|
|
||||||
} else if (password.length < 8 || password.length > 32) {
|
|
||||||
showMsg(trans('auth.invalidPassword'), 'warning');
|
|
||||||
$('#password').focus();
|
|
||||||
} else if ($('#confirm-pwd').val() === '') {
|
|
||||||
showMsg(trans('auth.emptyConfirmPwd'));
|
|
||||||
$('#confirm-pwd').focus();
|
|
||||||
} else if (password !== $('#confirm-pwd').val()) {
|
|
||||||
showMsg(trans('auth.invalidConfirmPwd'), 'warning');
|
|
||||||
$('#confirm-pwd').focus();
|
|
||||||
} else if (nickname === '') {
|
|
||||||
showMsg(trans('auth.emptyNickname'));
|
|
||||||
$('#nickname').focus();
|
|
||||||
} else if (captcha === '') {
|
|
||||||
showMsg(trans('auth.emptyCaptcha'));
|
|
||||||
$('#captcha').focus();
|
|
||||||
} else {
|
|
||||||
callback();
|
|
||||||
}
|
|
||||||
|
|
||||||
return;
|
|
||||||
})(data, async () => {
|
|
||||||
try {
|
|
||||||
const { errno, msg } = await fetch({
|
|
||||||
type: 'POST',
|
|
||||||
url: url('auth/register'),
|
|
||||||
dataType: 'json',
|
|
||||||
data: data,
|
|
||||||
beforeSend: function () {
|
|
||||||
$('#register-button').html(
|
|
||||||
'<i class="fa fa-spinner fa-spin"></i> ' + trans('auth.registering')
|
|
||||||
).prop('disabled', 'disabled');
|
|
||||||
}
|
|
||||||
});
|
|
||||||
if (errno === 0) {
|
|
||||||
swal({ type: 'success', html: msg });
|
|
||||||
|
|
||||||
setTimeout(() => {
|
|
||||||
window.location = url('user');
|
|
||||||
}, 1000);
|
|
||||||
} else {
|
|
||||||
showMsg(msg, 'warning');
|
|
||||||
refreshCaptcha();
|
|
||||||
$('#register-button').html(trans('auth.register')).prop('disabled', '');
|
|
||||||
}
|
|
||||||
} catch (error) {
|
|
||||||
showAjaxError(error);
|
|
||||||
$('#register-button').html(trans('auth.register')).prop('disabled', '');
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
@ -1,53 +0,0 @@
|
||||||
'use strict';
|
|
||||||
|
|
||||||
$('#reset-button').click(e => {
|
|
||||||
e.preventDefault();
|
|
||||||
|
|
||||||
const data = {
|
|
||||||
password: $('#password').val(),
|
|
||||||
};
|
|
||||||
|
|
||||||
(function validate({ password }, callback) {
|
|
||||||
if (password === '') {
|
|
||||||
showMsg(trans('auth.emptyPassword'));
|
|
||||||
$('#password').focus();
|
|
||||||
} else if (password.length < 8 || password.length > 16) {
|
|
||||||
showMsg(trans('auth.invalidPassword'), 'warning');
|
|
||||||
$('#password').focus();
|
|
||||||
} else if ($('#confirm-pwd').val() === '') {
|
|
||||||
showMsg(trans('auth.emptyConfirmPwd'));
|
|
||||||
$('#confirm-pwd').focus();
|
|
||||||
} else if (password !== $('#confirm-pwd').val()) {
|
|
||||||
showMsg(trans('auth.invalidConfirmPwd'), 'warning');
|
|
||||||
$('#confirm-pwd').focus();
|
|
||||||
} else {
|
|
||||||
callback();
|
|
||||||
}
|
|
||||||
})(data, async () => {
|
|
||||||
try {
|
|
||||||
const { errno, msg } = await fetch({
|
|
||||||
type: 'POST',
|
|
||||||
url: `${url('auth/reset')}/${$('#uid').val()}?expires=${getQueryString('expires')}&signature=${getQueryString('signature')}`,
|
|
||||||
dataType: 'json',
|
|
||||||
data,
|
|
||||||
beforeSend: () => {
|
|
||||||
$('#reset-button').html(
|
|
||||||
'<i class="fa fa-spinner fa-spin"></i> ' + trans('auth.resetting')
|
|
||||||
).prop('disabled', 'disabled');
|
|
||||||
}
|
|
||||||
});
|
|
||||||
if (errno === 0) {
|
|
||||||
swal({
|
|
||||||
type: 'success',
|
|
||||||
html: msg
|
|
||||||
}).then(() => (window.location = url('auth/login')));
|
|
||||||
} else {
|
|
||||||
showMsg(msg, 'warning');
|
|
||||||
$('#reset-button').html(trans('auth.reset')).prop('disabled', '');
|
|
||||||
}
|
|
||||||
} catch (error) {
|
|
||||||
showAjaxError(error);
|
|
||||||
$('#reset-button').html(trans('auth.reset')).prop('disabled', '');
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
Loading…
Reference in New Issue
Block a user