*** wiki.cgi.ORIG Tue Oct 25 12:17:21 2005 --- wiki.cgi Thu Nov 3 04:23:40 2005 *************** *** 1409,1414 **** --- 1409,1417 ---- $result .= ' | <a href="http://sunir.org/apps/meta.pl?' . $id . '">' . T('Search MetaWiki') . '</a>'; } + # 2005-10-29 JK + $result .= Ts(' | login=%s', ($UserID > 199 ? $UserData{'username'}."($UserID)" : '<anonymous>')); + if ($Section{'revision'} > 0) { $result .= '<br>'; if ($rev eq '') { # Only for most current rev *************** *** 3620,3645 **** print &GetHeader('', T('Login'), ""); print &GetFormStart(); print &GetHiddenValue('enter_login', 1), "\n"; ! print '<br>', T('User ID number:'), ' ', $q->textfield(-name=>'p_userid', -value=>'', -size=>15, -maxlength=>50); print '<br>', T('Password:'), ' ', $q->password_field(-name=>'p_password', -value=>'', -size=>15, -maxlength=>50); print '<br>', $q->submit(-name=>'Login', -value=>T('Login')), "\n"; print "<hr class=wikilinefooter>\n"; print &GetGotoBar(''); - print $q->endform; print &GetMinimumFooter(); } sub DoLogin { my ($uid, $password, $success); $success = 0; $uid = &GetParam("p_userid", ""); $uid =~ s/\D//g; ! $password = &GetParam("p_password", ""); if (($uid > 199) && ($password ne "") && ($password ne "*")) { $UserID = $uid; &LoadUserData(); --- 3623,3678 ---- print &GetHeader('', T('Login'), ""); print &GetFormStart(); print &GetHiddenValue('enter_login', 1), "\n"; ! # 2005-10-29, 2005-11-02 JK ! print '<br>', T('User Name:'), ' ', ! $q->textfield(-name=>'p_username', -value=>'', ! -size=>20, -maxlength=>50); ! print ' or ', T('User ID number:'), ' ', $q->textfield(-name=>'p_userid', -value=>'', -size=>15, -maxlength=>50); print '<br>', T('Password:'), ' ', $q->password_field(-name=>'p_password', -value=>'', -size=>15, -maxlength=>50); print '<br>', $q->submit(-name=>'Login', -value=>T('Login')), "\n"; + print $q->endform; + print &GetFormStart(); + print &GetHiddenValue('enter_login', 1), "\n"; + print '<br>', $q->submit(-name=>'Login', -value=>T('Logout')), "\n"; + print $q->endform; print "<hr class=wikilinefooter>\n"; print &GetGotoBar(''); print &GetMinimumFooter(); } sub DoLogin { my ($uid, $password, $success); + my ($found, %userattr, $status, $data); $success = 0; + $password = &GetParam("p_password", ""); + + # 2005-10-29 JK + my $uname = &GetParam("p_username", ""); + if ($uname) { + foreach my $userdata (glob "$UserDir/?/*.db") { + ($status, $data) = &ReadFile($userdata); + if ($status) { + %userattr = split(/$FS1/, $data, -1); # -1 keeps trailing null fields + if ($userattr{'username'} eq $uname) { + $uid = $userattr{'id'}; + if (defined($userattr{'password'}) && + ($userattr{'password'} eq $password)) { + $found=1; + last; + } + } + } + } + } + if (! $found ) { $uid = &GetParam("p_userid", ""); $uid =~ s/\D//g; ! } if (($uid > 199) && ($password ne "") && ($password ne "*")) { $UserID = $uid; &LoadUserData(); *************** *** 3653,3663 **** } } } - print &GetHeader('', T('Login Results'), ''); if ($success) { ! print Ts('Login for user ID %s complete.', $uid); ! } else { ! print Ts('Login for user ID %s failed.', $uid); } print "<hr class=wikilinefooter>\n"; print &GetGotoBar(''); --- 3686,3709 ---- } } } if ($success) { ! print &GetHeader('', T('Login Results'), ''); ! print Ts('Login for user %s ', $UserData{'username'}); ! print Ts('with ID %s complete.', $uid); ! } else { ! # logout if neither user ID nor username is given ! if (! $uid && ! $uname) { ! $SetCookie{'id'} = 0; ! $SetCookie{'randkey'} = 0; ! $SetCookie{'rev'} = 1; ! print &GetHeader('', T('Logout'), ''); ! print T('Logged out.'); ! } ! else { ! print &GetHeader('', T('Login Results'), ''); ! print Ts('Login for user ID %s failed.', $uid); ! print "UserID=$uid \n"; ! } } print "<hr class=wikilinefooter>\n"; print &GetGotoBar('');