From 7f1d9e0eb624119ffb2d3e91726b21d5356bff59 Mon Sep 17 00:00:00 2001 From: Gogs Date: Sat, 27 May 2017 16:12:56 +0000 Subject: [PATCH] Bug fixes with identitity federation --- src/Domain.py | 6 +++--- src/api/index.py | 55 ++++++++++++++++++++++++++++++++++-------------- 2 files changed, 42 insertions(+), 19 deletions(-) diff --git a/src/Domain.py b/src/Domain.py index ccbf513..3f30103 100644 --- a/src/Domain.py +++ b/src/Domain.py @@ -19,8 +19,7 @@ class User: self.user = None def initialize(self,uid) : id = self.getId(uid) - - if self.db.doc_exist(id) : + if id is not None and self.db.doc_exist(id) : self.user = self.db.get(id) """ This function will cast an object to JSON, @@ -42,7 +41,7 @@ class User: r = r.first() return r['value'] else: - None + return None def init (self,uid,plans): customer = {} @@ -235,6 +234,7 @@ class User: def update_user(self,**args) : id = args['id'] uid= args['uid'] + print ['update ...',id,uid] self.user = self.db.get(id) self.user['emails'].append(uid) self.user['emails'] = list(set(self.user['emails'])) diff --git a/src/api/index.py b/src/api/index.py index b155cb8..d405560 100644 --- a/src/api/index.py +++ b/src/api/index.py @@ -37,23 +37,46 @@ COUCHDB = Server(uri=CONFIG['couchdb']['uri']) ; @app.route("/init/",methods=['POST']) def init(app_name): plans = [] - if 'uid' in request.headers: - uid = request.headers['uid'] - plan= request.headers['pid'] - couchdb = Couchdb(uri=CONFIG['couchdb']['uri'],dbname=app_name,uid=uid) - DB = couchdb.dbase - handler = Domain.User(DB,stripe) ; - if 'customer.id' not in session : - handler.init(uid,plan) - id=handler.getId(uid) - session['customer.id'] = id - else: - id = session['customer.id'] - handler.initialize(uid) - handler.update_user(id,uid=uid) - plans = handler.plans() + handler = None + uid = request.headers['uid'] + plan = request.headers['pid'] + auid = None + if 'uid' in request.headers and 'auid' not in request.headers: + id = uid + #couchdb = Couchdb(uri=CONFIG['couchdb']['uri'],dbname=app_name,uid=uid,create=False) + #DB = couchdb.dbase + if 'auid' in request.headers : + auid = request.headers['auid'] + auid = json.loads(auid)if auid.startswith('[') else auid + if isinstance(auid,list) : + auid = list(set(auid) - set([uid])) + + if len(auid) == 0: + auid = None + id = uid + else: + auid = auid[0] + id = auid + couchdb = Couchdb(uri=CONFIG['couchdb']['uri'],dbname=app_name,uid=id,create=False) + DB = couchdb.dbase + #handler.update_user(id=handler.getId(auid),uid=uid) + + handler = Domain.User(DB,stripe) ; + if auid is None : + handler.init(uid,plan) ; + else: + if couchdb.isready() == False: + handler.init(auid,plan) + id = handler.getId(uid) + + handler.initialize(auid) + id = handler.getId(auid) + handler.update_user(id=id,uid=uid) ; + + plans = handler.plans() #return json.dumps(plans) - return features(app_name) + _features = features(app_name) + return _features """ This function will update the user's email """