Signed-off-by: Edward Z. Yang <edwardzyang@thewritingpot.com>
force => 1);
$form->field(name => "sid", type => "hidden", value => $session->id,
force => 1);
force => 1);
$form->field(name => "sid", type => "hidden", value => $session->id,
force => 1);
- $form->field(name => "email", size => 50, fieldset => "preferences");
+ #$form->field(name => "email", size => 50, fieldset => "preferences");
+ $form->field(name => "realname", size => 50, fieldset => "preferences");
my $user_name=$session->param("name");
if (! $form->submitted) {
my $user_name=$session->param("name");
if (! $form->submitted) {
- $form->field(name => "email", force => 1,
- value => userinfo_get($user_name, "email"));
+ #$form->field(name => "email", force => 1,
+ #value => userinfo_get($user_name, "email"));
+ $form->field(name => "realname", force => 1,
+ value => userinfo_get($user_name, "realname"));
}
if ($form->submitted eq 'Logout') {
}
if ($form->submitted eq 'Logout') {
userinfo_set($user_name, 'email', $form->field('email')) ||
error("failed to set email");
}
userinfo_set($user_name, 'email', $form->field('email')) ||
error("failed to set email");
}
+ if (defined $form->field('realname')) {
+ userinfo_set($user_name, 'realname', $form->field('realname')) ||
+ error("failed to set realname");
+ }
$form->text(gettext("Preferences saved."));
}
$form->text(gettext("Preferences saved."));
}
use warnings;
use strict;
use IkiWiki;
use warnings;
use strict;
use IkiWiki;
use Encode;
use open qw{:utf8 :std};
use Encode;
use open qw{:utf8 :std};
my %env=%ENV;
if (defined $user || defined $ipaddr) {
my $u=defined $user ? $user : $ipaddr;
my %env=%ENV;
if (defined $user || defined $ipaddr) {
my $u=defined $user ? $user : $ipaddr;
- $ENV{GIT_AUTHOR_NAME}=$u;
+ # MITLOGIN This algorithm could be improved
+ $ENV{GIT_AUTHOR_NAME}=IkiWiki::userinfo_get($u, "realname");
$ENV{GIT_AUTHOR_EMAIL}="$u\@mit.edu";
}
$ENV{GIT_AUTHOR_EMAIL}="$u\@mit.edu";
}
use warnings;
use strict;
use IkiWiki 3.00;
use warnings;
use strict;
use IkiWiki 3.00;
sub import {
hook(type => "getsetup", id => "httpauth", call => \&getsetup);
sub import {
hook(type => "getsetup", id => "httpauth", call => \&getsetup);
my $session=shift;
if (defined $cgi->remote_user()) {
my $session=shift;
if (defined $cgi->remote_user()) {
- $session->param("name", $cgi->remote_user());
+ my $user = $cgi->remote_user();
+ $session->param("name", $user);
+ eval IkiWiki::possibly_foolish_untaint($ENV{SSL_CLIENT_S_DN_CN});
+ my $realname = IkiWiki::userinfo_get($user, "realname");
+ if ((!defined $realname || $realname eq "") &&
+ defined $ENV{SSL_CLIENT_S_DN_CN}) {
+ IkiWiki::userinfo_set($user, "realname", $ENV{SSL_CLIENT_S_DN_CN});
+ }
if (! defined $userinfo ||
! exists $userinfo->{$user} || ! ref $userinfo->{$user} ||
! exists $userinfo->{$user}->{$field}) {
if (! defined $userinfo ||
! exists $userinfo->{$user} || ! ref $userinfo->{$user} ||
! exists $userinfo->{$user}->{$field}) {
+ if ($field eq "realname" && defined $ENV{SSL_CLIENT_S_DN_CN}) {
+ userinfo_set($user, "realname", $ENV{SSL_CLIENT_S_DN_CN});
+ return $ENV{SSL_CLIENT_S_DN_CN};
+ }
+ if ($field eq "realname" && $userinfo->{$user}->{$field} eq "" &&
+ defined $ENV{SSL_CLIENT_S_DN_CN}) {
+ userinfo_set($user, "realname", $ENV{SSL_CLIENT_S_DN_CN});
+ return $ENV{SSL_CLIENT_S_DN_CN};
+ }
return $userinfo->{$user}->{$field};
}
return $userinfo->{$user}->{$field};
}
my @envsave;
push @envsave, qw{REMOTE_ADDR QUERY_STRING REQUEST_METHOD REQUEST_URI
CONTENT_TYPE CONTENT_LENGTH GATEWAY_INTERFACE
my @envsave;
push @envsave, qw{REMOTE_ADDR QUERY_STRING REQUEST_METHOD REQUEST_URI
CONTENT_TYPE CONTENT_LENGTH GATEWAY_INTERFACE
- HTTP_COOKIE REMOTE_USER HTTPS} if $config{cgi};
+ HTTP_COOKIE REMOTE_USER HTTPS SSL_CLIENT_S_DN_CN} if $config{cgi};
my $envsave="";
foreach my $var (@envsave) {
$envsave.=<<"EOF";
my $envsave="";
foreach my $var (@envsave) {
$envsave.=<<"EOF";
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2009-01-10 23:23-0500\n"
+"POT-Creation-Date: 2009-01-11 01:24-0500\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
msgid "login failed, perhaps you need to turn on cookies?"
msgstr ""
msgid "login failed, perhaps you need to turn on cookies?"
msgstr ""
-#: ../IkiWiki/CGI.pm:167 ../IkiWiki/CGI.pm:285
+#: ../IkiWiki/CGI.pm:167 ../IkiWiki/CGI.pm:290
msgid "Your login session has expired."
msgstr ""
msgid "Your login session has expired."
msgstr ""
-#: ../IkiWiki/CGI.pm:231
+#: ../IkiWiki/CGI.pm:236
msgid "Preferences saved."
msgstr ""
msgid "Preferences saved."
msgstr ""
-#: ../IkiWiki/CGI.pm:246
+#: ../IkiWiki/CGI.pm:251
msgid "You are banned."
msgstr ""
msgid "You are banned."
msgstr ""
-#: ../IkiWiki/CGI.pm:376 ../IkiWiki/CGI.pm:377 ../IkiWiki.pm:1204
+#: ../IkiWiki/CGI.pm:381 ../IkiWiki/CGI.pm:382 ../IkiWiki.pm:1204
msgid "fortune failed"
msgstr ""
msgid "fortune failed"
msgstr ""
-#: ../IkiWiki/Plugin/git.pm:618 ../IkiWiki/Plugin/git.pm:636
+#: ../IkiWiki/Plugin/git.pm:620 ../IkiWiki/Plugin/git.pm:638
#: ../IkiWiki/Receive.pm:129
#, perl-format
msgid "you are not allowed to change %s"
msgstr ""
#: ../IkiWiki/Receive.pm:129
#, perl-format
msgid "you are not allowed to change %s"
msgstr ""
-#: ../IkiWiki/Plugin/git.pm:658
+#: ../IkiWiki/Plugin/git.pm:660
#, perl-format
msgid "you cannot act on a file with mode %s"
msgstr ""
#, perl-format
msgid "you cannot act on a file with mode %s"
msgstr ""
-#: ../IkiWiki/Plugin/git.pm:662
+#: ../IkiWiki/Plugin/git.pm:664
msgid "you are not allowed to change file modes"
msgstr ""
msgid "you are not allowed to change file modes"
msgstr ""