diff options
Diffstat (limited to 'perllib/FixMyStreet/App/Controller/Admin.pm')
-rw-r--r-- | perllib/FixMyStreet/App/Controller/Admin.pm | 42 |
1 files changed, 35 insertions, 7 deletions
diff --git a/perllib/FixMyStreet/App/Controller/Admin.pm b/perllib/FixMyStreet/App/Controller/Admin.pm index 82041a6b1..27aeb9e5b 100644 --- a/perllib/FixMyStreet/App/Controller/Admin.pm +++ b/perllib/FixMyStreet/App/Controller/Admin.pm @@ -608,9 +608,12 @@ sub edit_body : Chained('body') : PathPart('') : Args(0) { $c->set_param('posted', ''); $c->forward('fetch_translations'); - $c->forward('fetch_contacts'); + # don't set this last as fetch_contacts might over-ride it + # to display email addresses as text $c->stash->{template} = 'admin/body.html'; + $c->forward('fetch_contacts'); + return 1; } @@ -1412,6 +1415,7 @@ sub user_edit : Path('user_edit') : Args(1) { } $c->stash->{user} = $user; + $c->forward( 'check_username_for_abuse', [ $user ] ); if ( $user->from_body && $c->user->has_permission_to('user_manage_permissions', $user->from_body->id) ) { $c->stash->{available_permissions} = $c->cobrand->available_permissions; @@ -1425,11 +1429,15 @@ sub user_edit : Path('user_edit') : Args(1) { '<p><em>' . $c->flash->{status_message} . '</em></p>'; } - if ( $c->get_param('submit') ) { + if ( $c->get_param('submit') and $c->get_param('unban') ) { + $c->forward('/auth/check_csrf_token'); + $c->forward('unban_user', [ $user ]); + } elsif ( $c->get_param('submit') ) { $c->forward('/auth/check_csrf_token'); my $edited = 0; + my $name = $c->get_param('name'); my $email = lc $c->get_param('email'); my $phone = $c->get_param('phone'); my $email_v = $c->get_param('email_verified') || 0; @@ -1452,7 +1460,7 @@ sub user_edit : Path('user_edit') : Args(1) { $phone = $parsed_phone if $parsed_phone; } - unless ($user->name) { + unless ($name) { $c->stash->{field_errors}->{name} = _('Please enter a name'); } @@ -1471,7 +1479,7 @@ sub user_edit : Path('user_edit') : Args(1) { return if %{$c->stash->{field_errors}}; if ( ($user->email || "") ne $email || - $user->name ne $c->get_param('name') || + $user->name ne $name || ($user->phone || "") ne $phone || ($user->from_body && $c->get_param('body') && $user->from_body->id ne $c->get_param('body')) || (!$user->from_body && $c->get_param('body')) @@ -1489,7 +1497,7 @@ sub user_edit : Path('user_edit') : Args(1) { $user->phone($phone) if !$existing_phone; $user->email_verified( $email_v ); $user->phone_verified( $phone_v ); - $user->name( $c->get_param('name') ); + $user->name( $name ); $user->flagged( $c->get_param('flagged') || 0 ); # Only superusers can grant superuser status @@ -1870,6 +1878,28 @@ sub ban_user : Private { return 1; } +sub unban_user : Private { + my ( $self, $c, $user ) = @_; + + my @username; + if ($user->email_verified && $user->email) { + push @username, $user->email; + } + if ($user->phone_verified && $user->phone) { + push @username, $user->phone; + } + if (@username) { + my $abuse = $c->model('DB::Abuse')->search({ email => \@username }); + if ( $abuse ) { + $abuse->delete; + $c->stash->{status_message} = _('user removed from abuse list'); + } else { + $c->stash->{status_message} = _('user not in abuse list'); + } + $c->stash->{username_in_abuse} = 0; + } +} + =head2 flag_user Sets the flag on a user @@ -1941,8 +1971,6 @@ sub check_username_for_abuse : Private { my $is_abuse = $c->model('DB::Abuse')->find({ email => [ $user->phone, $user->email ] }); $c->stash->{username_in_abuse} = 1 if $is_abuse; - - return 1; } =head2 rotate_photo |