The new user is added on authentication

This commit is contained in:
Eibriel 2015-04-09 19:06:10 -03:00
parent b7b07ea922
commit babdf807fb
2 changed files with 30 additions and 8 deletions

View File

@ -40,10 +40,11 @@ def validate(token):
if r.status_code == 200: if r.status_code == 200:
message = r.json()['message'] message = r.json()['message']
valid = r.json()['valid'] valid = r.json()['valid']
user = r.json()['user']
else: else:
message = "" message = ""
valid = False valid = False
return dict(valid=valid, message=message) return dict(valid=valid, message=message, user=user)
class TokensAuth(TokenAuth): class TokensAuth(TokenAuth):
@ -51,17 +52,33 @@ class TokensAuth(TokenAuth):
if not token: if not token:
return False return False
tokens = app.data.driver.db['tokens'] tokens = app.data.driver.db['tokens']
users = app.data.driver.db['users']
lookup = {'token': token, 'expire_time': {"$gt": datetime.now()}} lookup = {'token': token, 'expire_time': {"$gt": datetime.now()}}
dbtoken = tokens.find_one(lookup) dbtoken = tokens.find_one(lookup)
if not dbtoken: if not dbtoken:
validation = validate(token) validation = validate(token)
if validation['valid']: if validation['valid']:
data = { email = validation['user']['email']
'username': '', dbuser = users.find_one({'email': email})
tmpname = email.split('@')[0]
if not dbuser:
user_data = {
'firstname': tmpname,
'lastname': tmpname,
'email': email,
'role': ['admin'],
}
r = post_internal('users', user_data)
user_id = r[0]["_id"]
else:
user_id = dbuser['_id']
token_data = {
'user': user_id,
'token': token, 'token': token,
'expire_time': datetime.now()+timedelta(hours=1) 'expire_time': datetime.now()+timedelta(hours=1)
} }
post_internal('tokens', data) post_internal('tokens', token_data)
else: else:
return True return True
return validation['valid'] return validation['valid']

View File

@ -14,12 +14,17 @@ users_schema = {
'firstname': { 'firstname': {
'type': 'string', 'type': 'string',
'minlength': 1, 'minlength': 1,
'maxlength': 10, 'maxlength': 60,
}, },
'lastname': { 'lastname': {
'type': 'string', 'type': 'string',
'minlength': 1, 'minlength': 1,
'maxlength': 15, 'maxlength': 60,
},
'email': {
'type': 'string',
'minlength': 1,
'maxlength': 60,
}, },
'role': { 'role': {
'type': 'list', 'type': 'list',
@ -103,8 +108,8 @@ node_types_schema = {
tokens_schema = { tokens_schema = {
'username': { 'user': {
'type': 'string', 'type': 'objectid',
'required': True, 'required': True,
}, },
'token': { 'token': {