]> git.vanrenterghem.biz Git - git.ikiwiki.info.git/commitdiff
don't let emailauth user's email address be changed on preferences page
authorJoey Hess <joeyh@joeyh.name>
Thu, 14 May 2015 03:32:29 +0000 (23:32 -0400)
committerJoey Hess <joeyh@joeyh.name>
Thu, 14 May 2015 03:32:29 +0000 (23:32 -0400)
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.

IkiWiki/Plugin/emailauth.pm

index 57100a2d74915c5c6537984b7b45e67e71abac07..aa067238fb77e81cbcf3ab1f7eab5b39fc9de7c6 100644 (file)
@@ -8,7 +8,8 @@ use IkiWiki 3.00;
 
 sub import {
        hook(type => "getsetup", id => "emailauth", "call" => \&getsetup);
 
 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",
        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.
 # 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.