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)
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)
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)
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)
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)
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)
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})
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)