aboutsummaryrefslogtreecommitdiffstats
path: root/perllib
diff options
context:
space:
mode:
authorZarino Zappia <mail@zarino.co.uk>2016-10-13 14:22:27 +0100
committerMatthew Somerville <matthew-github@dracos.co.uk>2017-05-31 16:55:17 +0100
commit6b9bd2aaeb12a9514619b433895469ede7f4d98b (patch)
tree860b6116bc9908e008d27da4ab8c42899302ff48 /perllib
parenta752a967ffd846e2ea6eb7f6a4789b0bf1a8dbf0 (diff)
Allow users to hide their name on reports/updates.
Diffstat (limited to 'perllib')
-rw-r--r--perllib/FixMyStreet/App/Controller/My.pm32
-rw-r--r--perllib/FixMyStreet/App/Controller/Report.pm6
2 files changed, 36 insertions, 2 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;
diff --git a/perllib/FixMyStreet/App/Controller/Report.pm b/perllib/FixMyStreet/App/Controller/Report.pm
index b6978424f..368bbcf27 100644
--- a/perllib/FixMyStreet/App/Controller/Report.pm
+++ b/perllib/FixMyStreet/App/Controller/Report.pm
@@ -181,8 +181,10 @@ sub load_updates : Private {
@combined = map { $_->[1] } sort { $a->[0] <=> $b->[0] } @combined;
$c->stash->{updates} = \@combined;
- if ($c->sessionid && $c->flash->{alert_to_reporter}) {
- $c->stash->{alert_to_reporter} = 1;
+ if ($c->sessionid) {
+ foreach (qw(alert_to_reporter anonymized)) {
+ $c->stash->{$_} = $c->flash->{$_} if $c->flash->{$_};
+ }
}
return 1;