X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ian/git?p=cgi-auth-flexible.git;a=blobdiff_plain;f=cgi-auth-flexible.pm;h=137de002125ffd661342d9de22bcbcedcb50ed14;hp=eea4bc0946eda50a607fca4a278c70f0f7feb6e9;hb=0e3eb3aef176eac1e7209f01ad73e2e91f782507;hpb=2cc2bcd02ba39b7112ee5428f39bdac95e6fd1f3 diff --git a/cgi-auth-flexible.pm b/cgi-auth-flexible.pm index eea4bc0..137de00 100644 --- a/cgi-auth-flexible.pm +++ b/cgi-auth-flexible.pm @@ -1294,22 +1294,33 @@ sub mutate_ok ($) { } our %_resource_get_needs_secret_hidden = - (map { $_ => 0 } qw(PAGE FRAME IFRAME SRCDUMP STYLESHEET FAVICON), + (map { $_ => 0 } qw(PAGE FRAME IFRAME SRCDUMP STYLESHEET FAVICON ROBOTS), map { $_ => 1 } qw(IMAGE SCRIPT AJAX-XML AJAX-JSON AJAX-OTHER)); -sub resource_get_needs_secret_hidden ($) { - my ($r, $nonpagetype) = @_; - my $ent = $_resource_get_needs_secret_hidden{$nonpagetype}; - die "unsupported nonpage GET type $nonpagetype" unless defined $ent; - return $ent; +sub update_get_need_add_hidden ($$) { + my ($r, $reqtype, $value) = @_; + my $hash = ref $r + ? ($r->{GetNeedsSecretHidden} ||= { }) + : \%_resource_get_needs_secret_hidden; + $hash->{$reqtype} = $value; } -sub nonpage_ok ($$) { - my ($r, $nonpagetype) = @_; +sub need_add_hidden ($$) { + my ($r, $method, $reqtype) = @_; + return 1 if $method ne 'GET'; + 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"; +} + +sub check_nonpage ($$) { + my ($r, $reqtype) = @_; $r->_assert_checked(); return unless $r->resource_get_needs_secret_hidden($nonpagetype); return if $r->{ParmT}; - die "missing hidden secret parameter on nonpage GET $nonpagetype"; + die "missing hidden secret parameter on nonpage request $nonpagetype"; } #---------- output ----------