aboutsummaryrefslogtreecommitdiffstats
path: root/perllib/FixMyStreet/App/Controller/Admin.pm
diff options
context:
space:
mode:
Diffstat (limited to 'perllib/FixMyStreet/App/Controller/Admin.pm')
-rw-r--r--perllib/FixMyStreet/App/Controller/Admin.pm42
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