WP_Application_Passwords::create_new_application_password() public staticWP 5.6.0

Створює Пароль програми.

{} Це метод класу: WP_Application_Passwords{}

Хуки з методу

Повертає

Массив|WP_Error.

Перший ключ у масиві – це новий пароль, другий – його докладна інформація.

WP_Error повертається при помилці або якщо пароль програми із зазначеною назвою вже існує.

Використання

$result = WP_Application_Passwords::create_new_application_password( $user_id, $args );
$user_id
(число) (обов’язковий)
ID користувача пароль програми, для якого буде створюватися.
$args
(масив)

Інформація про пароль програми. Можливі ключі масиву:

  • name (обов’язковий) — Назва пароля програми.
  • app_id– ID програми. Якщо не вказати ID буде створено автоматично.

Приклади

0

#1 Приклад створення пароля програми

$result = WP_Application_Passwords::create_new_application_password( 2, [
	'name' => 'Where2Smoke',
]);

print_r($result);

/*
Array
(
	[0] => cnBofvLCpiUmok25tHRItN3q
	[1] => Array
		(
			[uuid] => 851e6fab-907d-41ad-828c-5cf52b099b17
			[app_id] =>
			[name] => test
			[password] => $P$BKLDsV0npRnbF7awAcnFwfy43V5TjK/
			[created] => 1615031943
			[last_used] =>
			[last_ip] =>
		)

)
*/

$password = $result[0];
$new_password = WP_Application_Passwords::chunk_password( $password );

echo $new_password; //> cnBo fvLC piUm ok25 tHRI tN3q

список змін

З версії 5.6.0Введено.
З версії 5.7.0Returns WP_Error if application name already exists.

Код WP_Application_Passwords::create_new_application_password() WP 6.0.2

public static function create_new_application_password( $user_id, $args = array() ) {
	if ( ! empty( $args['name'] ) ) {
		$args['name'] = sanitize_text_field( $args['name'] );
	}

	if ( empty( $args['name'] ) ) {
		return new WP_Error( 'application_password_empty_name', __( 'An application name is required to create an application password.' ), array( 'status' => 400 ) );
	}

	if ( self::application_name_exists_for_user( $user_id, $args['name'] ) ) {
		return new WP_Error( 'application_password_duplicate_name', __( 'Each application name should be unique.' ), array( 'status' => 409 ) );
	}

	$new_password = wp_generate_password( static::PW_LENGTH, false );
	$ hashed_password = wp_hash_password ($ new_password);

	$new_item = array(
		'uuid' => wp_generate_uuid4(),
		'app_id' => empty( $args['app_id'] ) ? '' : $args['app_id'],
		'name' => $args['name'],
		'password' => $hashed_password,
		'created' => time(),
		'last_used' => null,
		'last_ip' => null,
	);

	$passwords = static::get_user_application_passwords( $user_id );
	$passwords[] = $new_item;
	$saved = static::set_user_application_passwords( $user_id, $passwords );

	if ( ! $saved ) {
		return new WP_Error( 'db_error', __( 'Could not save application password.' ) );
	}

	$network_id = get_main_network_id();
	if ( ! get_network_option( $network_id, self::OPTION_KEY_IN_USE ) ) {
		update_network_option( $network_id, self::OPTION_KEY_IN_USE, true );
	}

	/**
	 * Fires when an application password is created.
	 *
	 * @ Since 5.6.0
	 *
	 * @param int $user_id The user ID.
	 * @param array $new_item {
	 * The details про створений password.
	 *
	 * @type string $uuid Винятковий ID для application password.
	 * @type string $app_id A UUID призначений для застосування до uniquely identify it.
	 * @type string $name Name of the application password.
	 * @type string $password Однією мовою є password.
	 * @type int $created Unix timestamp of when the password was created.
	 * @type null $last_used Null.
	 * @type null $last_ip Null.
	 * }
	 * @param string $new_password Unhashed generated application password.
	 * @param array $args {
	 * Arguments використовується для створення application password.
	 *
	 * @type string $name Name of the application password.
	 * @type string $app_id A UUID призначений для застосування до uniquely identify it.
	 * }
	 */
	do_action( 'wp_create_application_password', $user_id, $new_item, $new_password, $args);

	return array ($ new_password, $ new_item);
}

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *