summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog3
-rw-r--r--data/lang.txt21
-rw-r--r--lib/VNDB/Handler/Users.pm13
3 files changed, 34 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog
index 43906ae3..739762f9 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -2,11 +2,12 @@
- Added 'formcode' parameter to all modification requests to fix all
cross-site request forgery vulnerabilities
- URL change: /u/logout => /u$id/logout
- - Bugfix: delete/update all references when deleting a user
+ - Added human confirmation question to the register page
- Optimized SQL queries:
- dbScreenshotRandom()
- dbVNGet() with random ordering
- dbRevisionGet() (in most cases)
+ - Bugfix: delete/update all references when deleting a user
2.12 - 2010-11-03
- !scr command for Multi::IRC
diff --git a/data/lang.txt b/data/lang.txt
index c2514330..33f29aa9 100644
--- a/data/lang.txt
+++ b/data/lang.txt
@@ -1269,6 +1269,13 @@ cs : V rámci 24 hodin si lze z jedné IP adresy zaregistrovat pouze jeden úče
hu : 24 óra alatt csak egy fiókot hozhatsz létre ugyanazzal az IP-vel
nl : Per dag mag je maar één account aanmaken vanaf hetzelfde IP
+:_formerr_e_notanswer
+en : Question was not correctly answered. Are you sure you are a human?
+ru*:
+cs*:
+hu*:
+nl : Vraag was incorrect beantwoord. Weet je zeker dat je een mens bent?
+
:_formerr_e_nochanges
en : No changes, please don't create an entry that is fully identical to another
ru : Изменения отсутствуют, пожалуйста, не создавайте идентичных копий записей
@@ -5152,6 +5159,20 @@ cs : Potvrdit heslo
hu : Jelszó megerősítése
nl : Herhaal wachtwoord
+:_register_question
+en : How many [index,_1,visual novels,releases,producers] do we have in the database? (Hint: look at your left)
+ru*:
+cs*:
+hu*:
+nl : Hoeveel [index,_1,visual novels,uitgaven,producenten] hebben wij in de database? (Tip: zie links van de pagina)
+
+:_register_answer
+en : Answer
+ru*:
+cs*:
+hu*:
+nl : Antwoord
+
# User edit (/u+/edit)
diff --git a/lib/VNDB/Handler/Users.pm b/lib/VNDB/Handler/Users.pm
index 70b1ea71..bfd33d08 100644
--- a/lib/VNDB/Handler/Users.pm
+++ b/lib/VNDB/Handler/Users.pm
@@ -5,6 +5,7 @@ use strict;
use warnings;
use YAWF ':html', 'xml_escape';
use VNDB::Func;
+use POSIX 'floor';
YAWF::register(
@@ -229,11 +230,15 @@ sub register {
if($self->reqMethod eq 'POST') {
return if !$self->authCheckCode;
$frm = $self->formValidate(
- { name => 'usrname', template => 'pname', minlength => 2, maxlength => 15 },
- { name => 'mail', template => 'mail' },
+ { name => 'usrname', template => 'pname', minlength => 2, maxlength => 15 },
+ { name => 'mail', template => 'mail' },
{ name => 'usrpass', minlength => 4, maxlength => 64, template => 'asciiprint' },
{ name => 'usrpass2', minlength => 4, maxlength => 64, template => 'asciiprint' },
+ { name => 'type', regex => [ qr/^[1-3]$/ ] },
+ { name => 'answer', template => 'int' },
);
+ my $num = $self->{stats}{[qw|vn releases producers|]->[ $frm->{type} - 1 ]};
+ push @{$frm->{_err}}, 'notanswer' if !$frm->{_err} && ($frm->{answer} > $num || $frm->{answer} < $num*0.995);
push @{$frm->{_err}}, 'passmatch' if $frm->{usrpass} ne $frm->{usrpass2};
push @{$frm->{_err}}, 'usrexists' if $frm->{usrname} eq 'anonymous' || !$frm->{_err} && $self->dbUserGet(username => $frm->{usrname})->[0]{id};
push @{$frm->{_err}}, 'mailexists' if !$frm->{_err} && $self->dbUserGet(mail => $frm->{mail})->[0]{id};
@@ -255,13 +260,17 @@ sub register {
end;
end;
+ my $type = $frm->{type} || floor(rand 3)+1;
$self->htmlForm({ frm => $frm, action => '/u/register' }, register => [ mt('_register_form_title'),
+ [ hidden => short => 'type', value => $type ],
[ input => short => 'usrname', name => mt '_register_username' ],
[ static => content => mt '_register_username_msg' ],
[ input => short => 'mail', name => mt '_register_mail' ],
[ static => content => mt('_register_mail_msg').'<br /><br />' ],
[ passwd => short => 'usrpass', name => mt('_register_password') ],
[ passwd => short => 'usrpass2', name => mt('_register_confirm') ],
+ [ static => content => '<br /><br />'.mt('_register_question', $type-1) ],
+ [ input => short => 'answer', name => mt '_register_answer' ],
]);
$self->htmlFooter;
}