Module: WpWrapper::Modules::Authorization

Included in:
Client
Defined in:
lib/wp_wrapper/modules/authorization.rb

Instance Method Summary collapse

Instance Method Details

#login(force: false, retries: 3) ⇒ Object



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# File 'lib/wp_wrapper/modules/authorization.rb', line 5

def (force: false, retries: 3)
  success                 =   force ? false : logged_in?

  if !success
                =   self.mechanize_client.open_url(get_url(:admin))
    agent                 =   self.mechanize_client.agent

    if 
      upgraded            =   upgrade_if_necessary()
      (retries) if upgraded
      
                =   .form_with(name: 'loginform')

      if 
        .field_with(name: 'log').value = self.username
        .field_with(name: 'pwd').value = self.password

        begin
          logged_in_page  =   .submit
          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 "[WpWrapper::Modules::Authorization] - #{Time.now}: Url: #{self.url}. Successfully logged in? #{self.logged_in}"
        
        rescue Exception => e
          puts "[WpWrapper::Modules::Authorization] - #{Time.now}: Url: #{self.url}. Failed to login. Error Class: #{e.class.name}. Error Message: #{e.message}"
          (force: force, retries: retries - 1) if retries > 0
          raise WpWrapper::FailedLoginException, "Failed to login" if retries <= 0 && self.reraise_exceptions
        end

      else
        puts "[WpWrapper::Modules::Authorization] - #{Time.now}: Url: #{self.url}. Something's broken! Can't find wp-admin login form! Retrying...\n\n"
        (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

#upgrade_if_necessary(page) ⇒ Object



49
50
51
52
53
54
55
56
57
58
59
# File 'lib/wp_wrapper/modules/authorization.rb', line 49

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