Commit graph

162 commits

Author SHA1 Message Date
Andy Allan
71b21ec473 Rework capabilities to avoid assumptions about missing tokens
The logic about missing tokens implying logged in users (and that
all logged in users have access to any method protected by a token
capability) is correct. However, I believe it is both confusing and
brittle, and leaves a security-related door ajar for future foot-gun
incidents.

Instead, apply Abilities as normal, and keep the Capabilities
involvement only for situations where a token is provided. This
reduces the cognitive burden when considering Abilities in isolation.
2018-10-24 12:07:00 +02:00
Andy Allan
f8f7ab1568 Change abilities based on upstream renamings 2018-10-10 11:41:16 +02:00
Andy Allan
420a7289a0 Merge branch 'authz' of https://github.com/rubyforgood/openstreetmap-website into rubyforgood-authz 2018-10-10 11:26:30 +02:00
Xuyang Jia
d0e45c7c8e Fix any_relations always being false
Closes #1976
2018-09-22 17:46:00 +01:00
Wil
a182820139 Resolve 96 Rubocop Lint/AmbiguousRegexpLiteral conflicts 2018-09-10 11:28:16 +08:00
Tom Hughes
f7a35c5895 Fix new rubocop warnings 2018-06-18 09:00:49 +01:00
Chris Flipse
25256a4849 Make rubocop happy 2018-06-17 20:40:48 -04:00
Chris Flipse
91fc65a2e3 separate ability and capability
These are asking fundamentally different questions;

Abilities are asking the application if the user has a role that allows
the user to take a certain action
Capabilities are asking if the user has granted the application to
perform a certain type of action

CanCanCan makes no distinction, however, so the `granted_capabilities`
method is provided as a point that can be checked in rescue methods, so
that one can _attempt_ to continue to provide the more informative error
messages around permission refusals
2018-06-17 13:57:32 -04:00
Benjamin Reynolds
4d20a2c96a Authorize actions on GeocoderController with CanCanCan Ability 2018-06-17 13:57:06 -04:00
Chris Flipse
464c7f863e Update capabilities check to actually reflect the existing logic
The OAuth capabilities are essentially user permissions that have been
granted to the app.  If the user authenticates through a non-oauth
method, they are assumed to have granted all capabilities to the app
2018-06-17 13:57:06 -04:00
Chris Flipse
2a44ff581f fix and improve ability coverage to account for tokens 2018-06-17 13:57:06 -04:00
Chris Flipse
060c686c19 Use cancancan to authorize user_preference_controller 2018-06-17 13:57:06 -04:00
Chris Flipse
5232914427 Implement the cancan filters for diary entries
Access logic is not _entirely_ exported from the controller,
unfortunately.  For interface reasons, some actions which require admin
have to be listed within the controller's deny_access method.

This is required because, being a default-deny system, cancancan
_cannot_ tell you the reason you were denied access; and so
the "nice" feedback presenting next steps can't be gleaned from
the exception
2018-06-17 13:57:06 -04:00
Chris Flipse
6da3ece683 use token in ability checks 2018-06-17 13:56:23 -04:00
Tom Hughes
e5604ce98e Assign vandalism reports for users to moderators 2018-06-17 11:14:19 +01:00
Tom Hughes
518cf69b34 Improve model tests for issues 2018-06-10 17:59:15 +01:00
Tom Hughes
d3700e6201 Merge branch 'master' into next 2018-06-10 17:02:12 +01:00
Tom Hughes
cb3c4ec09b Update for rubocop 0.54.0 2018-05-17 19:39:25 +01:00
Andy Allan
46c183ffeb Add more tests 2018-03-28 11:05:47 +08:00
Andy Allan
3006ce9713 Remove reporting of changesets 2018-02-28 14:39:40 +08:00
Andy Allan
63992d83bd Store the report category. 2017-12-13 16:02:55 +00:00
Andy Allan
0df788d742 Rename 'issue_type' to 'assigned_role', set defaults in the model and test. 2017-12-06 17:15:11 +00:00
Andy Allan
9f65820336 Rubocop fixes. 2017-11-29 16:48:01 +00:00
Andy Allan
effb1b7f41 Merge branch 'master' into moderation 2017-11-29 12:18:39 +00:00
Tom Hughes
b6b9d543ac Fix rubocop warnings 2017-10-29 19:43:02 +00:00
Tom Hughes
8dae890a76 Fix rubocop warnings 2017-10-05 19:18:38 +01:00
Andy Allan
c00c515d9d Ensure report details are not blank. 2017-09-06 18:17:54 +01:00
Andy Allan
506c0b5f0d Set the reported_user in a callback
This avoids passing around the reported_user via forms. There was no
validation anywhere that the reported_user corresponded to the object
being reported. This approach removes those worries too.
2017-07-12 13:36:48 +01:00
Andy Allan
dbd88d893f Merge branch 'master' into moderation 2017-07-12 10:16:11 +01:00
Andy Allan
396f2e28dd Rework coordinates to avoid scientific formatting of small numbers. Fixes #1509 2017-06-23 14:03:57 +01:00
Tom Hughes
b00b9ce626 Remove arguments from assert_nothing_raised
It has never done anything with the argument and rails 5.0 warns
that rails 5.1 will remove the argument.
2017-06-02 16:33:34 +01:00
Tom Hughes
5b33f3f8e3 Fix rubocop warnings 2017-06-02 00:08:30 +01:00
Andy Allan
86822ea225 Remove remaining references to fixtures. 2017-06-01 11:00:50 +01:00
Andy Allan
5d0ea28796 Remove the api_fixtures helper
This is no longer required, as the tests no longer use fixtures.
2017-06-01 10:59:48 +01:00
Andy Allan
aacc4bbc44 Refactor changeset tags model test to remove dependency on fixtures. 2017-05-31 16:49:17 +01:00
Andy Allan
e9fa94bce2 Refactor remaining relation model tests to use factories. 2017-05-31 14:59:11 +01:00
Andy Allan
3ef6fa4aa9 Refactor remaining way model tests to use factories. 2017-05-31 14:17:25 +01:00
Andy Allan
2e8c0d471f Ensure invisible_way is actually deleted 2017-05-17 16:05:23 +01:00
Andy Allan
084ae0f191 Refactor get_nodes_undelete test to use factories instead of fixtures. 2017-05-17 10:30:28 +01:00
Andy Allan
e69e8c9018 Refactor remaining way model tests to use factories.
Note that test_max_nodes_per_way_limit still has issues - see #1516
2017-05-17 09:56:44 +01:00
Andy Allan
805abe96d0 Create an old_way_node factory, and start using it for tests. 2017-04-25 16:29:13 +02:00
Andy Allan
05a42281ab Create an old_way factory, and start using it for tests. 2017-04-25 16:29:13 +02:00
Andy Allan
b46028b4f7 Create an old_relation_member factory, and start using it for tests. 2017-04-25 16:29:13 +02:00
Andy Allan
27c3edae25 Create an old_relation factory, and start using it for tests. 2017-04-25 15:19:25 +02:00
Andy Allan
b375050e6c Use node and relation_member factories for testing containing_relations and containing_relation_members 2017-04-05 11:33:33 +01:00
Tom Hughes
66d74a8c2c Merge remote-tracking branch 'openstreetmap/pull/1507' 2017-03-30 15:18:14 +01:00
Andy Allan
4fb775d6d5 Format latitudes and longitudes as %7f in XML output
This matches the double formatting in XML from cgimap. Fixes #341.
2017-03-30 14:30:54 +01:00
Andy Allan
5a0ba2e812 Add a with_history trait for node factories, to automatically create corresponding old_nodes 2017-03-30 09:31:22 +01:00
Tom Hughes
8a565061e3 Add explicit tests for lat/lon methods on node models 2017-03-22 20:43:39 +00:00
Tom Hughes
b78bb9f631 Merge remote-tracking branch 'openstreetmap/pull/1496' 2017-03-22 19:19:59 +00:00