def authenticate(*args)
      return false unless active?

      if args.length > 1
        method = args.shift

        if Challah.authenticators[method]
          return Challah.authenticators[method].match?(self, providers[method], *args)
        end

        false
      else
        self.authenticate(:password, args[0])
      end
    end
def authenticate(*args)
      return false unless active?

      if args.length > 1
        method = args.shift

        if Challah.authenticators[method]
          return Challah.authenticators[method].match?(self, providers[method], *args)
        end

        false
      else
        self.authenticate(:password, args[0])
      end
    end
Generic authentication method. By default, this just checks to see if the password
 given matches this user. You can also pass in the first parameter as the method
 to use for a different type of authentication.