Beispiel #1
0
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,'绑定过程发生异常')
Beispiel #2
0
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,'设置密码异常') 
Beispiel #3
0
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,'登录异常')  
Beispiel #4
0
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,'不支持操作')