PageSourceSearch

https://memepedia.ru/wp-content/themes/boombox/includes/authentica…/js/default-auth-scripts.min.js?ver=2.1.5

js memepedia.ru collected 2026-10-02 07:41:42 UTC 19,587 bytes, 496 lines download raw bytes

1(function ($) {
2    'use strict';
3
4    var boombox_login_form             = $( 'form#boombox-login' ),
5        boombox_register_form          = $( 'form#boombox-register' ),
6        boombox_forgot_password_form   = $( 'form#boombox_forgot_password' ),
7        boombox_reset_password_form    = $( 'form#boombox_reset_password' ),
8        boombox_login_form_captcha     = null,
9        boombox_register_form_captcha  = null;
10
11    /**
12     * Refresh Captcha Function
13     *
14     * @param selector
15     */
16    var boombox_refresh_captcha = function( selector, type ){
17        selector.find( '.captcha' ).attr( 'src', ajax_auth_object.captcha_file_url + '?' + Math.random() + '&type=' + type).closest( '.captcha-container').removeClass('loading');
18        selector.find( '.bb-captcha-field' ).val( '' );
19    }
20
21	/**
22     * Manually open authentication modal
23	 * @param string type Modal type: Accepts: login, register, forgot-password
24	 */
25	var boombox_open_auth_popup = function( type ){
26        switch( type ) {
27            case 'login':
28                var selector = '.js-authentication[href="#sign-in"]';
29                break;
30	        case 'register':
31		        var selector = '.js-authentication[href="#registration"]';
32		        break;
33	        case 'forgot-password':
34            case 'fp':
35		        var selector = '.js-authentication[href="#forgot-password"]';
36		        break;
37            case 'reset-password':
38            case 'rp':
39	            var selector = '.js-authentication[href="#reset-password"]';
40	            break;
41            default:
42                var selector = false;
43        }
44
45        if( selector && $( selector ).length > 0 ) {
46	        $( selector ).first().trigger( 'click' );
47        }
48    }
49
50	/**
51	 * Check password strength
52	 * @param passField
53	 * @param confirmPassField
54	 * @param strengthNode
55	 * @param blacklistArray
56	 */
57	var boombox_check_pass_strength = function( passField, confirmPassField, strengthNode, blacklistArray ) {
58		var pass = passField.val(),
59			confirmPass = ( confirmPassField && confirmPassField.length ) ? confirmPassField.val() : pass,
60			strength,
61			strengthNodeText,
62			strengthNodeClass = 'bb-pass-strength',
63			passStrengthHtmlTemplate,
64			passStrengthPgBarHtmlTemplate = '<div class="pass-progress-bar"></div>';
65
66		if ( ! pass ) {
67			strengthNode.empty();
68			return;
69		}
70
71		blacklistArray = blacklistArray.concat( wp.passwordStrength.userInputBlacklist() );
72		passStrengthHtmlTemplate = '<span class="pass-msg-title">'+ajax_auth_object.messages.password_strength+':</span>';
73
74		strength = wp.passwordStrength.meter( pass, blacklistArray, confirmPass );
75
76		switch ( strength ) {
77			case -1:
78                strengthNodeText = pwsL10n.unknown;
79				strengthNodeClass += ' bb-weak-pass';
80				break;
81			case 2:
82                strengthNodeText = pwsL10n.bad;
83				strengthNodeClass += ' bb-weak-pass';
84				break;
85			case 3:
86                strengthNodeText = pwsL10n.good;
87				strengthNodeClass += ' bb-good-pass';
88				break;
89			case 4:
90                strengthNodeText = pwsL10n.strong;
91				strengthNodeClass += ' bb-strong-pass';
92				break;
93			case 5:
94                strengthNodeText = ajax_auth_object.messages.password_mismatch;
95				passStrengthHtmlTemplate = '';
96				passStrengthPgBarHtmlTemplate = '';
97				strengthNodeClass += ' bb-mismatch-pass';
98				break;
99			default:
100                strengthNodeText = pwsL10n['short'];
101				strengthNodeClass += ' bb-short-pass';
102		}
103
104        strengthNode.html( '<div class="'+strengthNodeClass+'"><p class="pass-status-msg">'+passStrengthHtmlTemplate+'<span class="pass-msg-value"> '+strengthNodeText+'</span></p>'+passStrengthPgBarHtmlTemplate+'</div>' )
105	}
106
107	/**
108     * Open auth popup
109	 */
110	if( ajax_auth_object.trigger_action ) {
111	    if( '-1' != $.inArray( ajax_auth_object.trigger_action, [ 'login', 'register', 'forgot-password', 'fp', 'reset-password', 'rp' ] ) ) {
112		    $( window ).on( 'load', function() {
113		        boombox_open_auth_popup( ajax_auth_object.trigger_action );
114            } );
115        }
116    }
117
118    $.validator.addMethod("loginRegex", function(value, element) {
119        return this.optional(element) || /^[a-z0-9\-\_]+$/i.test(value);
120    } );
121
122    /**
123     * Authentication Popup
124     */
125var sign = $("#sign-in")
126var signbg = $(".light-modal-bg")
127$(document).on('click', '.js-authentication[href="#sign-in"]', function () {
128sign.addClass("light-modal-active");
129sign.show("fast")
130signbg.show("fast")
131 });
132
133    $('.js-authentication').lightModal({
134        beforeShow: function(){
135            var is_nsfw = $(this).hasClass('entry-nsfw');
136            if ( boombox_login_form.length > 0 ) {
137                if( is_nsfw ){
138                    boombox_login_form.closest( '.authentication').addClass( 'is-nsfw-auth' );
139                }
140                boombox_login_form[0].reset();
141                boombox_login_form.find( '.error' ).removeClass( 'error' );
142                boombox_login_form.find( '.status-msg' ).html( '' );
143                if( ajax_auth_object.enable_login_captcha ) {
144                    if( ajax_auth_object.captcha_type === 'image' ) {
145                        boombox_refresh_captcha(boombox_login_form, boombox_login_form.attr('action'));
146                    } else if( ajax_auth_object.captcha_type === 'google' ) {
147                        var login_captcha_container = boombox_login_form.find( '#boombox-login-captcha' );
148                        if( boombox_login_form_captcha === null ) {
149                            boombox_login_form_captcha = grecaptcha.render( login_captcha_container.attr('id'), {
150                                sitekey : login_captcha_container.data('boombox-sitekey'),
151                                theme   : 'light'
152                            });
153                        } else {
154                            grecaptcha.reset( boombox_login_form_captcha );
155                        }
156                    }
157                }
158            }
159            if ( boombox_register_form.length > 0 ) {
160                if( is_nsfw ){
161                    boombox_login_form.closest( '.authentication').addClass( 'is-nsfw-auth' );
162                }
163                boombox_register_form[0].reset();
164	            boombox_check_pass_strength( $( '[name="signonpassword"]' ), false, $( '#bb-register-pass-strength-result' ), [] );
165                boombox_register_form.find( '.error' ).removeClass( 'error' );
166                boombox_register_form.find( '.status-msg' ).html( '' );
167                if( ajax_auth_object.enable_registration_captcha ) {
168                    if( ajax_auth_object.captcha_type === 'image' ) {
169                        boombox_refresh_captcha(boombox_register_form, boombox_register_form.attr('action'));
170                    } else if( ajax_auth_object.captcha_type === 'google' ) {
171                        var register_captcha_container = boombox_register_form.find( '#boombox-register-captcha' );
172                        if( boombox_register_form_captcha === null ) {
173                            boombox_register_form_captcha = grecaptcha.render( register_captcha_container.attr('id'), {
174                                sitekey : register_captcha_container.data('boombox-sitekey'),
175                                theme   : 'light'
176                            });
177                        } else {
178                            grecaptcha.reset( boombox_register_form_captcha );
179                        }
180                    }
181                }
182            }
183            if ( boombox_forgot_password_form.length > 0 ) {
184                boombox_forgot_password_form[0].reset();
185                boombox_forgot_password_form.find( '.error' ).removeClass( 'error' );
186                boombox_forgot_password_form.find( '.status-msg' ).html( '' );
187            }
188        }
189    });
190
191	/**
192	 * Client side form validation for "login" form
193	 */
194	if ( boombox_login_form.length > 0 ){
195		boombox_login_form.validate( {
196			errorPlacement: function( error, element ) {}
197		} );
198
199	}
200
201    /**
202     * Client side form validation for "registration" form
203     */
204    if ( boombox_register_form.length > 0 ){
205        boombox_register_form.validate( {
206            rules: {
207                signonusername: {
208                    loginRegex: true
209                },
210                signongdpr: {
211	                required: true
212                },
213                password2: {
214                    equalTo: '#signonpassword'
215                }
216            },
217            invalidHandler: function( event, validator ){
218                console.log( $(this) );
219            },
220            errorPlacement: function( error, element ) {},
221            highlight: function ( element, errorClass ) {
222	            $( element ).addClass( errorClass );
223	            if ( $( element ).is( ':checkbox' ) ) {
224		            $( element ).closest( 'div' ).addClass( 'bb-chkb-err' );
225                }
226            },
227            unhighlight: function ( element, errorClass ) {
228	            $( element ).removeClass( errorClass );
229
230	            if ( $( element ).is( ':checkbox' ) ) {
231		            $( element ).closest( 'div' ).removeClass( 'bb-chkb-err' );
232                }
233            }
234        } );
235
236	    boombox_register_form.on( 'keyup', '[name="signonpassword"]', function(e){
237		    boombox_check_pass_strength( $( '[name="signonpassword"]' ), false, $( '#bb-register-pass-strength-result' ), [] );
238	    } );
239    }
240
241	/**
242	 * Client side form validation for "forgot password" form
243	 */
244    if ( boombox_forgot_password_form.length > 0 ){
245        boombox_forgot_password_form.validate( {
246            errorPlacement: function( error, element ) {}
247        } );
248    }
249
250	/**
251	 * Client side form validation for "reset password" form
252	 */
253	if( boombox_reset_password_form.length ) {
254		boombox_reset_password_form.validate( {
255			rules: {
256				rppassword: {
257					required: true
258				},
259				rpconfirmpassword: {
260					required: true,
261					equalTo: '[name="rppassword"]'
262				}
263			},
264			errorPlacement: function( error, element ) {}
265		} );
266		boombox_reset_password_form.on( 'keyup', '[name="rppassword"], [name="rpconfirmpassword"]', function(){
267			boombox_check_pass_strength( $( '[name="rppassword"]' ), $( '[name="rpconfirmpassword"]' ), $( '#bb-rp-pass-strength-result' ), [] );
268		} );
269	}
270
271    /**
272     * Perform AJAX login on form submit
273     */
274    boombox_login_form.on( 'submit', function (e) {
275	    var _this = $( this ),
276		    _status = _this.parent().find( 'p.status-msg' );
277
278        if ( ! _this.valid() ) {
279	        _status.removeClass( 'msg-success msg-info' ).addClass( 'msg-error' ).html( ajax_auth_object.invalid_message ).show();
280	        return false;
281        }
282
283        var user_email    = _this.find( '[name="useremail"]' ).val(),
284            password      = _this.find( '[name="password"]' ).val(),
285	        rememberField = _this.find( '[name="rememberme"]' ),
286            security      = _this.find( '[name="security"]' ).val(),
287            is_nsfw_auth  = _this.closest( '.authentication').hasClass( 'is-nsfw-auth' ),
288            redirect_url  = is_nsfw_auth ? ajax_auth_object.nsfw_redirect_url : ajax_auth_object.login_redirect_url,
289            data = {
290                action      : 'boombox_ajax_login',
291                useremail   : user_email,
292                password    : password,
293                security    : security,
294                redirect    : redirect_url
295            };
296
297        if( rememberField.length ) {
298            data.remember = rememberField.is( ':checked' ) ? 1 : 0;
299        }
300
301        if( ajax_auth_object.enable_login_captcha ) {
302            if( ajax_auth_object.captcha_type === 'image' ) {
303                data.captcha = _this.find('[name="captcha-code"]').val();
304            } else if( ajax_auth_object.captcha_type === 'google' ) {
305                data.captcha = _this.find( '[name="g-recaptcha-response"]' ).val();
306            }
307        }
308
309	    _status.removeClass( 'msg-success msg-error' ).addClass( 'msg-info' ).html( ajax_auth_object.loading_message ).show();
310
311        $.post(
312            ajax_auth_object.ajaxurl,
313            data,
314            function ( response ) {
315                if ( response.success == true ) {
316	                _status.removeClass( 'msg-error msg-info' ).addClass( 'msg-success' ).html( response.data.message );
317                    window.location.href = redirect_url;
318                } else {
319	                _status.removeClass( 'msg-success msg-info' ).addClass( 'msg-error' ).html( response.data.message );
320                    if( ajax_auth_object.enable_login_captcha ) {
321                        if( ajax_auth_object.captcha_type === 'image' ) {
322                            boombox_refresh_captcha(_this, _this.attr('action'));
323                        } else if( ajax_auth_object.captcha_type === 'google' ) {
324                            grecaptcha.reset( boombox_login_form_captcha );
325                        }
326                    }
327                }
328            }
329        );
330        e.preventDefault();
331    });
332
333    /**
334     * Perform AJAX register on form submit
335     */
336    boombox_register_form.on( 'submit', function (e) {
337        var _this = $( this ),
338            _status = _this.parent().find( 'p.status-msg' );
339
340        if ( ! _this.valid() ) {
341	        _status.removeClass( 'msg-success msg-info' ).addClass( 'msg-error' ).html( ajax_auth_object.invalid_message ).show();
342	        return false;
343        }
344
345        var username     = _this.find( '[name="signonusername"]' ).val(),
346            useremail    = _this.find( '[name="signonemail"]' ).val(),
347            password     = _this.find( '[name="signonpassword"]' ).val(),
348	        gdpr         = _this.find( '[name="signongdpr"]' ),
349            security     = _this.find( '[name="signonsecurity"]' ).val(),
350            is_nsfw_auth = _this.closest( '.authentication').hasClass( 'is-nsfw-auth' ),
351            redirect_url = is_nsfw_auth ? ajax_auth_object.nsfw_redirect_url : ajax_auth_object.register_redirect_url,
352            data = {
353                action      : 'boombox_ajax_register',
354                username    : username,
355                useremail   : useremail,
356                password    : password,
357                security    : security,
358                redirect    : redirect_url
359            }
360
361        if( gdpr.length ) {
362	        data.gdpr = gdpr.is( ':checked' ) ? 1 : 0;
363        }
364
365        if( ajax_auth_object.enable_registration_captcha ) {
366            if( ajax_auth_object.captcha_type === 'image' ) {
367                data.captcha = _this.find( '[name="signoncaptcha"]' ).val();
368            } else if( ajax_auth_object.captcha_type === 'google' ) {
369                data.captcha = _this.find( '[name="g-recaptcha-response"]' ).val();
370            }
371        }
372
373	    _status.removeClass( 'msg-success msg-error' ).addClass( 'msg-info' ).html( ajax_auth_object.loading_message ).show();
374
375        $.post(
376            ajax_auth_object.ajaxurl,
377            data,
378            function ( response ) {
379                if ( response.success == true ) {
380	                _status.removeClass( 'msg-error msg-info' ).addClass( 'msg-success' ).html( response.data.message );
381                    var _need_activation = response.data.need_activation || false;
382                    if( _need_activation == false ) {
383                        window.location.href = redirect_url;
384                    } else {
385                        _this[0].reset();
386                    }
387                }else{
388	                _status.removeClass( 'msg-success msg-info' ).addClass( 'msg-error' ).html( response.data.message );
389                    if( ajax_auth_object.enable_registration_captcha ) {
390                        if( ajax_auth_object.captcha_type === 'image' ) {
391                            boombox_refresh_captcha(_this, _this.attr('action'));
392                        } else if( ajax_auth_object.captcha_type === 'google' ) {
393                            grecaptcha.reset( boombox_register_form_captcha );
394                        }
395                    }
396                }
397            }
398        );
399        e.preventDefault();
400    });
401
402    /**
403     * Perform AJAX forget password on form submit
404     */
405    boombox_forgot_password_form.on('submit', function (e) {
406	    var _this = $( this ),
407		    _status = _this.parent().find( 'p.status-msg' );
408
409        if ( ! _this.valid() ) {
410	        _status.removeClass( 'msg-success msg-info' ).addClass( 'msg-error' ).html( ajax_auth_object.invalid_message ).show();
411	        return false;
412        }
413
414        var userlogin = _this.find( '[name="userlogin"]' ).val(),
415            security  = _this.find( '[name="forgotsecurity"]' ).val();
416
417	    _status.removeClass( 'msg-success msg-error' ).addClass( 'msg-info' ).html( ajax_auth_object.loading_message ).show();
418
419        $.post(
420            ajax_auth_object.ajaxurl,
421            {
422                action      : 'boombox_ajax_forgot_password',
423                userlogin   : userlogin,
424                security    : security
425            },
426            function ( response ) {
427                if( response.success ) {
428	                _status.removeClass( 'msg-error msg-info' ).addClass( 'msg-success' ).html( response.data.message );
429                    _this.remove();
430                } else {
431	                _status.removeClass( 'msg-success msg-info' ).addClass( 'msg-error' ).html( response.data.message );
432                }
433            }
434        );
435        e.preventDefault();
436        return false;
437
438    });
439
440	/**
441	 * Perform AJAX reset password on form submit
442	 */
443	boombox_reset_password_form.on( 'submit', function (e) {
444		var _this = $( this ),
445			_status = _this.parent().find( 'p.status-msg' ),
446			userlogin,
447			password,
448			confirm,
449			security;
450
451		if ( ! _this.valid() ) {
452			_status.removeClass( 'msg-success msg-info' ).addClass( 'msg-error' ).html( ajax_auth_object.invalid_message ).show();
453			return false;
454		}
455
456		userlogin = _this.find( '[name="rpuserlogin"]' ).val();
457		password = _this.find( '[name="rppassword"]' ).val();
458		confirm  = _this.find( '[name="rpconfirmpassword"]' ).val();
459		security  = _this.find( '[name="resetpasswordsecurity"]' ).val();
460
461		_status.removeClass( 'msg-success msg-error' ).addClass( 'msg-info' ).html( ajax_auth_object.loading_message ).show();
462
463		$.post(
464			ajax_auth_object.ajaxurl,
465			{
466				action      : 'boombox_ajax_reset_password',
467				userlogin   : userlogin,
468				password    : password,
469				confirm     : confirm,
470				security    : security
471			},
472			function ( response ) {
473				if( response.success ) {
474					_status.removeClass( 'msg-error msg-info' ).addClass( 'msg-success' ).html( response.data.message );
475					window.location.href = ajax_auth_object.reset_password_redirect_url;
476				} else {
477					_status.removeClass( 'msg-success msg-info' ).addClass( 'msg-error' ).html( response.data.message );
478				}
479			}
480		);
481		e.preventDefault();
482		return false;
483
484	} );
485
486    /**
487     * Refresh Captcha
488     */
489    $( 'body' ).on( 'click', '.auth-refresh-captcha', function(e){
490        var form = $( this ).closest( 'form' ),
491            type = form.attr('action');
492        boombox_refresh_captcha( form, type );
493        return false;
494    } );
495
496})(jQuery);

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.