diff options
author | Dave Arter <davea@mysociety.org> | 2016-09-14 10:52:08 +0100 |
---|---|---|
committer | Dave Arter <davea@mysociety.org> | 2016-09-20 16:07:09 +0100 |
commit | b01df0c7609a1d6c008b943a9936d471cf0e0ce3 (patch) | |
tree | 150199d93afb6ad71a6d7cb921eaff81dd07f63b /perllib/FixMyStreet/DB/Result/User.pm | |
parent | 6f623cbb0c055fb4ae7f1a3639edaa212fc55392 (diff) |
Remove from_body requirement from User::has_permission_to
Diffstat (limited to 'perllib/FixMyStreet/DB/Result/User.pm')
-rw-r--r-- | perllib/FixMyStreet/DB/Result/User.pm | 12 |
1 files changed, 5 insertions, 7 deletions
diff --git a/perllib/FixMyStreet/DB/Result/User.pm b/perllib/FixMyStreet/DB/Result/User.pm index 0ba7e252c..56196c7c0 100644 --- a/perllib/FixMyStreet/DB/Result/User.pm +++ b/perllib/FixMyStreet/DB/Result/User.pm @@ -257,15 +257,14 @@ sub permissions { } sub has_permission_to { - my ($self, $permission_type, $body_id) = @_; + my ($self, $permission_type, $body_ids) = @_; return 1 if $self->is_superuser; + return 0 unless $body_ids; - return 0 unless $self->belongs_to_body($body_id); - - my $permission = $self->user_body_permissions->find({ + my $permission = $self->user_body_permissions->find({ permission_type => $permission_type, - body_id => $self->from_body->id, + body_id => $body_ids, }); return $permission ? 1 : 0; } @@ -295,8 +294,7 @@ sub has_body_permission_to { sub contributing_as { my ($self, $other, $c, $bodies) = @_; - $bodies = join(',', keys %$bodies) if ref $bodies eq 'HASH'; - $c->log->error("Bad data $bodies passed to contributing_as") if ref $bodies; + $bodies = [ keys %$bodies ] if ref $bodies eq 'HASH'; my $form_as = $c->get_param('form_as') || ''; return 1 if $form_as eq $other && $self->has_permission_to("contribute_as_$other", $bodies); } |