def post(self, request): ''' 后台登录接口 ''' try: serializer = self.get_serializer(data=request.data) if not serializer.is_valid(): return Response({ "message": str(serializer.errors), "errorCode": 2, "data": {} }) data = (serializer.data) username = data.get('username') password = data.get('password') user = User.objects.filter( Q(username=username) | Q(mobile=username) | Q(email=username)).first() if not user: return Response({ "message": "用户不存在", "errorCode": 2, "data": {} }) if user.group.group_type in ['NormalUser']: return Response({ "message": "非法登录,不是后台用户!", "errorCode": 2, "data": {} }) if user.is_freeze in ['1', 1]: return Response({ "message": "账号被冻结,无法登录。", "errorCode": 2, "data": {} }) if user.password == password: token_data = jwt_response_payload_handler( jwt_encode_handler(payload=jwt_payload_handler(user)), user, request) user.update_time = datetime.datetime.now() user.save() return Response({ "message": "登录成功", "errorCode": 0, "data": token_data }) else: return Response({ "message": "密码错误", "errorCode": 2, "data": {} }) except Exception as e: print('发生错误:', e) return Response({ "message": "出现了无法预料的view视图错误:%s" % e, "errorCode": 1, "data": {} })
def post(self, request): try: serialized_data = self.serializer_class(data=request.data) if serialized_data.is_valid(raise_exception=True): username = serialized_data.data['username'] password = serialized_data.data['password'] try: user = User.objects.get(username=username) except User.DoesNotExist as e: raise util_exception.CustomException( detail=ugettext('User credentials are incorrect.'), code=404) if user.check_password(password): payload = jwt_payload_handler(user) # todo: Is deprecated jwt_token = utils.jwt_response_payload_handler( jwt_encode_handler(payload)) return responses.SuccessResponse(jwt_token).send() else: raise util_exception.CustomException( detail=ugettext('User credentials are incorrect.'), code=404) except util_exception.CustomException as e: return responses.ErrorResponse(message=e.detail, status=e.status_code).send() except exceptions.ValidationError as e: return responses.ErrorResponse(message=e.detail, status=e.status_code).send()
def post(self, request): ''' 微信APP第三方登录接口 ''' try: serializer = self.get_serializer(data=request.data) if not serializer.is_valid(): return Response({"message": str(serializer.errors), "errorCode": 2, "data": {}}) # print(serializer.data) code = serializer.data.get('code') user_info = wechat_app_login(code) if user_info.get('errcode') and user_info.get('errcode') != 0: return Response(user_info) # 根据 unionid 查找用户 user = User.objects.filter(union_id=user_info.get('unionid')).first() is_login = 0 if not user: is_login = 1 user = User() user.group_id = 3 user.union_id = user_info.get('unionid') user.nick_name = user_info.get('nickname') user.avatar_url = user_info.get('headimgurl') user.gender = user_info.get('sex') user.region = ' '.join([str(item) for item in [user_info.get('country'), user_info.get('province'), user_info.get('city')] if item != None]) user.save() token_data = jwt_response_payload_handler(jwt_encode_handler(jwt_payload_handler(user)), user, request) token_data['is_login'] = is_login user.update_time = datetime.datetime.now() user.save() return Response({"message": "登录成功", "errorCode": 0, "data": token_data}) except Exception as e: print('发生错误:',e) return Response({"message": "出现了无法预料的view视图错误:%s" % e, "errorCode": 1, "data": {}})
def post(self, request): try: serialized_data = self.serializer_class(data=request.data) if serialized_data.is_valid(raise_exception=True): username = serialized_data.data['username'] password = serialized_data.data['password'] try: user = User.objects.get(username=username) except User.DoesNotExist as e: user = None if user: raise util_exception.CustomException(detail=ugettext( 'User with this credentials is registered before.'), code=400) user = transactions.register_user(username, password) payload = jwt_payload_handler(user) # todo: Is deprecated jwt_token = utils.jwt_response_payload_handler( jwt_encode_handler(payload)) return responses.SuccessResponse(jwt_token, status=201).send() except util_exception.CustomException as e: return responses.ErrorResponse(message=e.detail, status=e.status_code).send() except exceptions.ValidationError as e: return responses.ErrorResponse(message=e.detail, status=e.status_code).send()
def post(self, request): ''' 后台登录接口 ''' try: serializer = self.get_serializer(data=request.data) if not serializer.is_valid(): return Response({ "message": str(serializer.errors), "errorCode": 4, "data": {} }) data = (serializer.data) username = data.get('username') password = data.get('password') user = User.objects.filter( Q(username=username) | Q(phone=username) | Q(email=username)).first() if not user: return Response({ "message": "用户不存在", "errorCode": 2, "data": {} }) if user.status == '0': return Response({ "message": "账号被冻结,无法登录。", "errorCode": 2, "data": {} }) if user.password == password: payload = jwt_payload_handler(user) token = jwt_encode_handler(payload) data = jwt_response_payload_handler(token, user, request) user.update_time = datetime.datetime.now() user.save() return Response({ "message": "登录成功", "errorCode": 0, "data": data }) else: return Response({ "message": "密码错误", "errorCode": 1, "data": {} }) except Exception as e: print('发生错误:', e) return Response({ "message": "出现了无法预料的view视图错误:%s" % e, "errorCode": 1, "data": {} })
def get(self, request): try: if request.user.is_active: jwt_token = utils.jwt_response_payload_handler( request.user.generate_token()) return responses.SuccessResponse(jwt_token).send() else: raise authnz_exceptions.CustomException( detail=ugettext('This user is inactive, contact us.')) except authnz_exceptions.CustomException as e: return responses.ErrorResponse(message=e.detail, status=e.status_code).send()
def post(self, request, *args, **kwargs): ''' 登录 ''' request_data = kwargs.get('data') username = request_data.get('username') password = request_data.get('password') obj_user = UserModel.objects.filter(Q(username=username) | Q(mobile=username) | Q(email=username)).first() if not obj_user: raise CustomerError(errno=1002, errmsg='用户不存在') if obj_user.password == password: token_data = jwt_response_payload_handler(jwt_encode_handler(payload=jwt_payload_handler(obj_user)), obj_user, request) obj_user.last_login = datetime.datetime.now() obj_user.save() return token_data else: raise CustomerError(errno=1002, errmsg='密码错误')
def post(self, request): try: serialized_data = self.serializer_class(data=request.data) if serialized_data.is_valid(raise_exception=True): email = serialized_data.data['email'] password = serialized_data.data['password'] try: user = User.objects.get(email=email) except User.DoesNotExist as e: raise authnz_exceptions.CustomException( detail=ugettext('You did not registered before.')) if user.email_confirmed and user.is_active and user.check_password( password): user.save_last_login() jwt_token = utils.jwt_response_payload_handler( user.generate_token()) return responses.SuccessResponse(jwt_token).send() elif not user.email_confirmed: try: permissions.check_send_email_permission(email) except authnz_exceptions.CustomException as e: raise authnz_exceptions.CustomException( detail=ugettext( 'You did not confirm your email and you' ' reached max email sent, try later.')) user.send_email_confirm(request) raise authnz_exceptions.CustomException( detail=ugettext('You did not confirm your email,' ' We sent you a confirmation email')) elif not user.is_active: raise authnz_exceptions.CustomException( detail=ugettext('Your account is not active,' ' please contact support.')) else: raise authnz_exceptions.CustomException( detail=ugettext('Wrong login credentials.')) except (authnz_exceptions.CustomException, exceptions.ValidationError) as e: return responses.ErrorResponse(message=e.detail, status=e.status_code).send()
def post(self, request): ''' 手机号快速登录接口 ''' try: json_data = {"message": "ok", "errorCode": 0, "data": {}} serializer = self.get_serializer(data=request.data) if not serializer.is_valid(): return Response({"message": str(serializer.errors), "errorCode": 4, "data": {}}) mobile = serializer.data.get('mobile') code = serializer.data.get('code') is_login = 1 # 搜索用户 user_obj = User.objects.filter(mobile=mobile).first() # 搜索缓存 need_value = cache.get(mobile) if not need_value: return Response({"message": "验证码未找到,请重新发送后重试。", "errorCode": 2, "data": {}}) if need_value != code: return Response({"message": "验证码错误。", "errorCode": 2, "data": {}}) if not user_obj: is_login = 0 # 1 # user_obj = User() # user_obj.group_id = 3 # user_obj.nick_name = mobile + '手机用户' # user_obj.save() # 2 user_obj = User(group_id=3, nick_name=mobile + '手机用户', mobile=mobile) user_obj.save() token_data = jwt_response_payload_handler(jwt_encode_handler(jwt_payload_handler(user_obj)), user_obj, request) user_obj.update_time = datetime.datetime.now() user_obj.save() # 清除已经使用的验证码 防止验证码被盗用 cache.delete(mobile) return Response({"message": "登录成功", "errorCode": 0, "data": {'token': token_data.get('token'), 'is_login': is_login}}) except Exception as e: print('发生错误:',e) return Response({"message": "出现了无法预料的view视图错误:%s" % e, "errorCode": 1, "data": {}})
def post(self, request): ''' 微信小程序登录接口 ''' try: serializer = self.get_serializer(data=request.data) if not serializer.is_valid(): return Response({ "message": str(serializer.errors), "errorCode": 2, "data": {} }) print(serializer.data) code = serializer.data.get('code') userInfo = serializer.data.get('userInfo') encrypted_data = serializer.data.get('encrypted_data') iv = serializer.data.get('iv') # print(userInfo.get('avatarUrl')) # 调用微信登录获取openid open_id, union_id, session_key = wechat_mini_login(code) if type(open_id) == dict: return Response(open_id) # 测试绕过微信登录 # open_id = 'asdfasdf21341cdfq345sderffggfwe45' # 根据openid查找用户 we_user = User.objects.filter(open_id=open_id).first() if not union_id: pc_obj = WXBizDataCrypt(settings.WECHAT_MINI_APPID, session_key) union_id = pc_obj.decrypt(encrypted_data, iv).get('unionId') app_user = User.objects.filter(union_id=union_id).first() is_login = 1 print('查看user', user) if we_user and app_user: if not we_user.union_id: we_user.union_id = union_id we_user.save() user = we_user elif we_user and not app_user: if not we_user.union_id: we_user.union_id = union_id we_user.save() user = we_user elif app_user and not we_user: if not app_user.open_id: app_user.open_id = open_id app_user.save() user = app_user else: is_login = 0 user = User() user.group_id = 3 user.open_id = open_id user.union_id = union_id user.nick_name = userInfo.get('nickName') user.avatar_url = userInfo.get('avatarUrl') user.gender = userInfo.get('gender') user.region = ' '.join([ str(item) for item in [ userInfo.get('country'), userInfo.get('province'), userInfo.get('city') ] if item != None ]) user.save() token_data = jwt_response_payload_handler( jwt_encode_handler(payload=jwt_payload_handler(user)), user, request) token_data['is_login'] = is_login user.update_time = datetime.datetime.now() user.save() return Response({ "message": "登录成功", "errorCode": 0, "data": token_data }) except Exception as e: print('发生错误:', e) return Response({ "message": "出现了无法预料的view视图错误:%s" % e, "errorCode": 1, "data": {} })