X-Git-Url: https://sipb.mit.edu/gitweb.cgi/ikiwiki.git/blobdiff_plain/ae5f2bce6f83a7e6e6430099ebf59302cce2ee31..78737cbfbf91c7b31ed5d216a23de8d360a76392:/doc/todo/require_CAPTCHA_to_edit.mdwn diff --git a/doc/todo/require_CAPTCHA_to_edit.mdwn b/doc/todo/require_CAPTCHA_to_edit.mdwn index cc86eba92..83ba07eb0 100644 --- a/doc/todo/require_CAPTCHA_to_edit.mdwn +++ b/doc/todo/require_CAPTCHA_to_edit.mdwn @@ -2,6 +2,8 @@ I don't necessarily trust all OpenID providers to stop bots. I note that ikiwik I imagine a plugin that modifies the login screen to use . You would then be required to fill in the captcha as well as log in in the normal way. +-- [[users/Will]] + > I hate CAPTCHAs with a passion. Someone else is welcome to write such a > plugin. > @@ -55,7 +57,7 @@ ignored. > This is still not fixed. I would have thought the following patch would > have fixed this second issue, but it doesn't. -(code snipped as a working patch is below) +(code snipped as a working [[patch]] is below) >> What seems to be happing here is that the openid plugin defines a >> validate hook for openid_url that calls validate(). validate() in turn @@ -80,17 +82,24 @@ ignored. >>> Patch is inline below. >>> I think this whole thing is working now. +>>>> Ok, glad it's working. Not thrilled that it needs to modify the +>>>> openid plugin, especially as I'm not sure if i I will integrate the +>>>> captcha plugin into mainline. Also because it's not very clean to have +>>>> the oprnid plugin aware of another plugin like that. I'd like to +>>>> prusue my idea of not doing the captcha validation in the validate +>>>> hook. + --- a/IkiWiki/Plugin/openid.pm +++ b/IkiWiki/Plugin/openid.pm -@@ -18,6 +18,7 @@ sub getopt () { #{{{ +@@ -18,6 +18,7 @@ sub getopt () { error($@) if $@; Getopt::Long::Configure('pass_through'); GetOptions("openidsignup=s" => \$config{openidsignup}); + GetOptions("openidneedscaptcha=s" => \$config{openidneedscaptcha}); - } #}}} + } - sub formbuilder_setup (@) { #{{{ -@@ -61,6 +62,7 @@ sub formbuilder_setup (@) { #{{{ + sub formbuilder_setup (@) { +@@ -61,6 +62,7 @@ sub formbuilder_setup (@) { # Skip all other required fields in this case. foreach my $field ($form->field) { next if $field eq "openid_url"; @@ -98,7 +107,7 @@ ignored. $form->field(name => $field, required => 0, validate => '/.*/'); } -@@ -96,6 +98,18 @@ sub validate ($$$;$) { #{{{ +@@ -96,6 +98,18 @@ sub validate ($$$;$) { } } @@ -143,19 +152,19 @@ use warnings; use strict; use IkiWiki 2.00; -sub import { #{{{ +sub import { hook(type => "formbuilder_setup", id => "recaptcha", call => \&formbuilder_setup); -} # }}} +} -sub getopt () { #{{{ +sub getopt () { eval q{use Getopt::Long}; error($@) if $@; Getopt::Long::Configure('pass_through'); GetOptions("reCaptchaPubKey=s" => \$config{reCaptchaPubKey}); GetOptions("reCaptchaPrivKey=s" => \$config{reCaptchaPrivKey}); -} #}}} +} -sub formbuilder_setup (@) { #{{{ +sub formbuilder_setup (@) { my %params=@_; my $form=$params{form}; @@ -265,7 +274,7 @@ EOTAGS }); } } -} # }}} +} # The following function is borrowed from # Captcha::reCAPTCHA by Andy Armstrong and are under the PERL Artistic License @@ -316,4 +325,3 @@ sub check_answer { } 1; -