def load(): # Decode and verify payload payload = flask.request.args['signed_payload'] user_data = BigcommerceApi.oauth_verify_payload(payload, client_secret()) if user_data is False: return "Payload verification failed!", 401 bc_user_id = user_data['user']['id'] email = user_data['user']['email'] store_hash = user_data['store_hash'] # Lookup store store = Store.query.filter_by(store_hash=store_hash).first() if store is None: return "Store not found!", 401 # Lookup user and create if doesn't exist (this can happen if you enable multi-user # when registering your app) user = User.query.filter_by(bc_id=bc_user_id).first() if user is None: user = User(bc_user_id, email, store) db.session.add(user) db.session.commit() # Log user in and redirect to app interface flask.session['userid'] = user.id return flask.redirect(flask.url_for('index'))
def load(): # Decode and verify payload payload = flask.request.args['signed_payload'] user_data = BigcommerceApi.oauth_verify_payload(payload, client_secret()) if user_data is False: return "Payload verification failed!", 401 bc_user_id = user_data['user']['id'] email = user_data['user']['email'] store_hash = user_data['store_hash'] # Lookup store store = Store.query.filter_by(store_hash=store_hash).first() if store is None: return "Store not found!", 401 # Lookup user and create if doesn't exist (this can happen if you enable multi-user # when registering your app) user = User.query.filter_by(bc_id=bc_user_id).first() if user is None: user = User(bc_user_id, email) db.session.add(user) db.session.commit() storeuser = StoreUser.query.filter_by(user_id=user.id, store_id=store.id).first() if storeuser is None: storeuser = StoreUser(store, user) db.session.add(storeuser) db.session.commit() # Log user in and redirect to app interface flask.session['storeuserid'] = storeuser.id return flask.redirect(app.config['APP_URL'])
def remove_user(): # Decode and verify payload payload = flask.request.args['signed_payload'] user_data = BigcommerceApi.oauth_verify_payload(payload, client_secret()) if user_data is False: return "Payload verification failed!", 401 # Lookup store store_hash = user_data['store_hash'] store = Store.query.filter_by(store_hash=store_hash).first() if store is None: return "Store not found!", 401 # Lookup user and delete it bc_user_id = user_data['user']['id'] user = User.query.filter_by(bc_id=bc_user_id).first() if user is not None: db.session.delete(user) db.session.commit() return flask.Response('Deleted', status=204)
def uninstall(): # Decode and verify payload payload = flask.request.args['signed_payload'] user_data = BigcommerceApi.oauth_verify_payload(payload, client_secret()) if user_data is False: return "Payload verification failed!", 401 # Lookup store store_hash = user_data['store_hash'] store = Store.query.filter_by(store_hash=store_hash).first() if store is None: return "Store not found!", 401 # Clean up: delete store associated users. This logic is up to you. # You may decide to keep these records around in case the user installs # your app again. User.query.filter_by(store_id=store.id).delete() db.session.delete(store) db.session.commit() return flask.Response('Deleted', status=204)
def remove_user(): # Decode and verify payload payload = flask.request.args['signed_payload'] user_data = BigcommerceApi.oauth_verify_payload(payload, client_secret()) if user_data is False: return "Payload verification failed!", 401 # Lookup store store_hash = user_data['store_hash'] store = Store.query.filter_by(store_hash=store_hash).first() if store is None: return "Store not found!", 401 # Lookup user and delete it bc_user_id = user_data['user']['id'] user = User.query.filter_by(bc_id=bc_user_id).first() if user is not None: db.session.delete(user) db.session.commit() return flask.Response('Deleted', status=204)
def uninstall(): # Decode and verify payload payload = flask.request.args['signed_payload'] user_data = BigcommerceApi.oauth_verify_payload(payload, client_secret()) if user_data is False: return "Payload verification failed!", 401 # Lookup store store_hash = user_data['store_hash'] store = Store.query.filter_by(store_hash=store_hash).first() if store is None: return "Store not found!", 401 # Clean up: delete store associated users. This logic is up to you. # You may decide to keep these records around in case the user installs # your app again. User.query.filter_by(store_id=store.id).delete() db.session.delete(store) db.session.commit() return flask.Response('Deleted', status=204)
def get(self, request): payload = request.GET['signed_payload'] print("payload========>", payload) user_data = BigcommerceApi.oauth_verify_payload( payload, settings.APP_CLIENT_SECRET) print("userdata======>", user_data) if user_data is False: return "Payload verification failed!" bc_user_id = user_data['user']['id'] print("bc id=========>", bc_user_id) email = user_data['user']['email'] print("email =========>", email) store_hash = user_data['store_hash'] print("store has=========>", store_hash) store = Store.objects.filter(store_hash=store_hash).first() if store is None: return "Store not found!" user = User.objects.filter(bc_id=bc_user_id).first() if user is None: user = User.objects.create( bc_id=bc_user_id, email=email, ) print("============>>Create new user") storeuser = StoreUser.objects.filter(user_id=user.id, store_id=store.id).first() if storeuser is None: storeuser = StoreUser.objects.create( store_id=store, user_id=user, ) print("============>>Create new userstore") print("====>Load redirect APP_URL", settings.APP_URL) return HttpResponseRedirect(settings.APP_URL)