示例#1
0
def __authorize_by_code(request):
    post_data = request.body.decode('utf-8')
    post_data = json.loads(post_data)
    code = post_data.get('code').strip()
    app_id = post_data.get('appId').strip()
    nickname = post_data.get('nickname').strip()

    response = {}
    if not code or not app_id:
        response['message'] = 'authorized failed,need entire authorization data'
        response['code'] = ReturnCode.BROKEN_AUTHORIZED_DATA
        return JsonResponse(data=response, safe=False)

    data = c2s(app_id, code)
    openid = data.get('openid')
    print('get oppid:', openid)

    request.session['open_id'] = openid
    request.session['is_authorized'] = True

    if not User.objects.filter(open_id=openid):
        new_user = User(open_id=openid,nickname=nickname)
        print('new_user open_id:%s,nickname: %s' %(openid, nickname))
        new_user.save()
    response = CommonResponseMixin.wrap_json_response(code=ReturnCode.SUCCESS, message='authorize success')
    return JsonResponse(data=response, safe=False)
示例#2
0
def __authorize_by_code(request):
    '''
    使用wx.login得到的临时code到微信提供code2session接口授权
    '''
    post_data = request.body.decode('utf-8')
    post_data = json.loads(post_data)
    code = post_data['code'].strip()
    app_id = post_data['appId'].strip()
    nickname = post_data['nickname'].strip()

    if not code or not app_id:
        response['message'] = 'authorized failed,need entire authorization data'
        response['code'] = ReturnCode.BROKEN_AUTHORIZED_DATA
        return JsonResponse(data=response,safe=False)
    data =c2s(app_id,code)
    openid = data['openid']
    if not openid:
        response = CommonResponseMixin.wrap_json_response(code=ReturnCode.FAILED,message='auth failed')
        return JsonResponse(data=response,safe=False)

    request.session['open_id'] = openid
    request.session['is_authorized'] = True

    if not User.objects.filter(open_id=openid):
        new_user = User(open_id=openid,nickname=nickname)
        new_user.save()

    response = CommonResponseMixin.wrap_json_response(code=ReturnCode.SUCCESS,message='auth success')
    return JsonResponse(data=response,safe=False)
示例#3
0
def get_author(request):
    post_data = request.body.decode('utf-8')
    post_data = json.loads(post_data)
    code = post_data.get('code').strip()
    appid = post_data.get('appid').strip()
    nickName = post_data.get('nickName').strip()
    response = {}
    if not code or not appid:
        response['message'] = 'authorize failed'
        response['code'] = ReturnCode.BROKEN_AUTHORIZED_DATA
        return JsonResponse(data=response, safe=False)
    data = auth.c2s(appid, code)
    openid = data.get('openid')
    if not openid:
        response['message'] = 'authorize failed'
        response['code'] = ReturnCode.BROKEN_AUTHORIZED_DATA
        return JsonResponse(data=response, safe=False)
    request.session['open_id'] = openid
    request.session['is_authorized'] = True
    if not User.objects.filter(openid=openid):
        user = User(openid=openid, nickname=nickName)
        user.save()
    response = CommonResponseMixin.wrap_json_response(code=ReturnCode.SUCCESS,
                                                      message='success auth')
    return JsonResponse(data=response, safe=False)
示例#4
0
def __authorization_by_code(request):
    data = request.body.decode("utf-8")
    data = json.loads(data)
    code = data.get('code').strip()
    appId = data.get('appId').strip()
    nickName = data.get('nickName').strip()

    response = {}
    if not code or not appId:
        response['message'] = '登陆失败,需要完整数据'
        response['code'] = ReturnCode.BROKEN_AUTHORIZED_DATA
        return JsonResponse(data=response, safe=False)

    data = c2s(appId, code)
    openid = data.get('openid')
    if not openid:
        response = CommonResponseMixin.wrap_json_response(code=ReturnCode.FAILED, message="auth failed.")
        return JsonResponse(data=response)

    request.session['open_id'] = openid
    request.session['is_authorized'] = True

    if not Yonghu.objects.filter(open_id=openid):
        user = Yonghu(open_id=openid, nickname=nickName)
        user.save()
    print("new user: openid: %s, nickName: %s" % (openid, nickName))

    response = CommonResponseMixin.wrap_json_response(code=ReturnCode.SUCCESS, message='auth success')
    return JsonResponse(data=response, safe=False)
示例#5
0
def __authorize_by_code(request):
    '''
    使用wx.login的到的临时code到微信提供的code2session接口授权

    post_data = {
        'encryptedData': 'xxxx',
        'appId': 'xxx',
        'sessionKey': 'xxx',
        'iv': 'xxx'
    }
    '''
    response = {}
    post_data = request.body.decode('utf-8')
    post_data = json.loads(post_data)
    app_id = post_data.get('appId').strip()
    nickname = post_data.get('nickname').strip()
    code = post_data.get('code').strip()
    print(code)
    print(app_id)
    if not (app_id and code):
        response['result_code'] = ReturnCode.BROKEN_AUTHORIZED_DATA
        response[
            'message'] = 'authorized failed. need entire authorization data.'
        print("-----")
        print(response)
        print("-----")
        return JsonResponse(response, safe=False)
    try:
        print("cs2:app_id code %s %s" % (app_id, code))
        data = c2s(app_id, code)
    except Exception as e:
        print(e)
        response['result_code'] = ReturnCode.FAILED
        response['message'] = 'authorized failed.'
        return JsonResponse(response, safe=False)
    open_id = data.get('openid')
    if not open_id:
        response['result_code'] = ReturnCode.FAILED
        response['message'] = 'authorization error.'
        return JsonResponse(response, safe=False)
    request.session['open_id'] = open_id
    request.session['is_authorized'] = True

    print(open_id)
    # User.objects.get(open_id=open_id) # 不要用get,用get查询如果结果数量 !=1 就会抛异常
    # 如果用户不存在,则新建用户
    if not User.objects.filter(open_id=open_id):
        new_user = User(open_id=open_id, nickname=nickname)
        new_user.save()

    message = 'user authorize successfully.'
    response = wrap_json_response(data={},
                                  code=ReturnCode.SUCCESS,
                                  message=message)
    return JsonResponse(response, safe=False)
示例#6
0
def __authorize_by_code(request):
    '''
    使用wx.login获取到的临时code发送到微信提供的code2session接口授权
    :param request:
    :return:
    '''
    post_data = request.body.decode(
        'utf-8')  # 接收冲微信小程序传过来的信息(code,appid,nickname)
    post_data = json.loads(post_data)
    code = post_data.get('code').strip()
    appid = post_data.get('appId').strip()
    nickname = post_data.get('nickname').strip()
    print('post 信息:', code)
    print(appid)
    print(nickname)

    response = {}
    if not code or not appid:
        response['message'] = '信息不完整'
        response['code'] = ReturnCode.BROKEN_AUTHORIZED_DATA
        print('信息不完整')
        return JsonResponse(data=response, safe=False)
    data = c2s(appid, code)
    print('data:', data)
    openid = data.get('openid')
    # print('openid:',openid)
    session_key = data.get('session_key')
    print('session_key:', session_key)

    if not openid:
        response = ResponseMixin.json_response(code=ReturnCode.FAILED,
                                               message='auth failed')
        return JsonResponse(data=response, safe=False)

    # 使用session中间件标记了两个数据
    request.session['openid'] = openid  # 获取的opeid
    request.session['is_authorize'] = True  # 是否已经认证,如果已经认证则需要判断用户是否在数据库中
    print('openid:', openid)
    print('nickname:', nickname)
    print(type(nickname))
    openid = json.dumps(openid)
    openid = json.loads(openid)

    print('!!!!!!!!!!', openid)
    # 如果重数据库中查询不到,则说明其不在数据库中,需要将此用户保存下来
    if not User.objects.filter(openid=openid):
        new_user = User(openid=openid, nickname=nickname)  # 新建用户
        print('openid:', openid)
        print('nickname:', nickname)
        new_user.save()  # 保存用户信息

    response = ResponseMixin.json_response(code=ReturnCode.SUCCESS,
                                           message='auth success')
    return JsonResponse(data=response, safe=False)
示例#7
0
文件: views.py 项目: richcolin/jwt
    def post(self, request, *args, **kwargs):
        """ 用户登录 """
        response = {}
        post_data = request.body.decode('utf-8')
        print(post_data)
        post_data = json.loads(post_data)
        app_id = post_data.get('appId').strip()
        nickname = post_data.get('nickname').strip()
        code = post_data.get('code').strip()
        print(code)
        print(app_id)
        if not (app_id and code):
            response['result_code'] = ReturnCode.BROKEN_AUTHORIZED_DATA
            response[
                'message'] = 'authorized failed. need entire authorization data.'
            return JsonResponse(response, safe=False)
        try:
            data = c2s(app_id, code)
        except Exception as e:
            print(e)
            response['result_code'] = ReturnCode.FAILED
            response['message'] = 'authorized failed.'
            return JsonResponse(response, safe=False)
        open_id = data.get('openid')
        if not open_id:
            response['result_code'] = ReturnCode.FAILED
            response['message'] = 'authorization error.'
            return JsonResponse(response, safe=False)
        request.session['open_id'] = open_id
        request.session['is_authorized'] = True

        print(open_id)
        # User.objects.get(open_id=open_id) # 不要用get,用get查询如果结果数量 !=1 就会抛异常
        # 如果用户不存在,则新建用户
        if not User.objects.filter(open_id=open_id):
            new_user = User(open_id=open_id, nickname=nickname)
            new_user.save()
        token = create_token({'code': code})
        print('token is', token)
        message = 'user authorize successfully.'
        response = wrap_json_response(data={},
                                      code=ReturnCode.SUCCESS,
                                      message=message)
        return Response({'status': True, 'token': token})
示例#8
0
def __authorize_by_code(request):
    """
    使用wx.login到的临时code到微信提供的code2session接口授权

    post_data = {
        'encryptedData': 'xxx',
        'appId': 'xxx',
        'sessionKey': 'xxx',
        'iv': 'xxx'
    }
    """
    post_data = request.body.decode('utf-8')
    print('data from applet:', post_data)
    post_data = json.loads(post_data)
    code = post_data.get('code').strip()
    app_id = post_data.get('appId').strip()
    nickname = post_data.get('nickname').strip()
    response = {}
    # 需要微信小程序提供code和appid,然后将code、appid和secret提交给c2s向微信接口服务认证
    if not code or not app_id:
        response['message'] = 'lost code or appId'
        response['code'] = ReturnCode.BROKEN_AUTHORIZED_DATA
        return JsonResponse(data=response, safe=False)
    data = c2s(app_id, code)
    openid = data.get('openid')
    print('get openid from c2s:', openid)
    # 若没有从微信接口服务获取到openid,则认证失败
    if not openid:
        response = wrap_json_response(code=ReturnCode.UNAUTHORIZED,
                                      message='auth failed')
        return JsonResponse(data=response, safe=False)

    request.session['open_id'] = openid
    request.session['is_authorized'] = True

    # 认证成功后查看该用户是否在开发者数据存在,不存在则保存
    if not User.objects.filter(open_id=openid):
        new_user = User(open_id=openid, nickname=nickname)
        new_user.save()

    response = wrap_json_response(code=ReturnCode.SUCCESS,
                                  message='auth success.')
    return JsonResponse(data=response, safe=False)
示例#9
0
def __authorize_by_code(request):
    '''
    使用wx.login得到临时code到微信提供的code2session接口授权
    post_data = {
        'encryptedData': 'xxxx',
        'appId': 'xxx',
        'sessionKey':'xxx',
        'iv' : 'xxx'
    }
    :param request:
    :return:
    '''
    post_data = request.body.decode('utf-8')
    post_data = json.loads(post_data)
    code = post_data.get('code').strip()
    app_id = post_data.get('appId').strip()
    nickname = post_data.get('nickname').strip()

    response = {}
    if not code or not app_id:
        response['message'] = 'authorize failed, need entire authoriation data'
        response['code'] = ReturnCode.BROKEN_AUTHORIZED_DATA
        return JsonResponse(data=response, safe=False)

    data = c2s(app_id, code)
    openid = data.get('openid')
    print(openid)
    if not openid:
        response = CommonResponseMixin.wrap_json_response(
            code=ReturnCode.FAILED, message='auth failes')
        return JsonResponse(data=response, safe=False)

    request.session['open_id'] = openid
    request.session['is_authorized'] = True

    if not User.objects.filter(open_id=openid):
        new_user = User(open_id=openid, nickname=nickname)
        new_user.save()

    response = CommonResponseMixin.wrap_json_response(code=ReturnCode.SUCCESS,
                                                      message='auth success')
    return JsonResponse(data=response, safe=False)
示例#10
0
 def post(self, request):
     data = request.body.decode('utf-8')
     print(data)
     data = json.loads(data)
     print(data)
     action = data['action']
     if action == 'add':
         baby = Child()
         print('执行添加')
     else:
         baby = Child.objects.get(id=data['id'])
         print('执行修改')
     baby.name = data['name']
     baby.born_date = data['date']
     if data['sex'] == '男':
         baby.gender = 'boy'
     elif data['sex'] == '女':
         baby.gender = 'girl'
     if data['grade'] is not None:
         index = int(data['grade'])
         baby.grade = Child.GRADE[index][1]
     baby.contact_name = data['connect_man']
     baby.contact_phone = data['connect_phone']
     baby.another_contact_name = data['by_connect_man']
     baby.another_contact_phonenumber = data['by_connect_phone']
     if data['guomin'] == '有':
         baby.is_allergy = True
     else:
         baby.is_allergy = False
     baby.allergy = data['guomin_history']
     baby.image = data['touxiang']
     baby.card_type = data['card_type']
     baby.idcard = data['idcard']
     baby.school = data['school']
     baby.school_area = data['school_area']
     yonghu = Yonghu.objects.get(open_id=c2s(data['appid'], data['code'])['openid'])
     yh = ContentType.objects.get_for_model(Yonghu)
     baby.content_type = yh
     baby.object_id = yonghu.id
     baby.save()
     response = self.wrap_json_response(code=ReturnCode.SUCCESS, message='baby success.')
     return JsonResponse(data=response, safe=False)
示例#11
0
    def post(self, request):
        """
        授权登陆函数,方法为POST
        :param request: 传入的web请求,方法为POST,传入三个参数,code, appid
        :return: Jsonresponse data中储存状态码,表示登陆是否成功
        """
        post_data = request.body.decode('utf-8')
        post_data = json.loads(post_data)
        code = post_data.get('code')
        app_id = post_data.get('appid')

        if not code or not app_id:
            response = AuthorizedView.wrap_json_response(code=ReturnCode.BROKEN_PARAMS)
            return JsonResponse(data=response, safe=False)

        data = auth.c2s(app_id, code)
        open_id = data.get('openid')
        error_code = data.get('errcode')

        if error_code == -1:
            response = AuthorizedView.wrap_json_response(code=ReturnCode.FAILED)
            return JsonResponse(data=response, safe=False)
        elif error_code == 40029:
            response = AuthorizedView.wrap_json_response(code=ReturnCode.WRONG_CODE)
            return JsonResponse(data=response, safe=False)
        elif error_code == 45011:
            response = AuthorizedView.wrap_json_response(code=ReturnCode.FREQUENCY_LIMITED)
            return JsonResponse(data=response, safe=False)

        request.session['open_id'] = open_id
        request.session['is_authorized'] = True
        nickname = settings.nickname + open_id[:-6]

        # 如果数据库中不存在该用户,则将其注册,存入数据库
        if not User.objects.filter(open_id=open_id):
            new_user = User(open_id=open_id, nickname=nickname)
            new_user.save()

        response = AuthorizedView.wrap_json_response(code=ReturnCode.SUCCESS)
        return JsonResponse(data=response, safe=False)
示例#12
0
def __authorize_by_code(request):
    response = {}
    post_data = request.body.decode('utf-8')
    post_data = json.loads(post_data)
    logger.info(f"user post data, check {post_data}")
    app_id = post_data.get('appId').strip()
    nickname = post_data.get('nickname').strip()
    code = post_data.get('code').strip()
    print(code)
    print(app_id)
    if not (app_id and code):
        response['result_code'] = ReturnCode.BROKEN_AUTHORIZED_DATA
        response['message'] = 'authorized failed. need entire authorization data.'
        return JsonResponse(response, safe=False)
    try:
        data = c2s(app_id, code)
    except Exception as e:
        print(e)
        response['result_code'] = ReturnCode.FAILED
        response['message'] = 'authorized failed.'
        return JsonResponse(response, safe=False)
    open_id = data.get('openid')
    if not open_id:
        response['result_code'] = ReturnCode.FAILED
        response['message'] = 'authorization error.'
        return JsonResponse(response, safe=False)
    request.session['open_id'] = open_id
    request.session['is_authorized'] = True

    print(open_id)
    # User.objects.get(open_id=open_id) # do not use get,if the result !=1 the program will throw errors
    # if the user doesn't exit, then create a new one
    if not User.objects.filter(open_id=open_id):
        new_user = User(open_id=open_id, nickname=nickname)
        new_user.save()

    message = 'user authorize successfully.'
    response = CommonResponseMixin.wrap_json_response(data={}, code=ReturnCode.SUCCESS, message=message)
    return JsonResponse(response, safe=False)
示例#13
0
def __authorize_by_code(request):
    '''
    使用wx.login的到的临时code到微信提供的code2session接口授权
    '''
    post_data = request.body.decode('utf-8')
    post_data = json.loads(post_data)
    code = post_data.get('code').strip()
    app_id = post_data.get('appId').strip()
    nickname = post_data.get('nickname').strip()
    print("nickname:",nickname)

    response = {}
    if not code or not app_id:
        print("ddd")
        response['message'] = 'authorized failed, need entire authorization data.'
        response['code '] = ReturnCode.BROKEN_AUTHORIZED_DATA
        return JsonResponse(data=response, safe=False)

    data = c2s(app_id, code)
    openid = data.get('openid')
    print('get openid: ', openid)
    if not openid:
        response = wrap_json_response(code=ReturnCode.FAILED, message='auth failed')
        return JsonResponse(data=response, safe=False)

    request.session['open_id'] = openid
    request.session['is_authorized'] = True

    if not User.objects.filter(open_id=openid):
        new_user = User(open_id=openid, nickname=nickname)
        print('new user: open_id: %s, nickname: %s' % (openid, nickname))
        new_user.save()

    response = wrap_json_response(code=ReturnCode.SUCCESS, message='auth success.')
    print('new user: open_id: %s, nickname: %s' % (openid, nickname))
    return JsonResponse(data=response, safe=False)
    pass
def __authorize_by_code(request):
    """
    使用wx.login拿到的临时code到微信提供的code2session接口授权
    """
    post_data = request.body.decode('utf-8')
    post_data = json.loads(post_data)
    code = post_data.get('code').strip()
    app_id = post_data.get('appId').strip()
    nickname = post_data.get('nickname').strip()

    response = {}
    if not code or not app_id:
        response['message'] = '认证不完整,需要完整数据'
        response['code'] = ReturnCode.BROKEN_AUTHORIZED_DATA
        return JsonResponse(data=response, safe=False)

    # 将app_id和code拼凑成url,去微信接口服务做认证,返回值是认证结果
    data = c2s(app_id, code)
    openid = data.get('openid')
    print('get openid:',openid)
    if not openid:
        # 如果openid不存在,返回认证失败的接口信息
        response = CommonResponseMixin.wrap_json_response(code=ReturnCode.SUCCESS, message='auth failed')
        return JsonResponse(data=response, safe=False)

    # open_id存在就做进一步开发,利用session中间件标记两个数据
    request.session['open_id'] = openid
    request.session['is_authorized'] = True

    if not User.objects.filter(open_id=openid):
        # 如果数据库中查不到这个open_id就保存
        new_user = User(open_id=openid, nickname=nickname)
        print('new user: open_id: %s, nickname: %s' %(openid, nickname))
        new_user.save()

    response = CommonResponseMixin.wrap_json_response(code=ReturnCode.SUCCESS, message='auth success')
    return JsonResponse(data=response, safe=False)
示例#15
0
 def get(self, request):
     code = request.GET.get('code')
     appId = request.GET.get('appId')
     open_id = c2s(appId, code)['openid']
     yonghu = Yonghu.objects.get(open_id=open_id)
     child = yonghu.child.all()
     data = []
     for ch in child:
         baby = {}
         baby['id'] = ch.id
         baby['name'] = ch.name
         baby['date'] = ch.born_date
         baby['sex'] = ch.gender
         baby['grade'] = ch.grade
         baby['connect_man'] = ch.contact_name
         baby['connect_phone'] = ch.contact_phone
         baby['by_connect_man'] = ch.another_contact_name
         baby['by_connect_phone'] = ch.another_contact_phonenumber
         if ch.is_allergy == True:
             baby['guomin'] = '有'
         else:
             baby['guomin'] = '无'
         baby['allergy'] = ch.allergy
         baby['touxiang'] = ch.image
         baby['card_type'] = ch.card_type
         baby['idcard'] = ch.idcard
         baby['school'] = ch.school
         school_area = []
         liebiao = re.match(r"\['(\w+)', '(\w+)', '(\w+)'\]", ch.school_area).groups()
         for n in liebiao:
             school_area.append(n)
         print(school_area)
         baby['school_area'] = school_area
         data.append(baby)
     print(data)
     data = self.wrap_json_response(data=data, code=ReturnCode.SUCCESS, message='child success.')
     return JsonResponse(data=data, safe=False)
示例#16
0
def __authorize_by_code(request):
    '''
    使用wx.login的到的临时code到微信提供的code2session接口授权
    '''
    post_data = request.body.decode('utf-8')
    post_data = json.loads(post_data)
    # print(post_data)
    code = post_data.get('code')
    nickname = post_data.get('nickname')
    avatar = post_data.get('avatarUrl')
    city = post_data.get('city')
    gender = post_data.get('gender')
    province = post_data.get('province')

    if not code:
        response = 'no code'
        return JsonResponse(data=response, safe=False)

    data = c2s(code)
    openid = data.get('openid')
    # print('get openid: ', openid)
    if not openid:
        response = 'no code'
        return JsonResponse(data=response, safe=False)

    if not User.objects.filter(open_id=openid):
        new_user = User(open_id=openid,
                        nickname=nickname,
                        avatar=avatar,
                        city=city,
                        gender=gender,
                        province=province)
        new_user.save()
        # print(new_user)

    response = openid
    return JsonResponse(data=response, safe=False)
示例#17
0
文件: views.py 项目: Quanfita/AI_DCS
def __authorize_by_code(request):
    '''
    使用wx.login的到的临时code到微信提供的code2session接口授权
    '''
    post_data = request.body.decode('utf-8')
    post_data = json.loads(post_data)
    code = post_data.get('code').strip()
    app_id = post_data.get('appId').strip()
    nickname = post_data.get('nickname').strip()
    image = post_data.get('image').strip()
    city = post_data.get('city').strip()
    country = post_data.get('country').strip()
    gender = post_data.get('gender')
    province = post_data.get('province').strip()
    if gender == 1:
        gender = 'male'
    if gender == 0:
        gender = 'female'
    response = {}
    if not code or not app_id:
        response[
            'message'] = 'authorized failed, need entire authorization data.'
        response['code '] = ReturnCode.BROKEN_AUTHORIZED_DATA
        return JsonResponse(data=response, safe=False)

    data = c2s(app_id, code)
    openid = data.get('openid')

    print('get openid: ', openid)
    if not openid:
        response = wrap_json_response(code=ReturnCode.FAILED,
                                      message='auth failed')
        return JsonResponse(data=response, safe=False)

    request.session['open_id'] = openid
    request.session['is_authorized'] = True
    user = UserProfile.objects.filter(open_id=openid)
    print(request.session)

    if not user:
        r = requests.get(image)
        with open(Root_DIR + '/media/image/%s.png' % openid, 'wb') as f:
            f.write(r.content)
        image = 'image/%s.png' % openid
        new_user = UserProfile(open_id=openid,
                               nickname=nickname,
                               image=image,
                               gender=gender,
                               address=country + "\t" + province + "\t" + city,
                               username=openid)
        print('new user: open_id: %s, nickname: %s' % (openid, nickname))
        new_user.save()
        response = {
            "nick_name": new_user.nickname,
            "image": str(new_user.image),
            "code": ReturnCode.SUCCESS
        }
        print(response)
        return JsonResponse(data=response, safe=False)
    else:
        # TypeError: Object of type 'ImageFieldFile' is not JSON serializable
        # response={"nick_name":user[0].nickname,"image":user[0].image.path,"code":ReturnCode.SUCCESS}
        # path 是打印完整目录, str打印内容
        response = {
            "nick_name": user[0].nickname,
            "image": str(user[0].image),
            "code": ReturnCode.SUCCESS
        }

        # response = wrap_json_response(code=ReturnCode.SUCCESS, message='{ "nick_name" success.')
        print(response)
        return JsonResponse(data=response, safe=False)
示例#18
0
def __authorize_by_code(request):
    if (request.session.session_key is not None):
        logger.info('session content in auth/authorize01: ' +
                    request.session.session_key)
    # , " : " + request.session.items()
    response = {}
    post_data = request.body.decode('utf-8')
    post_data = json.loads(post_data)
    app_id = post_data.get('appId').strip()
    nickname = post_data.get('nickname').strip()
    code = post_data.get('code').strip()
    if not (app_id and code):
        response['result_code'] = ReturnCode.BROKEN_AUTHORIZED_DATA
        response[
            'message'] = 'authorized failed. need entire authorization data.'
        return JsonResponse(response, safe=False)
    try:
        # 标准微信访问
        data = c2s(app_id, code)
    except Exception as e:
        print("exception occured: ", e)
        response['result_code'] = ReturnCode.FAILED
        response['message'] = 'authorized failed.'
        return JsonResponse(response, safe=False)
    open_id = data.get('openid')
    if not open_id:
        response['result_code'] = ReturnCode.FAILED
        response['message'] = 'authorization error.'
        return JsonResponse(response, safe=False)
    request.session['open_id'] = open_id
    request.session['is_authorized'] = True
    if (request.session.session_key is not None):
        logger.info('session content in auth/authorize01: ' +
                    request.session.session_key)

    # User.objects.get(open_id=open_id) # 不要用get,用get查询如果结果数量 !=1 就会抛异常
    # 如果用户不存在,则新建用户
    if not User.objects.filter(open_id=open_id):
        # if nickname != "宁默":
        #     response['result_code'] = ReturnCode.FAILED
        #     response['message'] = 'You are not my kids.'
        #     return JsonResponse(response, safe=False)
        # else:
        new_user = User(open_id=open_id, nickname=nickname)
        # 初始化新用户
        new_user.save()
        # 默认情况下为用户添加“图片上传功能”
        initMenu = []
        imageApp = App.objects.get(
            appid='549eaaf72cb23716e2b1313acfaed23c')  # 图片上传
        # print("this is myInit method in User: "******"add new user : "******"add a new user : " + new_user.nickname)

    message = 'user authorize successfully.'
    response = wrap_json_response(data={},
                                  code=ReturnCode.SUCCESS,
                                  message=message)
    return JsonResponse(response, safe=False)
示例#19
0
def __authorize_by_code(request):
    '''
    使用wx.login的到的临时code到微信提供的code2session接口授权

    post_data = {
        'encryptedData': 'xxxx',
        'appId': 'xxx',
        'sessionKey': 'xxx',
        'iv': 'xxx'
    }
    '''
    response = {}
    post_data = request.body.decode('utf-8')
    post_data = json.loads(post_data)
    app_id = post_data.get('appId').strip()
    code = post_data.get('code').strip()
    if not (app_id and code):
        response['result_code'] = ReturnCode.BROKEN_AUTHORIZED_DATA
        response[
            'message'] = 'authorized failed. need entire authorization data.'
        return JsonResponse(response, safe=False)
    try:
        data = c2s(app_id, code)
    except Exception as e:
        response['result_code'] = ReturnCode.FAILED
        response['message'] = 'authorized failed.'
        return JsonResponse(response, safe=False)
    open_id = data.get('openid')
    if not open_id:
        response['result_code'] = ReturnCode.FAILED
        response['message'] = 'authorization error.'
        return JsonResponse(response, safe=False)
    request.session['open_id'] = open_id
    request.session['is_authorized'] = True

    # User.objects.get(open_id=open_id) # 不要用get,用get查询如果结果数量 !=1 就会抛异常
    # 如果用户不存在,则新建用户
    if not UserInfo.objects.filter(openid=open_id):
        new_user = UserInfo(openid=open_id)
        new_user.save()

    user = UserInfo.objects.filter(openid=open_id)[0]
    # user = UserInfo.objects.filter(openid="ozMjy5HyQ8l7u691BTymwy7_Rwy4")[0]
    user_id = user.user_id
    account_info = AccountInfo(id=user_id)

    if (not Register.objects.filter(user=user_id)) and (
            not UserClub.objects.filter(user=user_id)):
        account_info.set_status(register=False, status=False)
    else:
        account_info.set_status(register=True, status=user.judge_invalid)

    if user.judge_invalid:
        account_info.set_power(user.userpower)
        account_info.set_position(user.userclub)
        account_info.set_global(Master.objects.all()[0])

    # 自定义类对象转换成json对象   普通对象直接用 json.dumps(object_name) 即可
    json_account_info = json.dumps(account_info.__dict__, ensure_ascii=False)
    message = 'user authorize successfully.'
    response = wrap_json_response(data=json_account_info,
                                  code=ReturnCode.SUCCESS,
                                  message=message)
    return JsonResponse(response, safe=False)
示例#20
0
def __authorize_by_code(request):
    response = {}
    post_data = request.body.decode('utf-8')
    post_data = json.loads(post_data)
    app_id = post_data.get('appId').strip()
    nickname = post_data.get('nickname').strip()
    code = post_data.get('code').strip()
    group = post_data.get('group')
    password = post_data.get('password')
    print('group is', group)
    student_pwd = Group.objects.filter(name='student').first().rolecode.code
    teacher_pwd = Group.objects.filter(name='teacher').first().rolecode.code
    print(type(password), password, type(teacher_pwd), teacher_pwd)

    if not (app_id and code):
        response['result_code'] = ReturnCode.BROKEN_AUTHORIZED_DATA
        response[
            'message'] = 'authorized failed. need entire authorization data.'
        return JsonResponse(response, safe=False)
    try:
        data = c2s(app_id, code)
    except Exception as e:
        print(e)
        response['result_code'] = ReturnCode.FAILED
        response['message'] = 'authorized failed.'
        return JsonResponse(response, safe=False)
    open_id = data.get('openid')
    if not open_id:
        response['result_code'] = ReturnCode.FAILED
        response['message'] = 'authorization error.'
        return JsonResponse(response, safe=False)
    if group == 'teacher' and password != teacher_pwd:
        print('password is', password, 'teacher_pwd is', teacher_pwd)
        response['result_code'] = ReturnCode.FAILED
        response['message'] = '密码错误.'
        return JsonResponse(response, safe=False)
    # if  group=='student' and password!=student_pwd:
    #     response['result_code'] = ReturnCode.FAILED
    #     response['message'] = '密码错误.'
    #     return JsonResponse(response, safe=False)
    request.session['open_id'] = open_id
    request.session['is_authorized'] = True
    request.session['group'] = group

    print('session group is', request.session['group'])

    # User.objects.get(open_id=open_id) # 不要用get,用get查询如果结果数量 !=1 就会抛异常
    # 如果用户不存在,则新建用户
    if not User.objects.filter(open_id=open_id):
        if group == 'teacher':
            print('is admin')
            group = Group.objects.filter(id=2).first()
            new_user = User.objects.create_user(open_id=open_id,
                                                username=nickname,
                                                nickname=nickname,
                                                is_staff=1)
        else:
            print('is student')
            group = Group.objects.filter(id=1).first()
            new_user = User.objects.create_user(open_id=open_id,
                                                username=nickname,
                                                nickname=nickname)
        new_user.groups.add(group)
        new_user.save()

    else:
        if group == 'teacher':
            print('is admin')
            group = Group.objects.filter(id=2).first()
            new_user = User.objects.filter(open_id=open_id).first()
        else:
            print('is student')
            group = Group.objects.filter(id=1).first()
            new_user = User.objects.filter(open_id=open_id).first()
        new_user.groups.add(group)
        new_user.save()

    message = 'user authorize successfully.'
    response = wrap_json_response(data={},
                                  code=ReturnCode.SUCCESS,
                                  message=message)
    return JsonResponse(response, safe=False)