def wxLogin(request): #【1】如果方法是Post,提交验证码和电话号码 if request.method == 'POST': wxLogin = JsonRequest(request.body) #pCode = wxLogin.get('code','') pToken = get_token(request) pMsg = wxLogin.get('code','') #【1】用户存在,绑定微信相关id到用户上,并更新用户信息 try: #【1.1】根据电话号码,验证码进行验证,同时会判断该用户是不是已经绑定微信用户 #如果已经绑定,暂时不先解绑,直接覆盖绑定 result1,info1,lUser = loginBest(GlobalVar.LoginWeiXinBond,wxLogin,pToken) #身份校验,验证码比对不通过 if not result1: return JsonResponse(GlobalVar.RspFail,info1) debug('wxLogin','Verify Code is OK') #【1.2】拉取微信用户信息 #如果该用户已经绑定到某个用户的电话号码,需要先解绑,根据openid等查找用户是不是已经绑定 resultBond,inforToken,infoUser = get_weixin_user_first(pMsg) if not resultBond: debug('wxLogin','get weixin user info error',inforToken) return JsonResponse(GlobalVar.RspFail,inforToken) #【1.3】 #【1.4】根据微信用户的信息和数据库中的用户信息进行合并绑定 #lUser=User.objects.get(PhoneNumber=pPhoneNumber) rusult2,infor2 = lUser.wxBond(inforToken,infoUser) if rusult2: #绑定成功,需要上线微信用户 result,infor = LoginStatus(luser=lUser,ltoken=get_token(request)) #不判断登录状态,没有登录成功也不需要重复绑定 """ if result: return JsonResponse(GlobalVar.RspSuccess,infor2) else: return JsonResponse(GlobalVar.RspFail,infor) """ return JsonResponse(GlobalVar.RspSuccess,infor2) else: return JsonResponse(GlobalVar.RspFail,infor2) #【2】用户不存在,直接新注册用户 except Exception,ex: debug('views_weixin->wxLogin->error:',ex) return JsonResponse(GlobalVar.RspFail,'绑定过程发生异常')
def loginCode(request): #如果是POST方法,提交有数据 if request.method == 'POST': postJsonDict = JsonRequest(request.body) try: result,info,lUser = loginBest(GlobalVar.LoginSetPass,postJsonDict,get_token(request)) if result: return JsonResponse(GlobalVar.RspSuccess,'成功') else: return JsonResponse(GlobalVar.RspFail,info) except: return JsonResponse(GlobalVar.RspFail,'设置密码异常')
def login(request): #如果是POST方法,提交有数据 if request.method == 'POST': postJsonDict = JsonRequest(request.body) try: result,info,lUser = loginBest(GlobalVar.LoginNormal,postJsonDict,get_token(request)) if result: return JsonResponse(GlobalVar.RspSuccess,GlobalVar.UserLoginSuccess) else: return JsonResponse(GlobalVar.RspFail,info) #用户不存在 except: return JsonResponse(GlobalVar.RspFail,'登录异常')
def wxRelease(request): #【1】如果方法是Post,提交验证码和电话号码 if request.method == 'POST': wxLogin = JsonRequest(request.body) try: #【1】使用验证码登录 result1,info1,lUser = loginBest(GlobalVar.LoginWeiXinRelease,wxLogin) #身份校验,验证码比对不通过直接返回,包括用户不存在场景 if not result1: return JsonResponse(GlobalVar.RspFail,info1) #【2】验证登录通过之后,根据返回的用户释放微信绑定 #lUser=User.objects.get(PhoneNumber=pPhoneNumber) rusult2,infor2 = lUser.wxRelease() debug('wxRelease',rusult2,infor2) #依据电话号码来查找对应的csrfToken pPhonNumber = wxLogin.get('PhoneNumber','') lUserToken = UserToken.objects.filter(idUser__PhoneNumber=pPhonNumber) #解除绑定之后,还需要将csrfToken清除下线 if lUserToken.count() > 0: lUserToken.delete() if rusult2: return JsonResponse(GlobalVar.RspSuccess,infor2) else: return JsonResponse(GlobalVar.RspFail,infor2) #【2】其他异常 except: return JsonResponse(GlobalVar.RspFail,'解绑异常') #微信采用GET方法跳转 elif request.method == 'GET': return JsonResponse(GlobalVar.RspFail,'不支持操作') else: return JsonResponse(GlobalVar.RspFail,'不支持操作')