diff --git a/attract/application/__init__.py b/attract/application/__init__.py index e6ec65bb..18656b6b 100644 --- a/attract/application/__init__.py +++ b/attract/application/__init__.py @@ -8,6 +8,7 @@ from eve import Eve from eve.auth import TokenAuth from eve.auth import BasicAuth from eve.io.mongo import Validator +from eve.methods.post import post_internal from bson import ObjectId from datetime import datetime @@ -50,7 +51,7 @@ class TokensAuth(TokenAuth): if not token: return False tokens = app.data.driver.db['tokens'] - lookup = {'token': token, 'updated': {"$gt": datetime.now()}} + lookup = {'token': token, 'expire_time': {"$gt": datetime.now()}} dbtoken = tokens.find_one(lookup) if not dbtoken: validation = validate(token) @@ -58,9 +59,9 @@ class TokensAuth(TokenAuth): data = { 'username': '', 'token': token, - 'updated': datetime.now()+timedelta(hours=1) + 'expire_time': datetime.now()+timedelta(hours=1) } - tokens.insert(data) + post_internal('tokens', data) else: return True return validation['valid'] @@ -89,7 +90,8 @@ class MyTokenAuth(BasicsAuth): self.authorized_protected = BasicsAuth.authorized def authorized(self, allowed_roles, resource, method): - if resource == 'tokens': + # if resource == 'tokens': + if False: return self.authorized_protected( self, allowed_roles, resource, method) else: diff --git a/attract/settings.py b/attract/settings.py index ce1f0dac..1bfeea16 100644 --- a/attract/settings.py +++ b/attract/settings.py @@ -102,7 +102,7 @@ node_types_schema = { } -"""tokens_schema = { +tokens_schema = { 'username': { 'type': 'string', 'required': True, @@ -110,8 +110,12 @@ node_types_schema = { 'token': { 'type': 'string', 'required': True, - } -}""" + }, + 'expire_time': { + 'type': 'datetime', + 'required': True, + }, +} nodes = { @@ -145,20 +149,20 @@ users = { 'schema': users_schema } -"""tokens = { +tokens = { 'resource_methods': ['POST'], # Allow 'token' to be returned with POST responses #'extra_response_fields': ['token'], 'schema' : tokens_schema -}""" +} DOMAIN = { 'users': users, 'nodes': nodes, 'node_types': node_types, - # 'tokens': tokens, + 'tokens': tokens, } try: