|
@@ -1753,7 +1753,7 @@ class v3LoginView(TemplateView):
|
|
# users = user_qs.values('role__rid', 'role__roleName', 'userID', 'role', 'NickName', 'username', 'userEmail',
|
|
# users = user_qs.values('role__rid', 'role__roleName', 'userID', 'role', 'NickName', 'username', 'userEmail',
|
|
# 'phone', 'password', 'userIconPath', 'user_isValid', 'is_active')[0]
|
|
# 'phone', 'password', 'userIconPath', 'user_isValid', 'is_active')[0]
|
|
users = user_qs.values('role__rid', 'role__roleName', 'userID', 'NickName', 'username', 'userEmail',
|
|
users = user_qs.values('role__rid', 'role__roleName', 'userID', 'NickName', 'username', 'userEmail',
|
|
- 'phone', 'password', 'userIconPath')[0]
|
|
|
|
|
|
+ 'phone', 'password', 'userIconPath', 'fingerprint_enable', 'fingerprint_key')[0]
|
|
if not check_password(password, users['password']):
|
|
if not check_password(password, users['password']):
|
|
return response.json(111)
|
|
return response.json(111)
|
|
userID = users['userID']
|
|
userID = users['userID']
|
|
@@ -1778,6 +1778,8 @@ class v3LoginView(TemplateView):
|
|
res['username'] = users['username'] if users['username'] is not None else ''
|
|
res['username'] = users['username'] if users['username'] is not None else ''
|
|
res['userEmail'] = users['userEmail'] if users['userEmail'] is not None else ''
|
|
res['userEmail'] = users['userEmail'] if users['userEmail'] is not None else ''
|
|
res['phone'] = users['phone'] if users['phone'] is not None else ''
|
|
res['phone'] = users['phone'] if users['phone'] is not None else ''
|
|
|
|
+ res['fingerprint_enable'] = users['fingerprint_enable']
|
|
|
|
+ res['fingerprint_key'] = users['fingerprint_key']
|
|
return response.json(0, res)
|
|
return response.json(0, res)
|
|
else:
|
|
else:
|
|
return response.json(tko.code)
|
|
return response.json(tko.code)
|
|
@@ -3164,3 +3166,126 @@ class v3LoginByCodeView(View):
|
|
return response.json(0, res)
|
|
return response.json(0, res)
|
|
else:
|
|
else:
|
|
return response.json(tko.code)
|
|
return response.json(tko.code)
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+class v3LoginByFingerprintView(View):
|
|
|
|
+ @method_decorator(csrf_exempt) # @csrf_exempt
|
|
|
|
+ def dispatch(self, *args, **kwargs):
|
|
|
|
+ return super(v3LoginByFingerprintView, self).dispatch(*args, **kwargs)
|
|
|
|
+
|
|
|
|
+ def post(self, request, *args, **kwargs):
|
|
|
|
+ request.encoding = 'utf-8'
|
|
|
|
+ lang = request.POST.get('lang', None)
|
|
|
|
+ if not lang:
|
|
|
|
+ lang = request.POST.get('language', None)
|
|
|
|
+ response = ResponseObject(lang)
|
|
|
|
+ request_dict = request.POST
|
|
|
|
+
|
|
|
|
+ was_limited = getattr(request, 'limited', False)
|
|
|
|
+ if was_limited is True:
|
|
|
|
+ return response.json(5)
|
|
|
|
+ return self.validate(request_dict, response)
|
|
|
|
+
|
|
|
|
+ def get(self, request, *args, **kwargs):
|
|
|
|
+ request.encoding = 'utf-8'
|
|
|
|
+ lang = request.GET.get('lang', None)
|
|
|
|
+ if not lang:
|
|
|
|
+ lang = request.GET.get('language', None)
|
|
|
|
+ response = ResponseObject(lang)
|
|
|
|
+ was_limited = getattr(request, 'limited', False)
|
|
|
|
+ if was_limited is True:
|
|
|
|
+ return response.json(5)
|
|
|
|
+ request_dict = request.GET
|
|
|
|
+ return self.validate(request_dict, response)
|
|
|
|
+
|
|
|
|
+ def validate(self, request_dict, response):
|
|
|
|
+ password = request_dict.get("password", None)
|
|
|
|
+
|
|
|
|
+ if password:
|
|
|
|
+ password = CommonService.decode_data(password)
|
|
|
|
+ if password is None:
|
|
|
|
+ return response.json(444)
|
|
|
|
+ else:
|
|
|
|
+ user_qs = Device_User.objects.filter(username=password, is_active=True, user_isValid=True)
|
|
|
|
+ if not user_qs.exists():
|
|
|
|
+ return response.json(104)
|
|
|
|
+ else:
|
|
|
|
+ users = user_qs.values('role__rid', 'role__roleName', 'userID', 'NickName', 'username', 'userEmail',
|
|
|
|
+ 'phone', 'password', 'userIconPath', 'fingerprint_enable', 'fingerprint_key')[0]
|
|
|
|
+ if users['fingerprint_enable'] == 0:
|
|
|
|
+ return response.json(112)
|
|
|
|
+ else:
|
|
|
|
+ userID = users['userID']
|
|
|
|
+ tko = TokenObject()
|
|
|
|
+ res = tko.generate(
|
|
|
|
+ data={'userID': userID, 'lang': response.lang, 'user': users['username'],
|
|
|
|
+ 'm_code': '123413243214'})
|
|
|
|
+ if tko.code == 0:
|
|
|
|
+ now_time = datetime.datetime.utcnow().replace(tzinfo=utc).astimezone(utc)
|
|
|
|
+ user_qs.update(last_login=now_time, language=response.lang)
|
|
|
|
+ res['rid'] = users['role__rid']
|
|
|
|
+ res['roleName'] = users['role__roleName']
|
|
|
|
+ res['permList'] = ModelService.own_permission(userID)
|
|
|
|
+ res['userID'] = userID
|
|
|
|
+ # 昵称,邮箱,电话,刷新,头像
|
|
|
|
+ userIconPath = str(users['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'] = users['NickName'] if users['NickName'] is not None else ''
|
|
|
|
+ res['username'] = users['username'] if users['username'] is not None else ''
|
|
|
|
+ res['userEmail'] = users['userEmail'] if users['userEmail'] is not None else ''
|
|
|
|
+ res['phone'] = users['phone'] if users['phone'] is not None else ''
|
|
|
|
+ res['fingerprint_key'] = CommonService.encode_data(content=users['fingerprint_key'], start=2)
|
|
|
|
+ return response.json(0, res)
|
|
|
|
+ else:
|
|
|
|
+ return response.json(tko.code)
|
|
|
|
+ else:
|
|
|
|
+ return response.json(444)
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+class v3SetFingerprintView(View):
|
|
|
|
+ @method_decorator(csrf_exempt)
|
|
|
|
+ def dispatch(self, *args, **kwargs):
|
|
|
|
+ return super(v3SetFingerprintView, self).dispatch(*args, **kwargs)
|
|
|
|
+
|
|
|
|
+ def post(self, request, *args, **kwargs):
|
|
|
|
+ request.encoding = 'utf-8'
|
|
|
|
+ request_dict = request.POST
|
|
|
|
+ return self.validate(request_dict)
|
|
|
|
+
|
|
|
|
+ def get(self, request, *args, **kwargs):
|
|
|
|
+ request.encoding = 'utf-8'
|
|
|
|
+ request_dict = request.GET
|
|
|
|
+ return self.validate(request_dict)
|
|
|
|
+
|
|
|
|
+ def validate(self, request_dict):
|
|
|
|
+ lang = request_dict.get('lang', None)
|
|
|
|
+ token = request_dict.get('token', None)
|
|
|
|
+ fingerprint_enable = request_dict.get('fingerprint_enable', None)
|
|
|
|
+ fingerprint_key = request_dict.get('fingerprint_key', None)
|
|
|
|
+
|
|
|
|
+ response = ResponseObject()
|
|
|
|
+
|
|
|
|
+ token = TokenObject(token)
|
|
|
|
+ if token.code != 0:
|
|
|
|
+ return response.json(token.code)
|
|
|
|
+
|
|
|
|
+ if not lang:
|
|
|
|
+ return response.json(444, 'lang')
|
|
|
|
+
|
|
|
|
+ response.lang = lang
|
|
|
|
+
|
|
|
|
+ data = {}
|
|
|
|
+
|
|
|
|
+ if fingerprint_enable:
|
|
|
|
+ data['fingerprint_enable'] = int(fingerprint_enable)
|
|
|
|
+
|
|
|
|
+ if fingerprint_key:
|
|
|
|
+ data['fingerprint_key'] = CommonService.decode_data(fingerprint_key, end=3)
|
|
|
|
+
|
|
|
|
+ if len(data) > 0:
|
|
|
|
+ Device_User.objects.filter(userID=token.userID).update(**data)
|
|
|
|
+ return response.json(0)
|