|
@@ -998,6 +998,9 @@ class v3registerView(TemplateView):
|
|
password = request_dict.get('password', None)
|
|
password = request_dict.get('password', None)
|
|
authcode = request_dict.get('authcode', None)
|
|
authcode = request_dict.get('authcode', None)
|
|
lang = request_dict.get('lang', None)
|
|
lang = request_dict.get('lang', None)
|
|
|
|
+ unique = request_dict.get('unique', None)
|
|
|
|
+ if unique:
|
|
|
|
+ delete_local_account(unique)
|
|
response = ResponseObject(lang)
|
|
response = ResponseObject(lang)
|
|
# 解密
|
|
# 解密
|
|
try:
|
|
try:
|
|
@@ -1801,24 +1804,28 @@ class InitInfoView(View):
|
|
|
|
|
|
def get(self, request, *args, **kwargs):
|
|
def get(self, request, *args, **kwargs):
|
|
request.encoding = 'utf-8'
|
|
request.encoding = 'utf-8'
|
|
- return self.validation(request.GET)
|
|
|
|
|
|
+ return self.validation(request.GET, request)
|
|
|
|
|
|
def post(self, request, *args, **kwargs):
|
|
def post(self, request, *args, **kwargs):
|
|
request.encoding = 'utf-8'
|
|
request.encoding = 'utf-8'
|
|
- return self.validation(request.POST)
|
|
|
|
|
|
+ return self.validation(request.POST, request)
|
|
|
|
|
|
- def validation(self, request_dict):
|
|
|
|
|
|
+ def validation(self, request_dict, request):
|
|
response = ResponseObject()
|
|
response = ResponseObject()
|
|
token = request_dict.get('token', None)
|
|
token = request_dict.get('token', None)
|
|
|
|
+ unique = request_dict.get('unique', None)
|
|
tko = TokenObject(token)
|
|
tko = TokenObject(token)
|
|
if tko.code == 0:
|
|
if tko.code == 0:
|
|
userID = tko.userID
|
|
userID = tko.userID
|
|
- return self.init_info(request_dict, userID, response)
|
|
|
|
|
|
+ return self.init_info(request_dict, userID, response, request)
|
|
|
|
+ elif unique:
|
|
|
|
+ return self.update_country(request_dict, response, request)
|
|
else:
|
|
else:
|
|
return response.json(tko.code)
|
|
return response.json(tko.code)
|
|
|
|
|
|
- # 初始化设备token
|
|
|
|
- def init_info(self, request_dict, userID, response):
|
|
|
|
|
|
+ # 初始化设备token
|
|
|
|
+
|
|
|
|
+ def init_info(self, request_dict, userID, response, request):
|
|
# 未读的系统消息
|
|
# 未读的系统消息
|
|
token_val = request_dict.get('token_val', None)
|
|
token_val = request_dict.get('token_val', None)
|
|
m_code = request_dict.get('m_code', None)
|
|
m_code = request_dict.get('m_code', None)
|
|
@@ -1852,11 +1859,13 @@ class InitInfoView(View):
|
|
update(**update_dict)
|
|
update(**update_dict)
|
|
if appBundleId:
|
|
if appBundleId:
|
|
user_ex_qs = UserExModel.objects.filter(userID_id=userID)
|
|
user_ex_qs = UserExModel.objects.filter(userID_id=userID)
|
|
|
|
+ country = CommonService.getAddr(CommonService.get_ip_address(request))
|
|
if user_ex_qs.exists():
|
|
if user_ex_qs.exists():
|
|
update_dict = {
|
|
update_dict = {
|
|
'updTime': now_time,
|
|
'updTime': now_time,
|
|
'appBundleId': appBundleId,
|
|
'appBundleId': appBundleId,
|
|
- 'region': lang
|
|
|
|
|
|
+ 'region': lang,
|
|
|
|
+ 'country': country
|
|
}
|
|
}
|
|
user_ex_qs.update(**update_dict)
|
|
user_ex_qs.update(**update_dict)
|
|
else:
|
|
else:
|
|
@@ -1865,13 +1874,48 @@ class InitInfoView(View):
|
|
'updTime': now_time,
|
|
'updTime': now_time,
|
|
'appBundleId': appBundleId,
|
|
'appBundleId': appBundleId,
|
|
'userID_id': userID,
|
|
'userID_id': userID,
|
|
- 'region': lang
|
|
|
|
|
|
+ 'region': lang,
|
|
|
|
+ 'country': country
|
|
}
|
|
}
|
|
UserExModel.objects.create(**create_dict)
|
|
UserExModel.objects.create(**create_dict)
|
|
# 获取设备是否存在有已被删除
|
|
# 获取设备是否存在有已被删除
|
|
res = {'usmsg': 0} # 预留字段, 有版本app该字段去掉会报错
|
|
res = {'usmsg': 0} # 预留字段, 有版本app该字段去掉会报错
|
|
return response.json(0, res)
|
|
return response.json(0, res)
|
|
|
|
|
|
|
|
+ def update_country(self, request_dict, response, request):
|
|
|
|
+ username = request_dict.get('unique', None)
|
|
|
|
+ appBundleId = request_dict.get('appBundleId', None)
|
|
|
|
+ lang = request_dict.get('lang', '') # 语言区域
|
|
|
|
+ if username and appBundleId:
|
|
|
|
+ country = CommonService.getAddr(CommonService.get_ip_address(request))
|
|
|
|
+ user_qs = Device_User.objects.filter(username=username)
|
|
|
|
+ if user_qs.exists():
|
|
|
|
+ user = user_qs[0]
|
|
|
|
+ user_ex_qs = UserExModel.objects.filter(userID_id=user.userID)
|
|
|
|
+ now_time = int(time.time())
|
|
|
|
+ if user_ex_qs.exists():
|
|
|
|
+ update_dict = {
|
|
|
|
+ 'updTime': now_time,
|
|
|
|
+ 'appBundleId': appBundleId,
|
|
|
|
+ 'region': lang,
|
|
|
|
+ 'country': country
|
|
|
|
+ }
|
|
|
|
+ user_ex_qs.update(**update_dict)
|
|
|
|
+ else:
|
|
|
|
+ create_dict = {
|
|
|
|
+ 'addTime': now_time,
|
|
|
|
+ 'updTime': now_time,
|
|
|
|
+ 'appBundleId': appBundleId,
|
|
|
|
+ 'userID_id': user.userID,
|
|
|
|
+ 'region': lang,
|
|
|
|
+ 'country': country
|
|
|
|
+ }
|
|
|
|
+ UserExModel.objects.create(**create_dict)
|
|
|
|
+ return response.json(0)
|
|
|
|
+ else:
|
|
|
|
+ return response.json(104)
|
|
|
|
+ else:
|
|
|
|
+ return response.json(444)
|
|
|
|
|
|
# 获取验证码
|
|
# 获取验证码
|
|
class verifyAuthcode(TemplateView):
|
|
class verifyAuthcode(TemplateView):
|
|
@@ -2847,7 +2891,9 @@ class Image_Code_RegisterView(TemplateView):
|
|
# 页面输入的验证码
|
|
# 页面输入的验证码
|
|
response = ResponseObject(lang)
|
|
response = ResponseObject(lang)
|
|
valid_code = request_dict.get('id_v_code', None)
|
|
valid_code = request_dict.get('id_v_code', None)
|
|
-
|
|
|
|
|
|
+ unique = request_dict.get('unique', None)
|
|
|
|
+ if unique:
|
|
|
|
+ delete_local_account(unique)
|
|
if not all([userEmail, password, lang, imageCodeId, valid_code]):
|
|
if not all([userEmail, password, lang, imageCodeId, valid_code]):
|
|
return response.json(444)
|
|
return response.json(444)
|
|
try:
|
|
try:
|
|
@@ -3454,3 +3500,116 @@ class AppleAuthLogin(View):
|
|
print('---')
|
|
print('---')
|
|
print(user_qs)
|
|
print(user_qs)
|
|
return self.do_login(user_qs, response)
|
|
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)
|
|
|
|
+
|
|
|
|
+ def post(self, request, *args, **kwargs):
|
|
|
|
+ request.encoding = 'utf-8'
|
|
|
|
+ request_dict = request.POST
|
|
|
|
+ operation = kwargs.get('operation', None)
|
|
|
|
+ print('start_time='+ str((time.time())))
|
|
|
|
+ ip=CommonService.get_ip_address(request)
|
|
|
|
+ print('end_time=' + str((time.time())))
|
|
|
|
+ return self.validate(request_dict, operation)
|
|
|
|
+
|
|
|
|
+ def validate(self, request_dict, operation):
|
|
|
|
+ language = request_dict.get('language', None)
|
|
|
|
+ response = ResponseObject(lang=language)
|
|
|
|
+ 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)
|
|
|
|
+
|
|
|
|
+ if username is None:
|
|
|
|
+ return response.json(444)
|
|
|
|
+
|
|
|
|
+ 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, username, 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, username, 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=username,
|
|
|
|
+ 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)
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+def delete_local_account(username):
|
|
|
|
+ user_qs = Device_User.objects.filter(username=username)
|
|
|
|
+ print(user_qs)
|
|
|
|
+ if user_qs.exists():
|
|
|
|
+ user = user_qs[0]
|
|
|
|
+ if user.is_local:
|
|
|
|
+ user.delete()
|
|
|
|
+ Device_Info.objects.filter(userID__userID=user.userID).delete()
|