Ejemplo n.º 1
0
def decode_token():
    #token = 'JWT eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9token.eyJleHAiOjE1NzI2NzU2NzksImlhdCI6MTU2NzQ5MTY3OSwiZGF0YSI6eyJhY2NvdW50IjoiMTU3NzEwMDA1ODciLCJsb2dpbl90aW1lIjoxNTY3NDkxNjc5fX0.kY-_AHxJ7IQ35NJ80IkTr9kDk-LV3wdc6tByVSIQ1KE'
    token = request.headers.get('Authorization')
    if not token:
        _json = request.json
        token = _json.get('token')
    token_arr = token.split(' ')
    if (not token_arr) or (token_arr[0] != "JWT") or (len(token_arr) != 2):
        return json.dumps(return_unsuccess('验证头信息不正确'), ensure_ascii=False)
    else:
        auth_token = token_arr[1]
        try:
            data = Auth.decode_jwt(auth_token).get('data')
        except Exception as e:
            return json.dumps(return_unsuccess('token解码失败: ' + str(e)),
                              ensure_ascii=False)
        else:
            account = data.get('account')
            user_dao = UserDao()
            try:
                res = user_dao.query_by_account(account)
                if len(res) == 1:
                    return json.dumps(return_success(UserDao.to_dict(res)),
                                      ensure_ascii=False)
                else:
                    return json.dumps(
                        (return_unsuccess("Error: No such user")))
            except Exception as e:
                return json.dumps((return_unsuccess("Error: " + str(e))))
Ejemplo n.º 2
0
def query_self_permission():
    res = json.loads(decode_token()).get('result')
    try:
        account = res[0]['account']
        features = UserDao().query_permission(account)
        return jsonify(return_success(UserDao.to_permission_dict(features)))
    except Exception as e:
        return jsonify(return_unsuccess('Query Failed :' + str(e)))
Ejemplo n.º 3
0
def queryPermission():
    account = request.json.get('account')
    try:
        res = UserDao().query_permission(account)
        return json.dumps(return_success(UserDao.to_permission_dict(res)))
    except Exception as e:
        return json.dumps(
            return_unsuccess('Query Permission Failed: ' + str(e)))
Ejemplo n.º 4
0
def bindUserWx():
    _openid = request.json.get('openid')
    _account = request.json.get('account')
    user_dao = UserDao()
    try:
        user_dao.bind_wx(_account, _openid)
        return json.dumps(return_success(""))
    except Exception as e:
        return json.dumps(return_unsuccess("Bind Failed " + str(e)))
Ejemplo n.º 5
0
def queryUser():
    _openid = request.json.get('openid')
    _account = request.json.get('account')
    user_dao = UserDao()
    res = user_dao.query_by_openid_account(_account, _openid)
    size = len(res)
    if size > 0:
        return json.dumps(return_success(UserDao.to_dict(res)))
    else:
        return json.dumps(return_unsuccess('Error: No such user'))
Ejemplo n.º 6
0
def check_account():
    account = request.json.get('account')
    # 到数据库中进行查询
    user_dao = UserDao()
    result = user_dao.query_by_account(account)
    size = len(result)
    if size == 0:
        return json.dumps(return_success(""))
    else:
        return json.dumps(return_unsuccess("Error Account Duplicate"))
Ejemplo n.º 7
0
def delPermissionByFeatures():
    account = request.json.get('account')
    features = request.json.get('features')
    try:
        UserDao().del_permission_by_features(account, features)
        return json.dumps(return_success('ok'))
    except Exception as e:
        return json.dumps(return_unsuccess('Del Permission Failed: ' + str(e)))
Ejemplo n.º 8
0
def addPermissionByRole():
    account = request.json.get('account')
    role = request.json.get('role')
    try:
        UserDao().add_permission_by_role(account, role)
        return json.dumps(return_success('ok'))
    except Exception as e:
        return json.dumps(return_unsuccess('Add Permission Failed: ' + str(e)))
Ejemplo n.º 9
0
def set_position():
    _json = request.json
    account = _json.get("account")
    position = _json.get('position')
    try:
        UserDao().set_position(account, position)
        return json.dumps(return_success('Set position success'))
    except Exception as e:
        return json.dumps(return_unsuccess('Failed to set position ' + str(e)))
Ejemplo n.º 10
0
def userRegister():
    _json = request.json
    account = _json.get("account")
    res = json.loads(check_account())
    suc = res.get("success")
    if not suc:
        return jsonify(return_unsuccess("账户重复"))

    companyId = _json.get("companyId")
    password = _json.get("passwd")
    verification = _json.get("verification")

    # 验证码验证
    true_veri = redis_store.get('veri' + account)
    print(true_veri)
    print(type(true_veri))
    if not true_veri:
        return jsonify(return_unsuccess("验证码过期"))
    elif verification != true_veri:
        return jsonify(return_unsuccess("验证码错误"))
    # 验证码正确,删除对应键值
    redis_store.delete('veri' + account)

    # 生成token
    login_time = int(time.time())
    token = Auth.create_jwt({'account': account, 'login_time': login_time})

    # 密码处理
    store = base64.b64decode(password)
    store_in = binascii.hexlify(store)
    strpass = str(store_in, 'utf-8')
    print(strpass)
    try:
        user_dao = UserDao()
        user_dao.add(account, strpass, companyId)
        resp = return_success("")
        resp['token'] = token
        return jsonify(resp)
    except Exception as e:
        print(e)
        return json.dumps(return_unsuccess("注册失败"), ensure_ascii=False)
Ejemplo n.º 11
0
def check_permission(account):
    # 当前请求端点
    pre_endpoint = str(request.endpoint)
    # 允许的功能
    allow_feature = list(UserDao().query_permission(account))  # 转list
    # 全部的功能
    all_feature = get_permission()
    flag = False
    for feature in all_feature['features']:
        for api in feature['api']:
            # feature 转tuple
            if api and pre_endpoint in api and (
                    feature['name'], ) in allow_feature:
                flag = True
    return flag
Ejemplo n.º 12
0
    def test11(self):
        res = UserDao().del_permission_by_features('15771000587', ['Common', 'Data Analysis'])

        print(res)
Ejemplo n.º 13
0
 def test10_1(self):
     res = UserDao().add_permission_by_role('13474709706', 'admin')
     print(res)
Ejemplo n.º 14
0
 def test10(self):
     res = UserDao().query_all()
     for r in res:
         print(r[0])
         res = UserDao().add_permission_by_role(r[0], 'admin')
     print(res)
Ejemplo n.º 15
0
 def test1(self):
     userdao = UserDao()
     result = userdao.query_all()
     print(result)
     j = json.dumps(return_success(UserDao.to_dict(result)))
     print(j)
Ejemplo n.º 16
0
 def __init__(self, db_host, db_port, db_name):
     client = pymongo.MongoClient(db_host, db_port)
     self.db = client[db_name]
     self.user_dao = UserDao(self.db)
     self.audit_dao = AuditDao(self.db)
     self.client_data_dao = ClientDataDao(self.db)
Ejemplo n.º 17
0
def login():
    # token登陆
    if request.method == 'GET':
        return decode_token()

    _json = request.json
    login_type = _json.get('type')
    account = _json.get('account')
    password = _json.get('passwd')
    web = _json.get('web')
    # 生成token
    login_time = int(time.time())
    token = Auth.create_jwt({'account': account, 'login_time': login_time})
    # 账号密码登陆
    if login_type == 0:
        store_in = base64.b64decode(password)
        if not web:
            store_in = binascii.hexlify(store_in)
        strpass = str(store_in, 'utf-8')
        print(strpass)

        user_dao = UserDao()
        res = user_dao.query_check_login(account, strpass)
        size = len(res)
        if size == 1:
            resp = return_success(UserDao.to_dict(res))
            resp['token'] = token
            return jsonify(resp)
        else:
            return jsonify(return_unsuccess('账号或密码错误'))
    # 验证码登陆
    elif login_type == 1:
        true_veri = redis_store.get('veri' + account)
        if not true_veri:
            return jsonify(return_unsuccess("验证码过期"))
        elif password != true_veri:
            return jsonify(return_unsuccess("验证码错误"))
        res = json.loads(check_account())
        suc = res.get("success")
        if not suc:
            print(res)
            redis_store.delete('veri' + account)
            user = UserDao().query_by_account(account)
            resp = return_success(UserDao.to_dict(user))
            resp['token'] = token
        else:
            resp = return_unsuccess('Error: No such user')
        return jsonify(resp)
    # openid登陆
    elif login_type == 2:
        openid = _json.get("openid")
        user_dao = UserDao()
        res = user_dao.query_by_openid_account(account, openid)
        size = len(res)
        if size == 1:
            resp = return_success(UserDao.to_dict(res))
            token = Auth.create_jwt({
                'account': res[0][0],
                'login_time': login_time
            })
            resp['token'] = token
            return jsonify(resp)
        else:
            return jsonify(return_unsuccess('Error: No such user'))
    else:
        return jsonify(return_unsuccess('Error: Wrong Login Method'))