summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergey Poznyakoff <gray@gnu.org>2017-10-09 18:21:40 +0200
committerSergey Poznyakoff <gray@gnu.org>2017-10-09 18:21:40 +0200
commit1a4e8dca80adf51815652d2ee7488bb65a1f11f8 (patch)
treef3eb9d3e4eebcc2d641367af9e21e4844c163d4b
parent4567ecc4c8d131fdbf4fa00566306e9c28969fa4 (diff)
downloadsourceyard-1a4e8dca80adf51815652d2ee7488bb65a1f11f8.tar.gz
sourceyard-1a4e8dca80adf51815652d2ee7488bb65a1f11f8.tar.bz2
Fix checking for existing accounts during registration
* lib/Sourceyard/User/Template.pm: Fix overloaded methods. * lib/Sourceyard/Controller.pm (user_for_hash): Use the single method, instead of search->first. * lib/Sourceyard/User.pm: Likewise.
-rw-r--r--lib/Sourceyard/Controller.pm4
-rw-r--r--lib/Sourceyard/User.pm2
-rw-r--r--lib/Sourceyard/User/Template.pm24
3 files changed, 21 insertions, 9 deletions
diff --git a/lib/Sourceyard/Controller.pm b/lib/Sourceyard/Controller.pm
index c6dcad1..2886539 100644
--- a/lib/Sourceyard/Controller.pm
+++ b/lib/Sourceyard/Controller.pm
@@ -71,8 +71,8 @@ sub user_for_hash {
# $self->db->storage->datetime_parser->format_datetime($dt);
$ENV{DBIC_DT_SEARCH_OK} = 1;
my $ch = $self->db->resultset('ConfirmHash')
- ->search({ confirm_hash => $hash,
- date => { '>=', $dt } })->first;
+ ->single({ confirm_hash => $hash,
+ date => { '>=', $dt } });
$ENV{DBIC_DT_SEARCH_OK} = 0;
return $ch->user_id
if ($ch);
diff --git a/lib/Sourceyard/User.pm b/lib/Sourceyard/User.pm
index ce4b5ff..a584e59 100644
--- a/lib/Sourceyard/User.pm
+++ b/lib/Sourceyard/User.pm
@@ -54,7 +54,7 @@ sub new {
};
croak "bad number of arguments" if @_;
}
- my $obj = $c->db->resultset('User')->search($cond)->first;
+ my $obj = $c->db->resultset('User')->single($cond);
return undef unless $obj;
my $self = bless $obj, $class;
$self->controller($c);
diff --git a/lib/Sourceyard/User/Template.pm b/lib/Sourceyard/User/Template.pm
index 661c629..243fbc0 100644
--- a/lib/Sourceyard/User/Template.pm
+++ b/lib/Sourceyard/User/Template.pm
@@ -24,13 +24,13 @@ sub user {
}
sub _validate_username {
- my ($self, $name) = @_;
- my $res = $self->SUPER::_validate_username($name);
+ my ($self) = @_;
+ my $res = $self->SUPER::_validate_username();
if ($res) {
if ($self->controller
->db
->resultset('User')
- ->search({ user_name => $name })->first) {
+ ->single({ user_name => $self->username })) {
$self->error(username => 'Username already exists');
return 0;
}
@@ -39,14 +39,26 @@ sub _validate_username {
}
sub _validate_password {
- my ($self, $pass) = @_;
- my $res = $self->SUPER::_validate_password($pass);
- if ($res && $self->user && $self->user->user_pw->check($pass)) {
+ my ($self) = @_;
+ my $res = $self->SUPER::_validate_password();
+ if ($res && $self->user && $self->user->user_pw->check($self->password)) {
$self->error(password => "Password didn't change");
return 0;
}
return $res;
}
+sub _validate_email {
+ my ($self) = @_;
+ my $res = $self->SUPER::_validate_email;
+ if ($res && $self->controller
+ ->db
+ ->resultset('User')
+ ->single({ email => $self->email })) {
+ $self->error(email => "A user with this email already exists");
+ return 0;
+ }
+ return $res;
+}
1;

Return to:

Send suggestions and report system problems to the System administrator.