1
0
Fork 1
mirror of https://github.com/mastodon/mastodon.git synced 2024-12-24 01:52:41 +00:00
mastodon/lib/devise/strategies/two_factor_ldap_authenticatable.rb
2024-04-29 12:32:06 +00:00

33 lines
824 B
Ruby

# frozen_string_literal: true
require 'net/ldap'
require 'devise/strategies/base'
module Devise
module Strategies
class TwoFactorLdapAuthenticatable < Base
def valid?
valid_params? && mapping.to.respond_to?(:authenticate_with_ldap)
end
def authenticate!
resource = mapping.to.authenticate_with_ldap(params[scope])
if resource && !resource.otp_required_for_login?
success!(resource)
else
fail(:invalid) # rubocop:disable Style/SignalException -- method is from Warden::Strategies::Base
end
end
protected
def valid_params?
params[scope] && params[scope][:password].present?
end
end
end
end
Warden::Strategies.add(:two_factor_ldap_authenticatable, Devise::Strategies::TwoFactorLdapAuthenticatable)