From: Joey Hess Date: Thu, 14 May 2015 03:32:29 +0000 (-0400) Subject: don't let emailauth user's email address be changed on preferences page X-Git-Tag: 3.20150610~72^2~1 X-Git-Url: http://git.vanrenterghem.biz/git.ikiwiki.info.git/commitdiff_plain/70cf5bb7654a551511c0b05cd782349dbbde2c78 don't let emailauth user's email address be changed on preferences page There's no real problem if they do change it, except they may get confused and expect to be able to log in with the changed email and get the same user account. --- diff --git a/IkiWiki/Plugin/emailauth.pm b/IkiWiki/Plugin/emailauth.pm index 57100a2d7..aa067238f 100644 --- a/IkiWiki/Plugin/emailauth.pm +++ b/IkiWiki/Plugin/emailauth.pm @@ -8,7 +8,8 @@ use IkiWiki 3.00; sub import { hook(type => "getsetup", id => "emailauth", "call" => \&getsetup); - hook(type => "cgi", id => "cgi", "call" => \&cgi); + hook(type => "cgi", id => "emailauth", "call" => \&cgi); + hook(type => "formbuilder_setup", id => "emailauth", "call" => \&formbuilder_setup); IkiWiki::loadplugin("loginselector"); IkiWiki::Plugin::loginselector::register_login_plugin( "emailauth", @@ -111,6 +112,17 @@ sub cgi ($$) { } } +sub formbuilder_setup (@) { + my %params=@_; + my $form=$params{form}; + my $session=$params{session}; + + if ($form->title eq "preferences" && + IkiWiki::emailuser($session->param("name"))) { + $form->field(name => "email", disabled => 1); + } +} + # Generates the token that will be used in the authurl to log the user in. # This needs to be hard to guess, and relatively short. Generating a cgi # session id will make it as hard to guess as any cgi session.