Class: Devise::Strategies::YubikeyDatabaseAuthenticatable

Inherits:
Authenticatable
  • Object
show all
Defined in:
lib/devise_yubikey_database_authenticatable/strategy.rb

Instance Method Summary collapse

Instance Method Details

#authenticate!Object



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
# File 'lib/devise_yubikey_database_authenticatable/strategy.rb', line 6

def authenticate!
  resource = mapping.to.find_for_yubikey_database_authentication(authentication_hash)
  return fail(:not_found_in_database) unless resource

  if validate(resource) 
    if resource.use_yubikey?
      if params[scope][:yubiotp].blank?
        if resource.valid_password?(password) 
          success!(resource)
        else
          fail(:invalid)
        end
      else
        if resource.validate_yubikey(params[scope][:yubiotp]) && (resource.registered_yubikey == params[scope][:yubiotp][0..11])
          resource.after_database_authentication
          success!(resource)
        else
          fail('Invalid Yubikey OTP.')
        end
      end
    elsif resource.valid_password?(password)
      success!(resource)
    else
      fail(:invalid)
    end
  else
    fail(:invalid)
  end
end