chiark / gitweb /
need_add_hidden: support use with the class rather than an object
[cgi-auth-flexible.git] / cgi-auth-flexible.pm
index 00d3faec2f0dde3c611064077eb263e72b9c6228..1b51142bfeab55c2e6883b111e0dbab1f4735209 100644 (file)
@@ -1289,19 +1289,24 @@ our %_resource_get_needs_secret_hidden =
     (map { $_ => 0 } qw(PAGE FRAME IFRAME SRCDUMP STYLESHEET FAVICON ROBOTS),
      map { $_ => 1 } qw(IMAGE SCRIPT AJAX-XML AJAX-JSON AJAX-OTHER));
 
-sub update_get_need_add_hidden ($$) {
-    my ($r, $reqtype, $value) = @_;
+sub update_get_need_add_hidden ($$;$) {
+    my ($r, $reqtype, $value, $force) = @_;
     my $hash = ref $r
        ? ($r->{GetNeedsSecretHidden} ||= { })
        : \%_resource_get_needs_secret_hidden;
+    return if !$force &&
+       (exists $_resource_get_needs_secret_hidden{$reqtype} ||
+        exists $hash->{$reqtype});
     $hash->{$reqtype} = $value;
 }
 
 sub need_add_hidden ($$) {
     my ($r, $method, $reqtype) = @_;
     return 1 if $method ne 'GET';
-    my $ent = $r->{GetNeedsSecretHidden}{$reqtype};
-    return $ent if defined $ent;
+    if (ref $r) {
+       my $ent = $r->{GetNeedsSecretHidden}{$reqtype};
+       return $ent if defined $ent;
+    }
     my $ent = $_resource_get_needs_secret_hidden{$reqtype};
     return $ent if defined $ent;
     die "unsupported nonpage GET type $reqtype";