Skip to content

Commit 680789c

Browse files
authored
Switch to oauth2 authentication (#697)
* Switch to oauth2 authentication * Update ChangesetCommentAPI to use oauth2 * FIx comment api tests * Update social-user's extra_data param in tests * Update tests to oauth2 fields * Fix client.post and token check
1 parent 53e1ed1 commit 680789c

21 files changed

+206
-221
lines changed

config/settings/common.py

+8-6
Original file line numberDiff line numberDiff line change
@@ -254,14 +254,16 @@
254254
SOCIAL_AUTH_DEFAULT_USERNAME = lambda u: slugify(u)
255255
SOCIAL_AUTH_ASSOCIATE_BY_EMAIL = True
256256

257-
SOCIAL_AUTH_OPENSTREETMAP_KEY = env('OAUTH_OSM_KEY', default='')
258-
SOCIAL_AUTH_OPENSTREETMAP_SECRET = env('OAUTH_OSM_SECRET', default='')
257+
SOCIAL_AUTH_OPENSTREETMAP_OAUTH2_KEY = env("OAUTH2_OSM_KEY", default="")
258+
SOCIAL_AUTH_OPENSTREETMAP_OAUTH2_SECRET = env("OAUTH2_OSM_SECRET", default="")
259+
SOCIAL_AUTH_OPENSTREETMAP_OAUTH2_SCOPE = ["read_prefs", "write_api"]
260+
SOCIAL_AUTH_OPENSTREETMAP_OAUTH2_USE_PKCE = False
259261

260262
# AUTHENTICATION CONFIGURATION
261263
# ------------------------------------------------------------------------------
262264
AUTHENTICATION_BACKENDS = (
263-
'social_core.backends.openstreetmap.OpenStreetMapOAuth',
264-
'django.contrib.auth.backends.ModelBackend',
265+
"social_core.backends.openstreetmap_oauth2.OpenStreetMapOAuth2",
266+
"django.contrib.auth.backends.ModelBackend",
265267
)
266268

267269
SOCIAL_AUTH_PIPELINE = (
@@ -372,7 +374,7 @@
372374
# in OSM website
373375
OAUTH_REDIRECT_URI = env(
374376
'OAUTH_REDIRECT_URI',
375-
default='http://localhost:8000/oauth-landing.html'
377+
default='http://127.0.0.1:3000/oauth-landing.html'
376378
)
377379

378-
OSMCHA_URL = env('OSMCHA_URL', default='https://osmcha.org')
380+
OSMCHA_URL = env('OSMCHA_URL', default='https://osmcha.org')

osmchadjango/changeset/tasks.py

+12-9
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
from django.db.utils import IntegrityError
1414

1515
import requests
16-
from requests_oauthlib import OAuth1Session
16+
from requests_oauthlib import OAuth2Session
1717
from osmcha.changeset import Analyse, ChangesetList
1818

1919
from .models import Changeset, SuspicionReasons, Import
@@ -119,21 +119,24 @@ class ChangesetCommentAPI(object):
119119

120120
def __init__(self, user, changeset_id):
121121
self.changeset_id = changeset_id
122-
user_token = user.social_auth.all().first().access_token
123-
self.client = OAuth1Session(
124-
settings.SOCIAL_AUTH_OPENSTREETMAP_KEY,
125-
client_secret=settings.SOCIAL_AUTH_OPENSTREETMAP_SECRET,
126-
resource_owner_key=user_token["oauth_token"],
127-
resource_owner_secret=user_token["oauth_token_secret"],
122+
user_token = user.social_auth.all().first().extra_data
123+
user_token['token_type'] = 'Bearer'
124+
self.client = OAuth2Session(
125+
settings.SOCIAL_AUTH_OPENSTREETMAP_OAUTH2_KEY,
126+
token=user_token,
128127
)
129128
self.url = "{}/api/0.6/changeset/{}/comment/".format(
130129
settings.OSM_SERVER_URL, changeset_id
131130
)
132131

133132
def post_comment(self, message=None):
134133
"""Post comment to changeset."""
135-
response = self.client.post(
136-
self.url, data="text={}".format(quote(message)).encode("utf-8")
134+
response = self.client.request(
135+
'POST',
136+
self.url,
137+
data="text={}".format(quote(message)).encode("utf-8"),
138+
client_id=settings.SOCIAL_AUTH_OPENSTREETMAP_OAUTH2_KEY,
139+
client_secret=settings.SOCIAL_AUTH_OPENSTREETMAP_OAUTH2_SECRET
137140
)
138141
if response.status_code == 200:
139142
print(

osmchadjango/changeset/tests/test_add_feature_views.py

+4-4
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ def setUp(self):
2929
)
3030
UserSocialAuth.objects.create(
3131
user=self.user,
32-
provider='openstreetmap',
32+
provider='openstreetmap-oauth2',
3333
uid='123123'
3434
)
3535

@@ -41,7 +41,7 @@ def setUp(self):
4141
)
4242
UserSocialAuth.objects.create(
4343
user=self.staff_user,
44-
provider='openstreetmap',
44+
provider='openstreetmap-oauth2',
4545
uid='443324'
4646
)
4747

@@ -327,7 +327,7 @@ def setUp(self):
327327
)
328328
UserSocialAuth.objects.create(
329329
user=self.user,
330-
provider='openstreetmap',
330+
provider='openstreetmap-oauth2',
331331
uid='123123',
332332
)
333333
self.token = Token.objects.create(user=self.user)
@@ -370,7 +370,7 @@ def test_is_not_staff_user_request(self):
370370
)
371371
UserSocialAuth.objects.create(
372372
user=user,
373-
provider='openstreetmap',
373+
provider='openstreetmap-oauth2',
374374
uid='444444',
375375
)
376376
token = Token.objects.create(user=user)

osmchadjango/changeset/tests/test_changeset_views.py

+23-29
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ def setUp(self):
3030
)
3131
UserSocialAuth.objects.create(
3232
user=self.user,
33-
provider='openstreetmap',
33+
provider='openstreetmap-oauth2',
3434
uid='123123',
3535
)
3636
self.url = reverse('changeset:list')
@@ -313,7 +313,7 @@ def setUp(self):
313313
)
314314
UserSocialAuth.objects.create(
315315
user=self.user,
316-
provider='openstreetmap',
316+
provider='openstreetmap-oauth2',
317317
uid='123123',
318318
)
319319
self.client.login(username=self.user.username, password='password')
@@ -369,7 +369,7 @@ def setUp(self):
369369
)
370370
UserSocialAuth.objects.create(
371371
user=self.user,
372-
provider='openstreetmap',
372+
provider='openstreetmap-oauth2',
373373
uid='123123',
374374
)
375375
self.client.login(username=self.user.username, password='password')
@@ -509,7 +509,7 @@ def test_authenticated_changeset_detail_response(self):
509509
)
510510
UserSocialAuth.objects.create(
511511
user=self.user,
512-
provider='openstreetmap',
512+
provider='openstreetmap-oauth2',
513513
uid='123123',
514514
)
515515
self.client.login(username=self.user.username, password='password')
@@ -535,7 +535,7 @@ def test_changeset_detail_response_with_staff_user(self):
535535
)
536536
UserSocialAuth.objects.create(
537537
user=self.user,
538-
provider='openstreetmap',
538+
provider='openstreetmap-oauth2',
539539
uid='123123',
540540
)
541541
self.client.login(username=self.user.username, password='password')
@@ -564,7 +564,7 @@ def setUp(self):
564564
)
565565
UserSocialAuth.objects.create(
566566
user=self.admin_user,
567-
provider='openstreetmap',
567+
provider='openstreetmap-oauth2',
568568
uid='123123',
569569
)
570570
self.user = User.objects.create_user(
@@ -574,7 +574,7 @@ def setUp(self):
574574
)
575575
UserSocialAuth.objects.create(
576576
user=self.user,
577-
provider='openstreetmap',
577+
provider='openstreetmap-oauth2',
578578
uid='234312',
579579
)
580580
self.reason_1 = SuspicionReasons.objects.create(name='possible import')
@@ -724,14 +724,11 @@ def setUp(self):
724724
)
725725
UserSocialAuth.objects.create(
726726
user=self.user,
727-
provider='openstreetmap',
727+
provider='openstreetmap-oauth2',
728728
uid='123123',
729729
extra_data={
730730
'id': '123123',
731-
'access_token': {
732-
'oauth_token': 'aaaa',
733-
'oauth_token_secret': 'bbbb'
734-
}
731+
'access_token': '1shjasgw'
735732
}
736733
)
737734
self.tag_1 = TagFactory(name='Illegal import')
@@ -980,14 +977,11 @@ def setUp(self):
980977
)
981978
UserSocialAuth.objects.create(
982979
user=self.user,
983-
provider='openstreetmap',
980+
provider='openstreetmap-oauth2',
984981
uid='123123',
985982
extra_data={
986983
'id': '123123',
987-
'access_token': {
988-
'oauth_token': 'aaaa',
989-
'oauth_token_secret': 'bbbb'
990-
}
984+
'access_token': 'ajhsjhags'
991985
}
992986
)
993987
self.suspect_changeset = SuspectChangesetFactory()
@@ -1072,7 +1066,7 @@ def test_staff_user_uncheck_any_changeset(self):
10721066
)
10731067
UserSocialAuth.objects.create(
10741068
user=staff_user,
1075-
provider='openstreetmap',
1069+
provider='openstreetmap-oauth2',
10761070
uid='87873',
10771071
)
10781072
self.client.login(username=staff_user.username, password='password')
@@ -1101,7 +1095,7 @@ def setUp(self):
11011095
)
11021096
UserSocialAuth.objects.create(
11031097
user=self.user,
1104-
provider='openstreetmap',
1098+
provider='openstreetmap-oauth2',
11051099
uid='999',
11061100
)
11071101
self.changeset_user = User.objects.create_user(
@@ -1111,7 +1105,7 @@ def setUp(self):
11111105
)
11121106
UserSocialAuth.objects.create(
11131107
user=self.changeset_user,
1114-
provider='openstreetmap',
1108+
provider='openstreetmap-oauth2',
11151109
uid='123123',
11161110
)
11171111
self.changeset = ChangesetFactory()
@@ -1183,7 +1177,7 @@ def test_other_user_can_not_add_tag_to_checked_changeset(self):
11831177
)
11841178
UserSocialAuth.objects.create(
11851179
user=other_user,
1186-
provider='openstreetmap',
1180+
provider='openstreetmap-oauth2',
11871181
uid='28763',
11881182
)
11891183
self.client.login(username=other_user.username, password='password')
@@ -1203,7 +1197,7 @@ def test_staff_user_add_tag_to_checked_changeset(self):
12031197
)
12041198
UserSocialAuth.objects.create(
12051199
user=staff_user,
1206-
provider='openstreetmap',
1200+
provider='openstreetmap-oauth2',
12071201
uid='28763',
12081202
)
12091203
self.client.login(username=staff_user.username, password='password')
@@ -1224,7 +1218,7 @@ def setUp(self):
12241218
)
12251219
UserSocialAuth.objects.create(
12261220
user=self.user,
1227-
provider='openstreetmap',
1221+
provider='openstreetmap-oauth2',
12281222
uid='999',
12291223
)
12301224
self.changeset_user = User.objects.create_user(
@@ -1234,7 +1228,7 @@ def setUp(self):
12341228
)
12351229
UserSocialAuth.objects.create(
12361230
user=self.changeset_user,
1237-
provider='openstreetmap',
1231+
provider='openstreetmap-oauth2',
12381232
uid='123123',
12391233
)
12401234
self.changeset = ChangesetFactory()
@@ -1298,7 +1292,7 @@ def test_other_user_can_not_remove_tag_to_checked_changeset(self):
12981292
)
12991293
UserSocialAuth.objects.create(
13001294
user=other_user,
1301-
provider='openstreetmap',
1295+
provider='openstreetmap-oauth2',
13021296
uid='28763',
13031297
)
13041298
self.client.login(username=other_user.username, password='password')
@@ -1318,7 +1312,7 @@ def test_staff_user_remove_tag_to_checked_changeset(self):
13181312
)
13191313
UserSocialAuth.objects.create(
13201314
user=staff_user,
1321-
provider='openstreetmap',
1315+
provider='openstreetmap-oauth2',
13221316
uid='28763',
13231317
)
13241318
self.client.login(username=staff_user.username, password='password')
@@ -1341,7 +1335,7 @@ def setUp(self):
13411335
)
13421336
UserSocialAuth.objects.create(
13431337
user=self.user,
1344-
provider='openstreetmap',
1338+
provider='openstreetmap-oauth2',
13451339
uid='123123',
13461340
)
13471341

@@ -1390,7 +1384,7 @@ def test_set_good_by_staff_user(self):
13901384
)
13911385
UserSocialAuth.objects.create(
13921386
user=user,
1393-
provider='openstreetmap',
1387+
provider='openstreetmap-oauth2',
13941388
uid='8987',
13951389
)
13961390
self.client.login(username=user.username, password='password')
@@ -1411,7 +1405,7 @@ def test_set_harmful_by_staff_user(self):
14111405
)
14121406
UserSocialAuth.objects.create(
14131407
user=user,
1414-
provider='openstreetmap',
1408+
provider='openstreetmap-oauth2',
14151409
uid='8987',
14161410
)
14171411
self.client.login(username=user.username, password='password')

0 commit comments

Comments
 (0)