mirror of
https://github.com/gosticks/wordpress-develop.git
synced 2026-08-12 04:40:26 +00:00
Users: enable admins to send users a reset password link.
Add a feature so Admins can send users a 'password reset' email. This doesn't change the password or force a password change. It only emails the user the password reset link. The feature appears in several places: * A "Send Reset Link" button on user profile screen. * A "Send password reset" option in the user list bulk action dropdown. * A "Send password reset" quick action when hovering over a username in the user list. Props Ipstenu, DrewAPicture, eventualo, wonderboymusic, knutsp, ericlewis, afercia, JoshuaWold, johnbillion, paaljoachim, hedgefield. Fixes #34281. git-svn-id: https://develop.svn.wordpress.org/trunk@50129 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
@@ -2,7 +2,7 @@
|
||||
* @output wp-admin/js/user-profile.js
|
||||
*/
|
||||
|
||||
/* global ajaxurl, pwsL10n */
|
||||
/* global ajaxurl, pwsL10n, userProfileL10n */
|
||||
(function($) {
|
||||
var updateLock = false,
|
||||
__ = wp.i18n.__,
|
||||
@@ -91,6 +91,68 @@
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Handle the password reset button. Sets up an ajax callback to trigger sending
|
||||
* a password reset email.
|
||||
*/
|
||||
function bindPasswordRestLink() {
|
||||
$( '#generate-reset-link' ).on( 'click', function() {
|
||||
var $this = $(this),
|
||||
data = {
|
||||
'user_id': userProfileL10n.user_id, // The user to send a reset to.
|
||||
'nonce': userProfileL10n.nonce // Nonce to validate the action.
|
||||
};
|
||||
|
||||
// Remove any previous error messages.
|
||||
$this.parent().find( '.notice-error' ).remove();
|
||||
|
||||
// Send the reset request.
|
||||
var resetAction = wp.ajax.post( 'send-password-reset', data );
|
||||
|
||||
// Handle reset success.
|
||||
resetAction.done( function( response ) {
|
||||
addInlineNotice( $this, true, response );
|
||||
} );
|
||||
|
||||
// Handle reset failure.
|
||||
resetAction.fail( function( response ) {
|
||||
addInlineNotice( $this, false, response );
|
||||
} );
|
||||
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Helper function to insert an inline notice of success or failure.
|
||||
*
|
||||
* @param {jQuery Object} $this The button element: the message will be inserted
|
||||
* above this button
|
||||
* @param {bool} success Whether the message is a success message.
|
||||
* @param {string} message The message to insert.
|
||||
*/
|
||||
function addInlineNotice( $this, success, message ) {
|
||||
var resultDiv = $( '<div />' );
|
||||
|
||||
// Set up the notice div.
|
||||
resultDiv.addClass( 'notice inline' );
|
||||
|
||||
// Add a class indicating success or failure.
|
||||
resultDiv.addClass( 'notice-' + ( success ? 'success' : 'error' ) );
|
||||
|
||||
// Add the message, wrapping in a p tag, with a fadein to highlight each message.
|
||||
resultDiv.text( $( $.parseHTML( message ) ).text() ).wrapInner( '<p />');
|
||||
|
||||
// Disable the button when the callback has succeeded.
|
||||
$this.prop( 'disabled', success );
|
||||
|
||||
// Remove any previous notices.
|
||||
$this.siblings( '.notice' ).remove();
|
||||
|
||||
// Insert the notice.
|
||||
$this.before( resultDiv );
|
||||
}
|
||||
|
||||
function bindPasswordForm() {
|
||||
var $generateButton,
|
||||
$cancelButton;
|
||||
@@ -369,6 +431,7 @@
|
||||
});
|
||||
|
||||
bindPasswordForm();
|
||||
bindPasswordRestLink();
|
||||
});
|
||||
|
||||
$( '#destroy-sessions' ).on( 'click', function( e ) {
|
||||
|
||||
Reference in New Issue
Block a user