diff options
-rw-r--r-- | ChangeLog | 3 | ||||
-rw-r--r-- | data/lang.txt | 21 | ||||
-rw-r--r-- | lib/VNDB/Handler/Users.pm | 13 |
3 files changed, 34 insertions, 3 deletions
@@ -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; } |