diff options
author | Zarino Zappia <mail@zarino.co.uk> | 2016-10-13 14:22:27 +0100 |
---|---|---|
committer | Matthew Somerville <matthew-github@dracos.co.uk> | 2017-05-31 16:55:17 +0100 |
commit | 6b9bd2aaeb12a9514619b433895469ede7f4d98b (patch) | |
tree | 860b6116bc9908e008d27da4ab8c42899302ff48 /perllib/FixMyStreet/App/Controller/My.pm | |
parent | a752a967ffd846e2ea6eb7f6a4789b0bf1a8dbf0 (diff) |
Allow users to hide their name on reports/updates.
Diffstat (limited to 'perllib/FixMyStreet/App/Controller/My.pm')
-rw-r--r-- | perllib/FixMyStreet/App/Controller/My.pm | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/perllib/FixMyStreet/App/Controller/My.pm b/perllib/FixMyStreet/App/Controller/My.pm index 0eb1ad3f1..6fee25ec5 100644 --- a/perllib/FixMyStreet/App/Controller/My.pm +++ b/perllib/FixMyStreet/App/Controller/My.pm @@ -234,6 +234,38 @@ sub by_shortlisted { } } +sub anonymize : Path('anonymize') { + my ($self, $c) = @_; + $c->forward('/auth/get_csrf_token'); + + my $object; + if (my $id = $c->get_param('problem')) { + $c->forward( '/report/load_problem_or_display_error', [ $id ] ); + $object = $c->stash->{problem}; + } elsif ($id = $c->get_param('update')) { + $c->stash->{update} = $object = $c->model('DB::Comment')->find({ id => $id }); + $c->detach('/page_error_400_bad_request') unless $object; + } else { + $c->detach('/page_error_404_not_found'); + } + $c->detach('/page_error_400_bad_request') unless $c->user->id == $object->user_id; + $c->detach('/page_error_400_bad_request') if $object->anonymous; + + if ($c->get_param('hide') || $c->get_param('hide_everywhere')) { + $c->detach('/page_error_400_bad_request') unless $c->req->method eq 'POST'; + $c->forward('/auth/check_csrf_token'); + if ($c->get_param('hide')) { + $object->update({ anonymous => 1 }); + $c->flash->{anonymized} = _('Your name has been hidden.'); + } elsif ($c->get_param('hide_everywhere')) { + $c->user->problems->update({anonymous => 1}); + $c->user->comments->update({anonymous => 1}); + $c->flash->{anonymized} = _('Your name has been hidden from all your reports and updates.'); + } + $c->res->redirect($object->url); + } +} + __PACKAGE__->meta->make_immutable; 1; |