admin section in left sidebar; project switch in navbar
Change-Id: I3a74e4aee11d479efa0b7fb41957a8e6e86fa1cd
Signed-off-by: lombardofr <lombardo@everyup.it>
diff --git a/authosm/backend.py b/authosm/backend.py
index 6c23e91..9c316a9 100644
--- a/authosm/backend.py
+++ b/authosm/backend.py
@@ -19,8 +19,8 @@
from lib.osm.osmclient.clientv2 import Client
from .exceptions import OSMAuthException
-class OsmBackend(object):
+class OsmBackend(object):
def authenticate(self, **kwargs):
'''
kwargs will receive the python dict that may contain
@@ -40,20 +40,17 @@
try:
user = OsmUser.objects.get(username=username)
user.psw = password
- user.token=result['data']['id']
- user.project_id=result['data']['project_id']
- user.token_expires=result['data']['expires']
- user.session = result['data']
+ user.token = result['data']['id']
+ user.project_id = result['data']['project_id']
+ user.token_expires = result['data']['expires']
+ user.is_admin = bool(result['data']['admin'])
user.save()
-
except OsmUser.DoesNotExist:
user = OsmUser(username=username, psw=password, token=result['data']['id'],
- project_id=result['data']['project_id'],
- token_expires=result['data']['expires'])
- user.session = result['data']
+ project_id=result['data']['project_id'],
+ token_expires=result['data']['expires'], is_admin=result['data']['admin'])
user.save()
-
return user
return None
@@ -62,4 +59,4 @@
try:
return OsmUser.objects.get(pk=user_id)
except OsmUser.DoesNotExist:
- return None
\ No newline at end of file
+ return None
diff --git a/authosm/models.py b/authosm/models.py
index 36a7b1b..790e684 100644
--- a/authosm/models.py
+++ b/authosm/models.py
@@ -89,6 +89,14 @@
return {'id': self.token, 'expires': self.token_expires, 'project_id': self.project_id}
return None
+ def get_projects(self):
+ client = Client()
+ result = client.get_user_info(self.get_token(), self.username)
+ if 'error' in result and result['error'] is True:
+ return []
+ else:
+ return result['data']['projects']
+
def switch_project(self, project_id):
client = Client()
result = client.switch_project({'project_id': project_id, 'username': self.username, 'password': self.psw})
diff --git a/authosm/views.py b/authosm/views.py
index 65b1ed6..f82f4dd 100644
--- a/authosm/views.py
+++ b/authosm/views.py
@@ -43,11 +43,11 @@
if user and user.is_active:
if user.is_authenticated:
login(request, user)
- request.session['token'] = user.session
+ request.session['projects'] = user.get_projects()
if next_page == "" or next_page is None:
return HttpResponseRedirect('/home')
else:
return HttpResponseRedirect(next_page)
else:
error_message = 'Login failed!'
- return render(request, 'login.html', {'error_message':error_message, 'collapsed_sidebar': False})
+ return render(request, 'login.html', {'error_message': error_message, 'collapsed_sidebar': False})