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
|