58 lines
972 B
Perl
58 lines
972 B
Perl
#!/usr/bin/perl
|
|
# Ikiwiki email address as login
|
|
package IkiWiki::Plugin::emailauth;
|
|
|
|
use warnings;
|
|
use strict;
|
|
use IkiWiki 3.00;
|
|
|
|
sub import {
|
|
hook(type => "getsetup", id => "emailauth", "call" => \&getsetup);
|
|
IkiWiki::loadplugin("loginselector");
|
|
IkiWiki::Plugin::loginselector::register_login_plugin(
|
|
"emailauth",
|
|
\&email_setup,
|
|
\&email_check_input,
|
|
\&email_auth,
|
|
);
|
|
}
|
|
|
|
sub getsetup () {
|
|
return
|
|
plugin => {
|
|
safe => 1,
|
|
rebuild => 0,
|
|
section => "auth",
|
|
},
|
|
}
|
|
|
|
sub email_setup ($$) {
|
|
my $q=shift;
|
|
my $template=shift;
|
|
|
|
return 1;
|
|
}
|
|
|
|
sub email_check_input ($) {
|
|
my $cgi=shift;
|
|
defined $cgi->param('do')
|
|
&& $cgi->param("do") eq "signin"
|
|
&& defined $cgi->param('Email_entry')
|
|
&& length $cgi->param('Email_entry');
|
|
}
|
|
|
|
sub email_auth ($$$) {
|
|
my $cgi=shift;
|
|
my $session=shift;
|
|
my $errordisplayer=shift;
|
|
|
|
unless ($cgi->param('Email_entry') =~ /.\@./) {
|
|
$errordisplayer->("Invalid email address.");
|
|
return;
|
|
}
|
|
|
|
error "EMAIL AUTH";
|
|
}
|
|
|
|
1
|