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",
eval q{use Mail::Sendmail};
error($@) if $@;
+ my $shorturl=$config{url};
+ $shorturl=~s/^https?:\/\///i;
sendmail(
To => $email,
From => "$config{wikiname} admin <".
(defined $config{adminemail} ? $config{adminemail} : "")
.">",
- Subject => "$config{wikiname} login",
+ Subject => "$config{wikiname} login | $shorturl",
Message => $template->output,
) or error(gettext("Failed to send mail"));
}
}
+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.