require "singleton"

module Apache
  class SillyAuth
    include Singleton

    PASSWORDS = {
      "guest" => "guest",
      "shugo" => "ruby"
    }

    def authenticate(r)
      pw = r.get_basic_auth_pw
      if pw == PASSWORDS[r.connection.user]
        return OK
      else
        r.note_basic_auth_failure
        return AUTH_REQUIRED
      end
    end

    def authorize(r)
      for method_mask, requirement in r.requires
        w, *args = requirement.split
        case w
        when "valid-user"
          return OK
        when "user"
          if args.include?(r.connection.user)
            return OK
          end
        else
          return DECLINED
        end
      end
      r.note_basic_auth_failure
      return AUTH_REQUIRED
    end
  end
end

