|  | @@ -3455,3 +3455,101 @@ class AppleAuthLogin(View):
 | 
	
		
			
				|  |  |              print('---')
 | 
	
		
			
				|  |  |              print(user_qs)
 | 
	
		
			
				|  |  |              return self.do_login(user_qs, response)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +class LocalUserView(View):
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    def get(self, request, *args, **kwargs):
 | 
	
		
			
				|  |  | +        request.encoding = 'utf-8'
 | 
	
		
			
				|  |  | +        request_dict = request.GET
 | 
	
		
			
				|  |  | +        operation = kwargs.get('operation', None)
 | 
	
		
			
				|  |  | +        return self.validate(request_dict, operation, CommonService.get_ip_address(request))
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    def post(self, request, *args, **kwargs):
 | 
	
		
			
				|  |  | +        request.encoding = 'utf-8'
 | 
	
		
			
				|  |  | +        request_dict = request.POST
 | 
	
		
			
				|  |  | +        operation = kwargs.get('operation', None)
 | 
	
		
			
				|  |  | +        return self.validate(request_dict, operation, CommonService.get_ip_address(request))
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    def validate(self, request_dict, operation, ip):
 | 
	
		
			
				|  |  | +        language = request_dict.get('language', None)
 | 
	
		
			
				|  |  | +        response = ResponseObject(lang=language)
 | 
	
		
			
				|  |  | +        print(CommonService.getAddr(ip))
 | 
	
		
			
				|  |  | +        if operation == 'login':
 | 
	
		
			
				|  |  | +            return self.do_local_login(request_dict, response)
 | 
	
		
			
				|  |  | +        else:
 | 
	
		
			
				|  |  | +            return response.json(404)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    def do_local_login(self, request_dict, response):
 | 
	
		
			
				|  |  | +        username = request_dict.get('username', None)
 | 
	
		
			
				|  |  | +        app_bundle_id = request_dict.get('app_bundle_id', None)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        user_qs = Device_User.objects.filter(username=username)
 | 
	
		
			
				|  |  | +        if user_qs.exists():
 | 
	
		
			
				|  |  | +            return self.do_login(user_qs, response)
 | 
	
		
			
				|  |  | +        else:
 | 
	
		
			
				|  |  | +            # 如果用户为绑定过则创建用户并进行登录返回token
 | 
	
		
			
				|  |  | +            userID = CommonService.getUserID(μs=False, setOTAID=True)
 | 
	
		
			
				|  |  | +            nickname = 'local_{num}'.format(num=CommonService.RandomStr(6, False))
 | 
	
		
			
				|  |  | +            return self.do_register(userID, nickname, response, app_bundle_id)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    # 登录
 | 
	
		
			
				|  |  | +    def do_login(self, user_qs, response):
 | 
	
		
			
				|  |  | +        now_time = datetime.datetime.utcnow().replace(tzinfo=utc).astimezone(utc)
 | 
	
		
			
				|  |  | +        userID = user_qs[0].userID
 | 
	
		
			
				|  |  | +        print('userID' + userID)
 | 
	
		
			
				|  |  | +        tko = TokenObject()
 | 
	
		
			
				|  |  | +        user_list = user_qs.values("NickName", "userIconUrl", "userIconPath", "username", "userEmail", "phone")
 | 
	
		
			
				|  |  | +        res = tko.generate(data={'userID': userID, 'lang': response.lang, 'user': user_list[0]["username"]})
 | 
	
		
			
				|  |  | +        # 增加角色
 | 
	
		
			
				|  |  | +        user_qs[0].role.add(Role.objects.get(rid=1))
 | 
	
		
			
				|  |  | +        role_dict = ModelService.own_role(userID=userID)
 | 
	
		
			
				|  |  | +        res['rid'] = role_dict['rid']
 | 
	
		
			
				|  |  | +        res['roleName'] = role_dict['roleName']
 | 
	
		
			
				|  |  | +        res['permList'] = ModelService.own_permission(userID)
 | 
	
		
			
				|  |  | +        res['userID'] = userID
 | 
	
		
			
				|  |  | +        # 昵称,邮箱,电话,刷新,头像
 | 
	
		
			
				|  |  | +        userIconPath = str(user_list[0]["userIconPath"])
 | 
	
		
			
				|  |  | +        if userIconPath and userIconPath.find('static/') != -1:
 | 
	
		
			
				|  |  | +            userIconPath = userIconPath.replace('static/', '').replace('\\', '/')
 | 
	
		
			
				|  |  | +            res['userIconUrl'] = SERVER_DOMAIN + 'account/getAvatar/' + userIconPath
 | 
	
		
			
				|  |  | +        else:
 | 
	
		
			
				|  |  | +            res['userIconUrl'] = ''
 | 
	
		
			
				|  |  | +        res['NickName'] = user_list[0]["NickName"] if user_list[0]["NickName"] is not None else ''
 | 
	
		
			
				|  |  | +        res['username'] = user_list[0]["username"] if user_list[0]["username"] is not None else ''
 | 
	
		
			
				|  |  | +        res['userEmail'] = user_list[0]["userEmail"] if user_list[0]["userEmail"] is not None else ''
 | 
	
		
			
				|  |  | +        res['phone'] = user_list[0]["phone"] if user_list[0]["phone"] is not None else ''
 | 
	
		
			
				|  |  | +        print(res)
 | 
	
		
			
				|  |  | +        # 添加用户登录类型
 | 
	
		
			
				|  |  | +        oauth_qs = UserOauth2Model.objects.filter(userID__userID=userID)
 | 
	
		
			
				|  |  | +        auth_type = 0
 | 
	
		
			
				|  |  | +        if oauth_qs.exists():
 | 
	
		
			
				|  |  | +            auth_type = oauth_qs[0].authType
 | 
	
		
			
				|  |  | +        res['authType'] = auth_type
 | 
	
		
			
				|  |  | +        user_qs.update(last_login=now_time, online=True)
 | 
	
		
			
				|  |  | +        return response.json(0, res)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    def do_register(self, userID, nickname, response, appBundleId):
 | 
	
		
			
				|  |  | +        data_valid = DataValid()
 | 
	
		
			
				|  |  | +        if data_valid.name_validate(userID) is not True:
 | 
	
		
			
				|  |  | +            return response.json(105)
 | 
	
		
			
				|  |  | +        try:
 | 
	
		
			
				|  |  | +            Device_User.objects.create(
 | 
	
		
			
				|  |  | +                username=userID,
 | 
	
		
			
				|  |  | +                NickName=nickname,
 | 
	
		
			
				|  |  | +                password=make_password('123456'),
 | 
	
		
			
				|  |  | +                userID=userID,
 | 
	
		
			
				|  |  | +                is_active=True,
 | 
	
		
			
				|  |  | +                user_isValid=True,
 | 
	
		
			
				|  |  | +                is_local=True
 | 
	
		
			
				|  |  | +            )
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        except Exception as e:
 | 
	
		
			
				|  |  | +            errorInfo = traceback.format_exc()
 | 
	
		
			
				|  |  | +            print(errorInfo)
 | 
	
		
			
				|  |  | +            return response.json(424, repr(e))
 | 
	
		
			
				|  |  | +        else:
 | 
	
		
			
				|  |  | +            user_qs = Device_User.objects.filter(Q(userID=userID))
 | 
	
		
			
				|  |  | +            print('---')
 | 
	
		
			
				|  |  | +            print(user_qs)
 | 
	
		
			
				|  |  | +            return self.do_login(user_qs, response)
 |