PageSourceSearch

https://gamestorming.com/wp-content/mu-plugins/vendor/wpsec/wp-2fa…/src/web/js/login/loginHeader.js?ver=7.1.2

js gamestorming.com collected 2026-09-24 08:34:22 UTC 13,319 bytes, 314 lines download raw bytes

1jQuery( document ).ready(
2	function($){
3
4		const WPSEC_2FA_MAIL_ACTIVE        = 'wpsec_2fa_mail';
5		const WPSEC_2FA_APP_ACTIVE         = 'wpsec_2fa_enabled_app';
6		const WPSEC_2FA_YUBIKEY_ACTIVE     = 'wpsec_2fa_enabled_yubikey';
7		const WPSEC_2FA_RESEND_MAIL_ACTION = 'wpsec_2fa_send_email';
8		const WPSEC_2FA_VERIFY_LOGIN_CODE  = 'wpsec_2fa_verify_login_mail_code';
9
10		let wpsec_2fa_login_app_check_conf         = $( "#wpsec_2fa_app_login" );
11		let wpsec_2fa_login_app_check_header       = $( "#wpsec_2fa_app_login_header" );
12		let wpsec_2fa_mail_login                   = $( "#wpsec_2fa_email_login" );
13		let wpsec_2fa_mail_login_header            = $( "#wpsec_2fa_email_login_header" );
14		let wpsec_2fa_yubikey_login                = $( "#wpsec_2fa_yubikey_login" );
15		let wpsec_2fa_yubikey_login_header         = $( "#wpsec_2fa_yubikey_login_header" );
16		let wpsec_2fa_login_mail_check_first_conf  = $( "#wpsec_2fa_login_mail_check_configuration" );
17		let wpsec_2fa_login_mail_check_second_conf = $( "#wpsec_2fa_login_mail_check_second_conf" );
18		let wpsec_2fa_login_app_auth_icon          = $( "#wpsec_2fa_login_app_auth_icon" );
19		let wpsec_2fa_login_mail_auth_icon         = $( "#wpsec_2fa_login_mail_auth_icon" );
20		let wpsec_2fa_login_yubikey_auth_icon      = $( "#wpsec_2fa_login_yubikey_auth_icon" );
21		let wpsec_2fa_login_mail_next_button       = $( "#wpsec_2fa_mail_login_check_next_button" );
22		let wpsec_2fa_login_title                  = $( "#wpsec_2fa_login_check_title" );
23		let wpsec_2fa_login_title_bottom           = $( "#wpsec_2fa_login_check_title_bottom" );
24		let wpsec_2fa_login_mail_title             = $( "#wpsec_2fa_login_check_mail_title" );
25		let wpsec_2fa_login_mail_back_button       = $( "#wpsec_2fa_mail_login_check_back_button" );
26		let wpsec_2fa_login_icons                  = $( "#wpsec_2fa_login_icons" );
27		let wpsec_2fa_login_nonce				   = $( "#wpsec_2fa_auth_nonce" );
28
29		let wpsec_2fa_login_resend_mail           = $( "#wpsec_2fa_login_resend_mail" );
30		let wpsec_2fa_login_provider              = $( "#wpsec_2fa_login_provider" );
31		let wpsec_2fa_login_mail_submit_button    = $( "#wp_wpsec_2fa_login_mail_submit" );
32		let wpsec_2fa_login_app_submit_button     = $( "#wp_wpsec_2fa_login_app_submit" );
33		let wpsec_2fa_login_yubikey_submit_button = $( "#wp_wpsec_2fa_login_yubikey_submit" );
34		let wpsec_2fa_login_code_error            = $( "#wpsec_2fa_2sv_login_code_error_message" );
35		let wpsec_2fa_login_expired_code_error    = $( "#wpsec_2fa_2sv_login_code_expired_message" );
36		let wpsec_2fa_login_app_code_check        = $( "#wpsec_2fa_login_app_code_check" );
37		let wpsec_2fa_login_mail_code_check       = $( "#wpsec_2fa_login_mail_code_check" );
38		let wpsec_2fa_login_yubikey_code_check    = $( "#wpsec_2fa_login_yubikey_code_check" );
39
40		instantiate_slider_buttons( [ wpsec_2fa_login_app_check_conf, wpsec_2fa_yubikey_login ] );
41
42		wpsec_2fa_login_app_auth_icon.on(
43			'click',
44			function() {
45				let app_active = wpsec_2fa_login_provider.val();
46				if (  app_active !== WPSEC_2FA_APP_ACTIVE ) {
47					deactivate_login_header( wpsec_2fa_login_mail_auth_icon, wpsec_2fa_mail_login );
48					deactivate_login_header( wpsec_2fa_login_yubikey_auth_icon, wpsec_2fa_yubikey_login );
49					deactivate_login_header( wpsec_2fa_login_yubikey_auth_icon, wpsec_2fa_yubikey_login_header );
50					deactivate_login_header( wpsec_2fa_login_yubikey_auth_icon, wpsec_2fa_mail_login_header );
51					deactivate_mail_configuration( wpsec_2fa_login_mail_check_second_conf );
52					activate_login_header( wpsec_2fa_login_app_auth_icon, wpsec_2fa_login_app_check_conf, wpsec_2fa_login_app_check_header );
53					wpsec_2fa_login_provider.val( WPSEC_2FA_APP_ACTIVE );
54				}
55			}
56		)
57
58		wpsec_2fa_login_mail_auth_icon.on(
59			'click',
60			function() {
61				let app_active = wpsec_2fa_login_provider.val();
62				if ( app_active !== WPSEC_2FA_MAIL_ACTIVE) {
63					deactivate_login_header( wpsec_2fa_login_app_auth_icon, wpsec_2fa_login_app_check_conf );
64					deactivate_login_header( wpsec_2fa_login_yubikey_auth_icon, wpsec_2fa_yubikey_login );
65					deactivate_login_header( wpsec_2fa_login_yubikey_auth_icon, wpsec_2fa_yubikey_login_header );
66					deactivate_login_header( wpsec_2fa_login_yubikey_auth_icon, wpsec_2fa_login_app_check_header );
67					activate_login_header( wpsec_2fa_login_mail_auth_icon, wpsec_2fa_mail_login,wpsec_2fa_mail_login_header );
68					wpsec_2fa_login_provider.val( WPSEC_2FA_MAIL_ACTIVE );
69				}
70			}
71		)
72
73		wpsec_2fa_login_yubikey_auth_icon.on(
74			'click',
75			function() {
76				let app_active = wpsec_2fa_login_provider.val();
77				if ( app_active !== WPSEC_2FA_YUBIKEY_ACTIVE) {
78					deactivate_login_header( wpsec_2fa_login_app_auth_icon, wpsec_2fa_login_app_check_conf );
79					deactivate_login_header( wpsec_2fa_login_mail_auth_icon, wpsec_2fa_mail_login );
80					deactivate_login_header( wpsec_2fa_login_yubikey_auth_icon, wpsec_2fa_login_app_check_header );
81					deactivate_login_header( wpsec_2fa_login_yubikey_auth_icon, wpsec_2fa_mail_login_header );
82					deactivate_mail_configuration( wpsec_2fa_login_mail_check_second_conf );
83					activate_login_header( wpsec_2fa_login_yubikey_auth_icon, wpsec_2fa_yubikey_login, wpsec_2fa_yubikey_login_header );
84					wpsec_2fa_login_provider.val( WPSEC_2FA_YUBIKEY_ACTIVE );
85				}
86			}
87		)
88
89		wpsec_2fa_login_mail_next_button.on(
90			'click',
91			function() {
92				deactivate_mail_configuration( wpsec_2fa_login_mail_check_first_conf );
93				activate_mail_configuration( wpsec_2fa_login_mail_check_second_conf );
94				! wpsec_2fa_login_title.hasClass( 'wpsec-2fa-hidden' ) ? wpsec_2fa_login_title.addClass( 'wpsec-2fa-hidden' ) : '';
95				! wpsec_2fa_login_title_bottom.hasClass( 'wpsec-2fa-hidden' ) ? wpsec_2fa_login_title_bottom.addClass( 'wpsec-2fa-hidden' ) : '';
96				wpsec_2fa_login_mail_title.hasClass( 'wpsec-2fa-hidden' ) ? wpsec_2fa_login_mail_title.removeClass( 'wpsec-2fa-hidden' ) : '';
97				! wpsec_2fa_login_icons.hasClass( 'wpsec-2fa-hidden' ) ? wpsec_2fa_login_icons.addClass( 'wpsec-2fa-hidden' ) : '';
98				let user_id = $( "#wpsec_2fa_login_user_id" ).val();
99				let nonce   = wpsec_2fa_login_nonce.val();
100				ajax_call_with_response( WPSEC_2FA_RESEND_MAIL_ACTION, user_id, nonce );
101			}
102		)
103
104		wpsec_2fa_login_mail_back_button.on(
105			'click',
106			function() {
107				deactivate_mail_configuration( wpsec_2fa_login_mail_check_second_conf );
108				activate_mail_configuration( wpsec_2fa_login_mail_check_first_conf );
109				wpsec_2fa_login_title.hasClass( 'wpsec-2fa-hidden' ) ? wpsec_2fa_login_title.removeClass( 'wpsec-2fa-hidden' ) : '';
110				wpsec_2fa_login_title_bottom.hasClass( 'wpsec-2fa-hidden' ) ? wpsec_2fa_login_title_bottom.addClass( 'wpsec-2fa-hidden' ) : '';
111				! wpsec_2fa_login_mail_title.hasClass( 'wpsec-2fa-hidden' ) ? wpsec_2fa_login_mail_title.addClass( 'wpsec-2fa-hidden' ) : '';
112				wpsec_2fa_login_icons.hasClass( 'wpsec-2fa-hidden' ) ? wpsec_2fa_login_icons.removeClass( 'wpsec-2fa-hidden' ) : '';
113			}
114		)
115
116		wpsec_2fa_login_resend_mail.on(
117			'click',
118			function() {
119				let user_id = $( "#wpsec_2fa_login_user_id" ).val();
120				let nonce   = wpsec_2fa_login_nonce.val();
121				ajax_call_with_response( WPSEC_2FA_RESEND_MAIL_ACTION, user_id, nonce );
122			}
123		)
124
125		wpsec_2fa_login_mail_submit_button.on(
126			'click',
127			function() {
128				! wpsec_2fa_login_code_error.hasClass( 'wpsec_2fa_hidden' ) ? wpsec_2fa_login_code_error.addClass( 'wpsec_2fa_hidden' ) : '';
129				! wpsec_2fa_login_expired_code_error.hasClass( 'wpsec_2fa_hidden' ) ? wpsec_2fa_login_expired_code_error.addClass( 'wpsec_2fa_hidden' ) : '';
130				call_2fa_code_check( WPSEC_2FA_MAIL_ACTIVE );
131			}
132		)
133
134		wpsec_2fa_login_app_submit_button.on(
135			'click',
136			function() {
137				call_2fa_code_check( WPSEC_2FA_APP_ACTIVE );
138			}
139		)
140
141		wpsec_2fa_login_yubikey_submit_button.on(
142			'click',
143			function() {
144				call_2fa_code_check( WPSEC_2FA_YUBIKEY_ACTIVE );
145			}
146		)
147
148		wpsec_2fa_login_app_code_check.on(
149			'keypress',
150			function (e) {
151				if (e.which === 13) {
152					e.preventDefault();
153					call_2fa_code_check( WPSEC_2FA_APP_ACTIVE );
154				}
155			}
156		)
157
158		wpsec_2fa_login_mail_code_check.on(
159			'keypress',
160			function (e) {
161				if (e.which === 13) {
162					e.preventDefault();
163					! wpsec_2fa_login_code_error.hasClass( 'wpsec_2fa_hidden' ) ? wpsec_2fa_login_code_error.addClass( 'wpsec_2fa_hidden' ) : '';
164					! wpsec_2fa_login_expired_code_error.hasClass( 'wpsec_2fa_hidden' ) ? wpsec_2fa_login_expired_code_error.addClass( 'wpsec_2fa_hidden' ) : '';
165					call_2fa_code_check( WPSEC_2FA_MAIL_ACTIVE );
166				}
167			}
168		)
169
170		wpsec_2fa_login_yubikey_code_check.on(
171			'keypress',
172			function (e) {
173				if (e.which === 13) {
174					e.preventDefault();
175					call_2fa_code_check( WPSEC_2FA_YUBIKEY_ACTIVE );
176				}
177			}
178		)
179
180		/**
181		 * Activates login auth header
182		 */
183		function activate_login_header(wrapper, header_config, login_config) {
184			let svg = wrapper.children()[0];
185			svg.setAttribute( 'fill', '#2271B2' );
186			svg.setAttribute( 'opacity', '1' );
187			header_config.hasClass( 'wpsec-2fa-hidden' ) ? header_config.removeClass( 'wpsec-2fa-hidden' ) : '';
188
189			if (login_config != null || login_config !== undefined) {
190				login_config.hasClass( 'wpsec-2fa-hidden' ) ? login_config.removeClass( 'wpsec-2fa-hidden' ) : '';
191			}
192		}
193
194		/**
195		 * Deactivates login auth header
196		 */
197		function deactivate_login_header(wrapper, header_config) {
198			let svg = wrapper.children()[0];
199			svg.setAttribute( 'fill', 'black' );
200			svg.setAttribute( 'opacity', '0.5' );
201			! header_config.hasClass( 'wpsec-2fa-hidden' ) ? header_config.addClass( 'wpsec-2fa-hidden' ) : '';
202		}
203
204		/**
205		 * Activates given mail configuration
206		 */
207		function activate_mail_configuration( configuration ) {
208			configuration.hasClass( 'wpsec-2fa-hidden' ) ? configuration.removeClass( 'wpsec-2fa-hidden' ) : '';
209		}
210
211		/**
212		 * Deactivates given mail configuration
213		 */
214		function deactivate_mail_configuration( configuration ) {
215			! configuration.hasClass( 'wpsec-2fa-hidden' ) ? configuration.addClass( 'wpsec-2fa-hidden' ) : '';
216		}
217
218		/**
219		 * Instantiate button functionality for screen slider
220		 * @param parents Array of parent containers
221		 */
222		function instantiate_slider_buttons(parents){
223			parents.forEach(
224				function (parent) {
225					parent.find( "button.wpsec_2fa_login_button_next" ).each(
226						function () {
227							$( this ).on(
228								'click',
229								function () {
230									slider_buttons( 'next', parent )
231								}
232							)
233						}
234					)
235					parent.find( "button.wpsec_2fa_login_button_back" ).each(
236						function () {
237							$( this ).on(
238								'click',
239								function () {
240									slider_buttons( 'previous', parent );
241								}
242							)
243						}
244					)
245				}
246			)
247		}
248
249		/**
250		 * Screen changing functionality for transitioning between screens with buttons
251		 * @param direction Direction to scroll to, 'next' for the next slide, 'previous' for the previous slide
252		 * @param parent Parent container
253		 */
254		function slider_buttons( direction = 'next', parent ) {
255			console.log( parent );
256			let currentSlide               = parent.find( "#wpsec_2fa_current_slide" );
257			let wpsec_2fa_login_app_slides = parent.find( "div.ui-dialog-content" );
258			let currentSlideNumber         = Number( currentSlide.val() );
259
260			console.log( currentSlide, wpsec_2fa_login_app_slides );
261			hideAllDialogs( wpsec_2fa_login_app_slides );
262			if ( direction === 'next' ) {
263				currentSlide.val( ! (currentSlideNumber + 1 > wpsec_2fa_login_app_slides.length - 1) ? currentSlideNumber += 1 : currentSlideNumber );
264			}
265
266			if ( direction === 'previous' ) {
267				currentSlide.val( ! (currentSlideNumber - 1 < 0) ? currentSlideNumber -= 1 : currentSlideNumber );
268			}
269
270			if (currentSlideNumber > 0) {
271				wpsec_2fa_login_title_bottom.addClass( 'wpsec-2fa-hidden' )
272			} else {
273				wpsec_2fa_login_title_bottom.removeClass( 'wpsec-2fa-hidden' )
274			}
275
276			$( wpsec_2fa_login_app_slides[currentSlideNumber] ).removeClass( 'wpsec-2fa-hidden' );
277			wpsec_2fa_login_icons.hasClass( 'wpsec-2fa-hidden' ) && currentSlideNumber === 0 ? wpsec_2fa_login_icons.removeClass( 'wpsec-2fa-hidden' ) : wpsec_2fa_login_icons.addClass( 'wpsec-2fa-hidden' );
278		}
279
280		/**
281		 * Hides all dialogs that are supplied in array
282		 */
283		function hideAllDialogs( dialogs ) {
284			dialogs.each( function() { deactivate_mail_configuration( $( this ) )} );
285		}
286
287		/**
288		 * Sends ajax call for checking 2fa code
289		 */
290		function call_2fa_code_check( provider ) {
291			let mail_input    = wpsec_2fa_login_mail_code_check.val();
292			let app_input     = wpsec_2fa_login_app_code_check.val();
293			let yubikey_input = wpsec_2fa_login_yubikey_code_check.val();
294
295			if ( (mail_input === "" && provider === WPSEC_2FA_MAIL_ACTIVE) || (app_input === "" && provider === WPSEC_2FA_APP_ACTIVE) || (yubikey_input === "" && provider === WPSEC_2FA_YUBIKEY_ACTIVE) ) {
296				wpsec_2fa_login_code_error.removeClass( 'wpsec_2fa_hidden' );
297				return;
298			}
299
300			let data = {
301				"wpsec_2fa_login_provider" : provider,
302				"wpsec_2fa_login_app_code_check" : app_input,
303				"wpsec_2fa_login_mail_code_check" : mail_input,
304				"wpsec_2fa_login_yubikey_code_check" : yubikey_input,
305			};
306
307			let user_id   = $( "#wpsec_2fa_login_user_id" ).val();
308			let nonce     = wpsec_2fa_login_nonce.val();
309			let json_data = JSON.stringify( data );
310			ajax_call_with_response( WPSEC_2FA_VERIFY_LOGIN_CODE, json_data, nonce, user_id );
311		}
312
313	}
314);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.