admin section in left sidebar; project switch in navbar
[osm/LW-UI.git] / authosm / backend.py
index 1b92156..9c316a9 100644 (file)
 #   See the License for the specific language governing permissions and
 #   limitations under the License.
 #
+from django.core.exceptions import PermissionDenied
+
 from .models import OsmUser
+from lib.osm.osmclient.clientv2 import Client
+from .exceptions import OSMAuthException
 
 
 class OsmBackend(object):
-
     def authenticate(self, **kwargs):
         '''
         kwargs will receive the python dict that may contain
@@ -26,20 +29,28 @@ class OsmBackend(object):
         if all(k in kwargs for k in ('username', 'password', 'project_id')):
             username = kwargs['username']
             password = kwargs['password']
-            project_id = kwargs['project_id']
-
-            print username
-            print password
-            print project_id
 
-            try:
+            client = Client()
+            result = client.auth(kwargs)
+
+            if 'error' in result and result['error'] is True:
+                raise OSMAuthException(result['data'])
+            else:
+
+                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.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'], is_admin=result['data']['admin'])
+                    user.save()
 
-                return OsmUser.objects.get(username=username)
-            except OsmUser.DoesNotExist:
-                # Create a new user. There's no need to set a password
-                # we will keep just some preferences
-                user = OsmUser(username=username)
-                user.save()
                 return user
 
         return None
@@ -48,4 +59,4 @@ class OsmBackend(object):
         try:
             return OsmUser.objects.get(pk=user_id)
         except OsmUser.DoesNotExist:
-            return None
\ No newline at end of file
+            return None