module Wpxf::WordPress::Login

Provides functionality required to login to WordPress.

Public Instance Methods

wordpress_login(user, pass) click to toggle source

Log in to WordPress and return the session cookies. @param user [String] the username. @param pass [String] the password. @return [Array, nil] an array of cookies if the login is successful,

otherwise, returns nil.
# File lib/wpxf/wordpress/login.rb, line 38
def wordpress_login(user, pass)
  res = _execute_wp_login_request(user, pass)

  if res&.cookies
    return res.cookies if valid_wordpress_cookie?(res.cookies.to_s)
  end

  nil
end
wordpress_login_post_body(user, pass) click to toggle source

Build a request body string for a WordPress login request. @param user [String] the username. @param pass [String] the password. @return [String] the request body.

# File lib/wpxf/wordpress/login.rb, line 9
def wordpress_login_post_body(user, pass)
  redirect = Wpxf::Utility::Text.rand_alpha(10)
  builder = Wpxf::Utility::BodyBuilder.new
  builder.add_field('log', user)
  builder.add_field('pwd', pass)
  builder.add_field('redirect_to', normalize_uri(target_uri, redirect))
  builder.add_field('wp-submit', 'Login')
  builder.create do |body|
    return body
  end
end

Private Instance Methods

_execute_wp_login_request(user, pass) click to toggle source
# File lib/wpxf/wordpress/login.rb, line 50
def _execute_wp_login_request(user, pass)
  res = nil
  scoped_option_change('follow_http_redirection', false) do
    res = execute_post_request(
      url: wordpress_url_login,
      body: wordpress_login_post_body(user, pass)
    )
  end
  res
end