コード例 #1
0
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)
コード例 #2
0
ファイル: web.py プロジェクト: richmonkey/kefu_api
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')
コード例 #3
0
ファイル: web.py プロジェクト: richmonkey/kefu_api
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')
コード例 #4
0
ファイル: web.py プロジェクト: richmonkey/kefu_api
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
コード例 #5
0
ファイル: web.py プロジェクト: richmonkey/kefu_api
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
コード例 #6
0
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)