summaryrefslogtreecommitdiff
path: root/IkiWiki/Setup
diff options
context:
space:
mode:
Diffstat (limited to 'IkiWiki/Setup')
0 files changed, 0 insertions, 0 deletions
(-charset => 'utf-8',
  • -cookie => $session->cookie(-httponly => 1, -secure => 1));
  • } else {
  • print $session->header(-charset => 'utf-8',
  • -cookie => $session->cookie(-httponly => 1));
  • }
  • }
  • sub showform ($$$$;@) {
  • my $form=shift;
  • my $buttons=shift;
  • my $session=shift;
  • my $cgi=shift;
  • if (exists $hooks{formbuilder}) {
  • run_hooks(formbuilder => sub {
  • shift->(form => $form, cgi => $cgi, session => $session,
  • buttons => $buttons);
  • });
  • }
  • printheader($session);
  • print misctemplate($form->title, $form->render(submit => $buttons), @_);
  • }
  • sub redirect ($$) {
  • my $q=shift;
  • my $url=shift;
  • if (! $config{w3mmode}) {
  • print $q->redirect($url);
  • }
  • else {
  • print "Content-type: text/plain\n";
  • print "W3m-control: GOTO $url\n\n";
  • }
  • }
  • sub decode_cgi_utf8 ($) {
  • # decode_form_utf8 method is needed for 5.10
  • if ($] < 5.01) {
  • my $cgi = shift;
  • foreach my $f ($cgi->param) {
  • $cgi->param($f, map { decode_utf8 $_ } $cgi->param($f));
  • }
  • }
  • }
  • sub decode_form_utf8 ($) {
  • if ($] >= 5.01) {
  • my $form = shift;
  • foreach my $f ($form->field) {
  • $form->field(name => $f,
  • value => decode_utf8($form->field($f)),
  • force => 1,
  • );
  • }
  • }
  • }
  • # Check if the user is signed in. If not, redirect to the signin form and
  • # save their place to return to later.
  • sub needsignin ($$) {
  • my $q=shift;
  • my $session=shift;
  • if (! defined $session->param("name") ||
  • ! userinfo_get($session->param("name"), "regdate")) {
  • $session->param(postsignin => $ENV{QUERY_STRING});
  • cgi_signin($q, $session);
  • cgi_savesession($session);
  • exit;
  • }
  • }
  • sub cgi_signin ($$) {
  • my $q=shift;
  • my $session=shift;
  • decode_cgi_utf8($q);
  • eval q{use CGI::FormBuilder};
  • error($@) if $@;
  • my $form = CGI::FormBuilder->new(
  • title => "signin",
  • name => "signin",
  • charset => "utf-8",
  • method => 'POST',
  • required => 'NONE',
  • javascript => 0,
  • params => $q,
  • action => $config{cgiurl},
  • header => 0,
  • template => {type => 'div'},
  • stylesheet => baseurl()."style.css",
  • );
  • my $buttons=["Login"];
  • if ($q->param("do") ne "signin" && !$form->submitted) {
  • $form->text(gettext("You need to log in first."));
  • }
  • $form->field(name => "do", type => "hidden", value => "signin",
  • force => 1);
  • decode_form_utf8($form);
  • run_hooks(formbuilder_setup => sub {
  • shift->(form => $form, cgi => $q, session => $session,
  • buttons => $buttons);
  • });
  • decode_form_utf8($form);
  • if ($form->submitted) {
  • $form->validate;
  • }
  • showform($form, $buttons, $session, $q);
  • }
  • sub cgi_postsignin ($$) {
  • my $q=shift;
  • my $session=shift;
  • # Continue with whatever was being done before the signin process.
  • if (defined $session->param("postsignin")) {
  • my $postsignin=CGI->new($session->param("postsignin"));
  • $session->clear("postsignin");
  • cgi($postsignin, $session);
  • cgi_savesession($session);
  • exit;
  • }
  • else {
  • if ($config{sslcookie} && ! $q->https()) {
  • error(gettext("probable misconfiguration: sslcookie is set, but you are attempting to login via http, not https"));
  • }
  • else {
  • error(gettext("login failed, perhaps you need to turn on cookies?"));
  • }
  • }
  • }
  • sub cgi_prefs ($$) {
  • my $q=shift;
  • my $session=shift;