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