Skip to content

Commit 1905499

Browse files
authored
Merge pull request #332 from aarranz/feature/fiware-admin-rol
Create super users in WireCloud if the IDM user has the admin role
2 parents 3d35795 + cf7e99b commit 1905499

2 files changed

Lines changed: 32 additions & 7 deletions

File tree

src/wirecloud/fiware/social_auth_backend.py

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
# -*- coding: utf-8 -*-
22

33
# Copyright (c) 2013-2017 Conwet Lab., Universidad Politécnica de Madrid
4+
# Copyright (c) 2018 Future Internet Consulting and Development Solutions S.L.
45

56
# This file is part of Wirecloud.
67

@@ -113,11 +114,17 @@ def get_user_details(self, response):
113114
first_name, last_name = name.split(' ', 1)
114115
else:
115116
first_name = name
116-
return {'username': response.get('username'),
117-
'email': response.get('email') or '',
118-
'fullname': name,
119-
'first_name': first_name,
120-
'last_name': last_name}
117+
118+
superuser = any(rol['name'].strip().lower() == "admin" for rol in response.get("roles", []))
119+
return {
120+
'username': response.get('username'),
121+
'email': response.get('email') or '',
122+
'fullname': name,
123+
'first_name': first_name,
124+
'last_name': last_name,
125+
'is_superuser': superuser,
126+
'is_staff': superuser
127+
}
121128

122129
def request_user_info(self, access_token):
123130
response = self.request(url=self.USER_DATA_URL, params={'access_token': access_token})

src/wirecloud/fiware/tests/social_backend.py

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
# -*- coding: utf-8 -*-
22

33
# Copyright (c) 2015-2017 Conwet Lab., Universidad Politécnica de Madrid
4+
# Copyright (c) 2018 Future Internet Consulting and Development Solutions S.L.
45

56
# This file is part of Wirecloud.
67

@@ -86,8 +87,9 @@ class TestSocialAuthBackend(WirecloudTestCase, TestCase):
8687
}]
8788
}
8889

89-
USER_DATA = {"username": "demo", "email": "demo@fiware.org", "fullname": "Demo user", "first_name": "Demo", "last_name": "user"}
90-
USER_DATA_NO_LAST_NAME = {"username": "demo", "email": "demo@fiware.org", "fullname": "Demo", "first_name": "Demo", "last_name": ""}
90+
USER_DATA = {"username": "demo", "email": "demo@fiware.org", "fullname": "Demo user", "first_name": "Demo", "last_name": "user", "is_superuser": False, "is_staff": False}
91+
USER_DATA_ADMIN = {"username": "demo", "email": "demo@fiware.org", "fullname": "Demo user", "first_name": "Demo", "last_name": "user", "is_superuser": True, "is_staff": True}
92+
USER_DATA_NO_LAST_NAME = {"username": "demo", "email": "demo@fiware.org", "fullname": "Demo", "first_name": "Demo", "last_name": "", "is_superuser": False, "is_staff": False}
9193

9294
def setUp(self):
9395
self.social_core = MagicMock()
@@ -160,6 +162,14 @@ def test_get_user_details_old_version(self):
160162

161163
self.assertEqual(data, self.USER_DATA)
162164

165+
def test_get_user_details_old_version_admin(self):
166+
167+
response = deepcopy(self.OLD_RESPONSE)
168+
response['roles'][0]['name'] = 'admin'
169+
data = self.instance.get_user_details(response)
170+
171+
self.assertEqual(data, self.USER_DATA_ADMIN)
172+
163173
def test_get_user_details_new_version(self):
164174

165175
response = deepcopy(self.NEW_RESPONSE)
@@ -168,6 +178,14 @@ def test_get_user_details_new_version(self):
168178

169179
self.assertEqual(data, self.USER_DATA)
170180

181+
def test_get_user_details_new_version_admin(self):
182+
183+
response = deepcopy(self.NEW_RESPONSE)
184+
response['roles'][0]['name'] = 'Admin'
185+
data = self.instance.get_user_details(response)
186+
187+
self.assertEqual(data, self.USER_DATA_ADMIN)
188+
171189
def test_get_user_details_no_last_name(self):
172190

173191
response = deepcopy(self.RESPONSE_NO_LAST_NAME)

0 commit comments

Comments
 (0)