PluginProbe
WebTotem Security / 3.0.0
WebTotem Security v3.0.0
3.0.1 3.0.0 trunk 1.0 1.1 1.2 1.3 1.3.1 1.3.2 1.3.3 2.0 2.1 2.1.1 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.1.9 2.2.1 2.2.2 2.2.3 2.2.4 All 109 releases
wt-security / includes / js / login.js

login.js in WebTotem Security 3.0.0, at includes/js/login.js

155 lines 5.1 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 (function($) {
2
3 var wtotem_add_captcha_token = function() {
4 if (typeof grecaptcha === 'object') {
5 grecaptcha.ready(function () {
6 grecaptcha.execute(wtotem_login_vars.recaptcha_site_key, {action: 'login'}).then(function (token) {
7 var tokenField = $('#wtotem-recaptcha-token');
8 if (tokenField.length) {
9 tokenField.val(token);
10 } else {
11 tokenField = $('<input type="hidden" name="wtotem-recaptcha-token" id="wtotem-recaptcha-token" />');
12 tokenField.val(token);
13 $('#loginform').append(tokenField);
14 }
15 });
16 });
17 } else {
18 var tokenField = $('#wtotem-recaptcha-token');
19 if (tokenField.length) {
20 tokenField.val('grecaptcha-missing');
21 } else {
22 tokenField = $('<input type="hidden" name="wtotem-recaptcha-token" id="wtotem-recaptcha-token" />');
23 tokenField.val('grecaptcha-missing');
24 $('#loginform').append(tokenField);
25 }
26 }
27 }
28
29 if (parseInt(wtotem_login_vars.recaptcha_is_enabled)) {
30 wtotem_add_captcha_token();
31 }
32
33 var wtotem_login_ajax = function() {
34
35 var form = $("#loginform");
36 var data = form.serialize();
37 data += '&action=wtotem_ajax&ajax_action=authenticate';
38
39 $.ajax({
40 type: 'POST',
41 url: wtotem_login_vars.ajaxurl,
42 dataType: 'json',
43 data: data,
44 success: function(response) {
45 form.data('wtotemLoggingIn', 0);
46 if (response.hasOwnProperty('error')) {
47 showLoginMessage(response.error, 'error');
48 $('#wtotem-token').val('');
49
50 if (parseInt(wtotem_login_vars.recaptcha_is_enabled)) {
51 wtotem_add_captcha_token();
52 }
53 }
54 else if (response.hasOwnProperty('login')) {
55 if (parseInt(wtotem_login_vars.recaptcha_is_enabled)) {
56 wtotem_add_captcha_token();
57 }
58 if (response.hasOwnProperty('2fa')) {
59
60 if (!$('#wtotem-token').length) {
61
62 form.css('position', 'relative').append(response.content);
63
64 $('#wtotem-token-submit').on( 'click', function(e) {
65 e.preventDefault();
66 e.stopPropagation();
67
68 form.data('wtotemLoggingIn', 1);
69 $('#wp-submit').trigger('click');
70 });
71
72 $('#wtotem-token').focus();
73 }
74
75 } else {
76 form.data('wtotemLoggingIn', 1);
77 $('#wp-submit').trigger('click');
78 }
79
80 }
81 }
82 });
83 };
84
85
86 jQuery(document).ready(function ($) {
87 $("#loginform").on('submit', function(e) {
88
89 var wtotemloggingIn = !!parseInt($(this).data('wtotemLoggingIn'));
90 $(this).data('wtotemLoggingIn', 0);
91
92 if (wtotemloggingIn) { return; }
93
94 if (parseInt(wtotem_login_vars.recaptcha_is_enabled)) {
95 wtotem_add_captcha_token();
96 }
97
98 if (parseInt(wtotem_login_vars.two_factor_is_enabled)){
99 e.preventDefault();
100 e.stopPropagation();
101
102 wtotem_login_ajax();
103 }
104
105 });
106 });
107
108 function showLoginMessage(messageHtml, type) {
109 var heading = $('#login > h1');
110 if (heading.length > 0) {
111 var dom = (type === 'error' ? $('<div id="login_error">') : $('<p class="message">'));
112 dom.addClass('wtotem-login-message');
113 dom.html(messageHtml);
114 heading.after(dom);
115 dom.get(0).scrollIntoView();
116 return;
117 }
118
119 var messageModal = $('<div>')
120 .attr('id', 'wtotem-login-modal')
121 .css({
122 position: 'fixed',
123 top: 0,
124 right: 0,
125 bottom: 0,
126 left: 0,
127 'background-color': 'rgba(0,0,0,0.5)',
128 'z-index': 99999,
129 display: 'flex',
130 'align-items': 'center',
131 'justify-content': 'center',
132 padding: '16px'
133 })
134 .appendTo($('body'));
135 messageModal.append(
136 $('<div>')
137 .css({
138 'background-color': '#FFF',
139 'border-radius': '4px',
140 padding: '16px',
141 'text-align': 'center'
142 })
143 .append(
144 $('<p>').html(messageHtml)
145 )
146 .append(
147 $('<button>').text('Dismiss')
148 .on('click', function() {
149 messageModal.remove();
150 })
151 )
152 );
153 }
154
155 })(jQuery);