def refresh_token(): if not request.data: return INVALID_PARAM() db = g._db obj = json.loads(request.data) refresh_token = obj["refresh_token"] rt = token.RefreshToken() if not rt.load(g.rds, refresh_token): return INVALID_REFRESH_TOKEN() seller = Seller.get_seller(db, rt.user_id) if not seller: return INVALID_REFRESH_TOKEN() access_token = login_gobelieve(int(rt.user_id), seller['name'], config.APP_ID, config.APP_SECRET) if not access_token: return CAN_NOT_GET_TOKEN() seller = Seller.get_seller(db, rt.user_id) tok = create_token(3600, False) tok["refresh_token"] = obj["refresh_token"] tok["access_token"] = access_token tok['uid'] = rt.user_id tok['store_id'] = seller['store_id'] tok['name'] = seller['name'] t = token.AccessToken(**tok) t.user_id = rt.user_id t.save(g.rds) return make_json_response(tok, 200)
def index(): if request.cookies.get('token') and request.cookies.get('uid'): uid = request.cookies.get('uid') uid = int(uid) seller = Seller.get_seller(g._db, uid) return render_template('customer_support/chat.html', host=config.HOST, name=seller['name'], apiURL=config.APIURL) else: return render_template('customer_support/index.html')
def login(): username = request.form.get('username') password = request.form.get('password') if not username: return render_template_string(error_html, error="用户名称为空") if not password: return render_template_string(error_html, error="密码为空") password_md5 = md5.new(password).hexdigest() db = g._db uid = None store_id = None seller = Seller.get_seller_with_number(db, username) if check_seller_password(seller, password): uid = seller['id'] store_id = seller['store_id'] else: try: seller_id = int(username) seller = Seller.get_seller(db, seller_id) if check_seller_password(seller, password): uid = seller['id'] store_id = seller['store_id'] except ValueError: pass if not uid: return render_template_string(error_html, error="非法的用户名/密码") name = seller.get('name') if not name: name = "" access_token = login_gobelieve(uid, name, config.APP_ID, config.APP_SECRET) if not access_token: return render_template_string(error_html, error="登录失败") response = flask.make_response(redirect('/')) response.set_cookie('token', access_token) response.set_cookie('store_id', str(seller['store_id'])) response.set_cookie('uid', str(seller['id'])) return response
def access_token(): if not request.data: return INVALID_PARAM() obj = json.loads(request.data) username = obj["username"] password = obj["password"] platform = obj.get('platform', 0) device_id = obj.get('device_id', '') if not username or not password: return INVALID_PARAM() db = g._db rds = g.rds uid = None store_id = None try: seller_id = int(username) except ValueError: seller_id = 0 if seller_id: seller = Seller.get_seller(db, seller_id) else: seller = Seller.get_seller_with_number(db, username) if check_seller_password(seller, password): uid = seller['id'] store_id = seller['store_id'] if not uid: return INVALID_USER() access_token = login_gobelieve(uid, seller['name'], config.APP_ID, config.APP_SECRET, device_id, platform) if not access_token: return CAN_NOT_GET_TOKEN() tok = create_token(3600, True) tok['uid'] = uid tok['store_id'] = store_id tok['access_token'] = access_token tok['name'] = seller['name'] tok['status'] = 'online' t = token.AccessToken(**tok) t.save(rds) t = token.RefreshToken(**tok) t.save(rds) #用户上线 Supporter.set_user_online(rds, uid) now = int(time.time()) obj = { "timestamp": now, "device_name": obj.get("device_name", ""), "device_id": obj.get("device_id", ""), "platform": obj.get("platform", 0) } PLATFORM_WEB = 3 PLATFORM_WIN32 = 4 PLATFORM_DARWIN = 5 PLATFORM_LINUX = 6 if platform >= 3: content = json.dumps({"login_pc": obj}) else: content = json.dumps({"login": obj}) send_sys_message(uid, content, config.APP_ID, config.APP_SECRET) return make_json_response(tok, 200)