lib/wp_wrapper/modules/authorization.rb in wp_wrapper-0.0.5 vs lib/wp_wrapper/modules/authorization.rb in wp_wrapper-0.0.6
- old
+ new
@@ -1,47 +1,63 @@
module WpWrapper
module Modules
-
module Authorization
- def login(retries = 3)
- success = logged_in?
-
- if (!success && retries > 0)
+ def login(force: false, retries: 3)
+ success = force ? false : logged_in?
+
+ if !success
login_page = self.mechanize_client.open_url(get_url(:admin))
agent = self.mechanize_client.agent
- if (login_page)
- login_form = login_page.form_with(:name => 'loginform')
+ if login_page
+ upgraded = upgrade_if_necessary(login_page)
+ login(retries) if upgraded
+
+ login_form = login_page.form_with(name: 'loginform')
- if (login_form)
- login_form.field_with(:name => 'log').value = self.username
- login_form.field_with(:name => 'pwd').value = self.password
+ if login_form
+ login_form.field_with(name: 'log').value = self.username
+ login_form.field_with(name: 'pwd').value = self.password
begin
logged_in_page = login_form.submit
- log_out_link = logged_in_page.link_with(:href => /wp-login\.php\?action=logout/i)
+ log_out_link = logged_in_page.link_with(href: /wp-login\.php\?action=logout/i)
self.logged_in = !log_out_link.nil?
success = self.logged_in
- puts "#{Time.now}: Url: #{self.url}. Successfully logged in? #{self.logged_in}"
+ puts "[WpWrapper::Modules::Authorization] - #{Time.now}: Url: #{self.url}. Successfully logged in? #{self.logged_in}"
rescue Exception => e
- puts "#{Time.now}: Url: #{self.url}. Failed to login. Error Class: #{e.class.name}. Error Message: #{e.message}"
- login(retries - 1) if retries > 0
+ puts "[WpWrapper::Modules::Authorization] - #{Time.now}: Url: #{self.url}. Failed to login. Error Class: #{e.class.name}. Error Message: #{e.message}"
+ login(force: force, retries: retries - 1) if retries > 0
raise WpWrapper::FailedLoginException, "Failed to login" if retries <= 0 && self.reraise_exceptions
end
else
- puts "\n\n#{Time.now}: Url: #{self.url}. Something's broken! Can't find wp-admin login form! Retrying...\n\n"
- login(retries - 1) if retries > 0
+ puts "[WpWrapper::Modules::Authorization] - #{Time.now}: Url: #{self.url}. Something's broken! Can't find wp-admin login form! Retrying...\n\n"
+ login(force: force, retries: retries - 1) if retries > 0
+ raise WpWrapper::FailedLoginException, "Failed to login" if retries <= 0 && self.reraise_exceptions
end
end
end
+
+ success = !(retries <= 0)
return success
end
+
+ def upgrade_if_necessary(page)
+ upgraded = false
+ upgrade_link = page.link_with(href: /upgrade\.php/i)
+
+ if upgrade_link
+ upgrade_link.click
+ upgraded = true
+ end
+
+ return upgraded
+ end
end
-
end
-end
\ No newline at end of file
+end