|
@@ -34,6 +34,8 @@ from Service.CommonService import CommonService
|
|
|
from Service.MiscellService import MiscellService
|
|
|
from Service.ModelService import ModelService
|
|
|
from Service.TemplateService import TemplateService
|
|
|
+from Object.AliSmsObject import AliSmsObject
|
|
|
+from django.db.models import Q
|
|
|
|
|
|
|
|
|
# 获取验证码
|
|
@@ -191,7 +193,7 @@ class registerView(TemplateView):
|
|
|
if emailValid.exists():
|
|
|
return response.json(103)
|
|
|
else:
|
|
|
- userEmail=username
|
|
|
+ userEmail = username
|
|
|
if username:
|
|
|
nameValid = Device_User.objects.filter(username=username)
|
|
|
if nameValid.exists():
|
|
@@ -344,7 +346,7 @@ class LoginView(TemplateView):
|
|
|
|
|
|
def LoginUpdate(self, userValid, mcode, response):
|
|
|
userID = userValid[0].userID
|
|
|
- print('userID'+userID)
|
|
|
+ print('userID' + userID)
|
|
|
tko = TokenObject()
|
|
|
res = tko.generate(data={'userID': userID, 'lang': response.lang, 'mcode': mcode})
|
|
|
if tko.code == 0:
|
|
@@ -471,7 +473,7 @@ class ForgetPwdView(TemplateView):
|
|
|
was_limited = getattr(request, 'limited', False)
|
|
|
if was_limited is True:
|
|
|
return response.json(5)
|
|
|
- return self.ValidationError(userName,response)
|
|
|
+ return self.ValidationError(userName, response)
|
|
|
|
|
|
def ValidationError(self, userName, response):
|
|
|
|
|
@@ -510,7 +512,7 @@ class ForgetPwdView(TemplateView):
|
|
|
ses = SesClassObject()
|
|
|
send_res = ses.send_email(send_address_list=[email], subject=send_data['title'], body=send_body)
|
|
|
if send_res is True:
|
|
|
- if redisObj.set_data(key=userID + '_email_reset_pwd',val=reset_pwd,expire=3600):
|
|
|
+ if redisObj.set_data(key=userID + '_email_reset_pwd', val=reset_pwd, expire=3600):
|
|
|
return response.json(0)
|
|
|
else:
|
|
|
return response.json(10, '存储验证失败')
|
|
@@ -560,7 +562,8 @@ class EmailResetPwdView(TemplateView):
|
|
|
redisObj.del_data(key=userID + '_email_reset_pwd')
|
|
|
is_update = user_qs.update(password=make_password(reset_pwd))
|
|
|
if is_update:
|
|
|
- return HttpResponseRedirect("http://www.dvema.com/web/html/paw_update_success.html?code=" + reset_pwd)
|
|
|
+ return HttpResponseRedirect(
|
|
|
+ "http://www.dvema.com/web/html/paw_update_success.html?code=" + reset_pwd)
|
|
|
else:
|
|
|
return response.json(10)
|
|
|
else:
|
|
@@ -603,4 +606,453 @@ class refreshTokenView(TemplateView):
|
|
|
else:
|
|
|
return response.json(code)
|
|
|
else:
|
|
|
- return response.json(444, 'token')
|
|
|
+ return response.json(444, 'token')
|
|
|
+
|
|
|
+
|
|
|
+# 获取验证码
|
|
|
+class v2authCodeView(TemplateView):
|
|
|
+
|
|
|
+ @method_decorator(csrf_exempt)
|
|
|
+ def dispatch(self, *args, **kwargs):
|
|
|
+ return super(v2authCodeView, self).dispatch(*args, **kwargs)
|
|
|
+
|
|
|
+ @ratelimit(key='ip', rate='2/m')
|
|
|
+ def post(self, request, *args, **kwargs):
|
|
|
+ request.encoding = 'utf-8'
|
|
|
+ lang = request.POST.get('lang', None)
|
|
|
+ response = ResponseObject(lang)
|
|
|
+ was_limited = getattr(request, 'limited', False)
|
|
|
+ if was_limited is True:
|
|
|
+ return response.json(5)
|
|
|
+ request_dict = request.POST
|
|
|
+ return self.ValidationError(request_dict, response)
|
|
|
+
|
|
|
+ @ratelimit(key='ip', rate='2/m')
|
|
|
+ def get(self, request, *args, **kwargs):
|
|
|
+ # Device_User.objects.filter(userEmail='chanjunkai@163.com').delete()
|
|
|
+ request.encoding = 'utf-8'
|
|
|
+ lang = request.GET.get('lang', 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.ValidationError(request_dict, response)
|
|
|
+
|
|
|
+ def ValidationError(self, request_dict, response):
|
|
|
+ email = request_dict.get('email', None)
|
|
|
+ phone = request_dict.get('phone', None)
|
|
|
+ if email is not None:
|
|
|
+ email = email.strip()
|
|
|
+ return self.emailCode(email, response)
|
|
|
+ elif phone is not None:
|
|
|
+ phone = phone.strip()
|
|
|
+ return self.phoneCode(phone, response)
|
|
|
+ else:
|
|
|
+ return response.json(444)
|
|
|
+
|
|
|
+ def emailCode(self, email, response):
|
|
|
+ dataValid = DataValid()
|
|
|
+ # 邮箱匹配
|
|
|
+ if dataValid.email_validate(email) is False:
|
|
|
+ return response.json(107)
|
|
|
+ reds = RedisObject()
|
|
|
+ identifyingCode = reds.get_data(key=email + '_identifyingCode')
|
|
|
+ # 是否以获取邮箱验证码
|
|
|
+ if identifyingCode is True:
|
|
|
+ return response.json(89)
|
|
|
+ user_qs = Device_User.objects.filter(username=email)
|
|
|
+ email_qs = Device_User.objects.filter(userEmail=email)
|
|
|
+ # 邮箱用户是否已存在
|
|
|
+ if user_qs.exists():
|
|
|
+ return response.json(103)
|
|
|
+ elif email_qs.exists():
|
|
|
+ return response.json(103)
|
|
|
+ # 生成随机6位数
|
|
|
+ identifyingCode = RandomStr(6, True)
|
|
|
+ # 设置随机数缓存生命周期
|
|
|
+ if reds.set_data(key=email + '_identifyingCode', val=identifyingCode, expire=AuthCode_Expire) is not True:
|
|
|
+ return response.json(10, '生成缓存系统错误')
|
|
|
+ send_data = TemplateService.email_message(type='register_code', language=response.lang)
|
|
|
+ ses = SesClassObject()
|
|
|
+ # 发送邮件
|
|
|
+ send_res = ses.send_email(
|
|
|
+ send_address_list=[email],
|
|
|
+ subject=send_data['title'],
|
|
|
+ body=send_data['body'].replace("{username}", email).replace("{captcha}",
|
|
|
+ str(identifyingCode))
|
|
|
+ )
|
|
|
+ if send_res is not True:
|
|
|
+ return response.json(44)
|
|
|
+ reds.set_data(key=email + '_registerCode', val=identifyingCode, expire=AuthCode_Expire)
|
|
|
+ return response.json(0, {'identifyingCode': identifyingCode})
|
|
|
+
|
|
|
+ def phoneCode(self, phone, response):
|
|
|
+ dataValid = DataValid()
|
|
|
+ if dataValid.mobile_validate(phone) is not True:
|
|
|
+ return response.json(107)
|
|
|
+ reds = RedisObject()
|
|
|
+ identifyingCode = reds.get_data(key=phone + '_identifyingCode')
|
|
|
+ if identifyingCode:
|
|
|
+ return response.json(90)
|
|
|
+ user_qs = Device_User.objects.filter(username=phone)
|
|
|
+ phone_qs = Device_User.objects.filter(phone=phone)
|
|
|
+ if user_qs.exists() or phone_qs.exists():
|
|
|
+ return response.json(101)
|
|
|
+ identifyingCode = RandomStr(6, True)
|
|
|
+ if reds.set_data(key=phone + '_identifyingCode', val=identifyingCode, expire=300) is not True:
|
|
|
+ return response.json(10, '生成缓存系统错误')
|
|
|
+ # 发送手机验证码
|
|
|
+ aliSms = AliSmsObject()
|
|
|
+ res = aliSms.send_code_sms(phone=phone, code=identifyingCode, sign_name='Ansjer',
|
|
|
+ temp_msg='SMS_151600991')
|
|
|
+ if res["Code"] == "OK":
|
|
|
+ return response.json(0)
|
|
|
+ # return response.json(0, {'identifyingCode': identifyingCode})
|
|
|
+ else:
|
|
|
+ return response.json(10, res["Message"])
|
|
|
+
|
|
|
+
|
|
|
+# 验证码注册
|
|
|
+class v2registerView(TemplateView):
|
|
|
+ @method_decorator(csrf_exempt)
|
|
|
+ def dispatch(self, *args, **kwargs):
|
|
|
+ return super(v2registerView, self).dispatch(*args, **kwargs)
|
|
|
+
|
|
|
+ def post(self, request, *args, **kwargs):
|
|
|
+ request.encoding = 'utf-8'
|
|
|
+ request_dict = request.POST
|
|
|
+ return self.validates(request_dict)
|
|
|
+
|
|
|
+ def get(self, request, *args, **kwargs):
|
|
|
+ request.encoding = 'utf-8'
|
|
|
+ request_dict = request.GET
|
|
|
+ return self.validates(request_dict)
|
|
|
+
|
|
|
+ def validates(self, request_dict):
|
|
|
+ phone = request_dict.get('phone', None)
|
|
|
+ email = request_dict.get('email', None)
|
|
|
+
|
|
|
+ password = request_dict.get('password', None)
|
|
|
+ authcode = request_dict.get('authcode', None)
|
|
|
+ lang = request_dict.get('lang', None)
|
|
|
+ response = ResponseObject(lang)
|
|
|
+ if password is None:
|
|
|
+ return response.json(444, 'password')
|
|
|
+ if authcode is None:
|
|
|
+ return response.json(444, 'identifyingCode')
|
|
|
+ if phone is not None:
|
|
|
+ return self.do_phone_register(phone, password, authcode, response)
|
|
|
+ elif email is not None:
|
|
|
+ return self.do_email_register(email, password, authcode, response)
|
|
|
+ else:
|
|
|
+ return response.json(444, 'phone or email')
|
|
|
+
|
|
|
+ def do_phone_register(self, phone, password, authcode, response):
|
|
|
+ data_valid = DataValid()
|
|
|
+ if data_valid.mobile_validate(phone) is not True:
|
|
|
+ return response.json(100)
|
|
|
+ if data_valid.password_validate(password) is not True:
|
|
|
+ return response.json(109)
|
|
|
+ reds = RedisObject()
|
|
|
+ identifyingCode = reds.get_data(key=phone + '_identifyingCode')
|
|
|
+ # 判断验证码是否过期
|
|
|
+ if identifyingCode is False:
|
|
|
+ return response.json(120)
|
|
|
+ # 验证码是否正确
|
|
|
+ if authcode != identifyingCode:
|
|
|
+ return response.json(121)
|
|
|
+ phone_qs = Device_User.objects.filter(Q(phone=phone) | Q(username=phone))
|
|
|
+ # 是否已存在
|
|
|
+ if phone_qs.exists():
|
|
|
+ return response.json(101)
|
|
|
+ try:
|
|
|
+ users = Device_User.objects.create(
|
|
|
+ phone=phone,
|
|
|
+ password=password,
|
|
|
+ userID=CommonService.getUserID(μs=False, setOTAID=True),
|
|
|
+ is_active=True,
|
|
|
+ user_isValid=True,
|
|
|
+ )
|
|
|
+ except Exception as e:
|
|
|
+ errorInfo = traceback.format_exc()
|
|
|
+ print(errorInfo)
|
|
|
+ return response.json(424, repr(e))
|
|
|
+ else:
|
|
|
+ if not reds.del_data(key=phone + '_identifyingCode'):
|
|
|
+ return response.json(10, '删除缓存验证码错误')
|
|
|
+ return response.json(0, {
|
|
|
+ "user": {
|
|
|
+ "userID": users.userID,
|
|
|
+ "username": users.username,
|
|
|
+ "userEmail": users.userEmail,
|
|
|
+ "phone": users.phone,
|
|
|
+ "NickName": users.NickName,
|
|
|
+ "userIconUrl": str(users.userIconUrl),
|
|
|
+ "is_superuser": users.is_superuser,
|
|
|
+ "is_active": users.is_active,
|
|
|
+ "data_joined": date_handler(users.data_joined),
|
|
|
+ "last_login": date_handler(users.last_login),
|
|
|
+ }
|
|
|
+ })
|
|
|
+
|
|
|
+ def do_email_register(self, email, password, authcode, response):
|
|
|
+ data_valid = DataValid()
|
|
|
+ if data_valid.email_validate(email) is not True:
|
|
|
+ return response.json(105)
|
|
|
+ if data_valid.password_validate(password) is not True:
|
|
|
+ return response.json(109)
|
|
|
+ reds = RedisObject()
|
|
|
+ identifyingCode = reds.get_data(key=email + '_identifyingCode')
|
|
|
+ # 判断验证码是否过期
|
|
|
+ if identifyingCode is False:
|
|
|
+ return response.json(120)
|
|
|
+ # 验证码是否正确
|
|
|
+ if authcode != identifyingCode:
|
|
|
+ return response.json(121)
|
|
|
+ email_qs = Device_User.objects.filter(Q(userEmail=email) | Q(username=email))
|
|
|
+ # 是否已存在
|
|
|
+ if email_qs.exists():
|
|
|
+ return response.json(103)
|
|
|
+ try:
|
|
|
+ users = Device_User.objects.create(
|
|
|
+ userEmail=email,
|
|
|
+ password=password,
|
|
|
+ userID=CommonService.getUserID(μs=False, setOTAID=True),
|
|
|
+ is_active=True,
|
|
|
+ user_isValid=True,
|
|
|
+ )
|
|
|
+ except Exception as e:
|
|
|
+ errorInfo = traceback.format_exc()
|
|
|
+ print(errorInfo)
|
|
|
+ return response.json(424, repr(e))
|
|
|
+ else:
|
|
|
+ if not reds.del_data(key=email + '_identifyingCode'):
|
|
|
+ return response.json(10, '删除缓存验证码错误')
|
|
|
+ return response.json(0, {
|
|
|
+ "user": {
|
|
|
+ "userID": users.userID,
|
|
|
+ "username": users.username,
|
|
|
+ "userEmail": users.userEmail,
|
|
|
+ "NickName": users.NickName,
|
|
|
+ "userIconUrl": str(users.userIconUrl),
|
|
|
+ "is_superuser": users.is_superuser,
|
|
|
+ "is_active": users.is_active,
|
|
|
+ "data_joined": date_handler(users.data_joined),
|
|
|
+ "last_login": date_handler(users.last_login),
|
|
|
+ }
|
|
|
+ })
|
|
|
+
|
|
|
+
|
|
|
+# 忘记密码获取验证码v2
|
|
|
+class v2forgetPwdCodeView(TemplateView):
|
|
|
+ @method_decorator(csrf_exempt)
|
|
|
+ def dispatch(self, *args, **kwargs):
|
|
|
+ return super(v2forgetPwdCodeView, self).dispatch(*args, **kwargs)
|
|
|
+
|
|
|
+ @ratelimit(key='ip', rate='1/m')
|
|
|
+ def get(self, request, *args, **kwargs):
|
|
|
+ request.encoding = 'utf-8'
|
|
|
+ request_dict = request.GET
|
|
|
+ lang = request_dict.get('lang')
|
|
|
+ response = ResponseObject(lang)
|
|
|
+ was_limited = getattr(request, 'limited', False)
|
|
|
+ if was_limited is True:
|
|
|
+ return response.json(5)
|
|
|
+ return self.ValidationError(request_dict, response)
|
|
|
+
|
|
|
+ @ratelimit(key='ip', rate='1/m')
|
|
|
+ def post(self, request):
|
|
|
+ request.encoding = 'utf-8'
|
|
|
+ request_dict = request.POST
|
|
|
+ lang = request_dict.get('lang')
|
|
|
+ response = ResponseObject(lang)
|
|
|
+ was_limited = getattr(request, 'limited', False)
|
|
|
+ if was_limited is True:
|
|
|
+ return response.json(5)
|
|
|
+ return self.ValidationError(request_dict, response)
|
|
|
+
|
|
|
+ def ValidationError(self, request_dict, response):
|
|
|
+ phone = request_dict.get('phone', None)
|
|
|
+ # email = request_dict.get('email', None)
|
|
|
+ if phone is not None:
|
|
|
+ phone = phone.strip()
|
|
|
+ return self.do_phone_pwd_forget(phone, response)
|
|
|
+ else:
|
|
|
+ return response.json(444, 'phone')
|
|
|
+
|
|
|
+ def do_phone_pwd_forget(self, phone, response):
|
|
|
+ data_valid = DataValid()
|
|
|
+ if data_valid.mobile_validate(phone) is not True:
|
|
|
+ return response.json(100)
|
|
|
+ user_qs = Device_User.objects.filter(Q(phone=phone) | Q(username=phone))
|
|
|
+ if not user_qs.exists():
|
|
|
+ return response.json(102)
|
|
|
+ reds = RedisObject()
|
|
|
+ resetCode = reds.get_data(key=phone + '_forgetPwdResetCode')
|
|
|
+ if resetCode is True:
|
|
|
+ return response.json(90)
|
|
|
+ resetCode = RandomStr(6, True)
|
|
|
+ if not reds.set_data(key=phone + '_forgetPwdResetCode', val=resetCode, expire=300):
|
|
|
+ return response.json(10, '生成缓存错误')
|
|
|
+ aliSms = AliSmsObject()
|
|
|
+ res = aliSms.send_code_sms(phone=phone, code=resetCode, sign_name='Ansjer',
|
|
|
+ temp_msg='SMS_151675019')
|
|
|
+ if res["Code"] == "OK":
|
|
|
+ return response.json(0, {'forgetPwdResetCode': resetCode})
|
|
|
+ else:
|
|
|
+ return response.json(10, res["Message"])
|
|
|
+
|
|
|
+
|
|
|
+# 忘记密码v2
|
|
|
+class v2resetPwdByCodeView(TemplateView):
|
|
|
+ @method_decorator(csrf_exempt)
|
|
|
+ def dispatch(self, *args, **kwargs):
|
|
|
+ return super(v2resetPwdByCodeView, self).dispatch(*args, **kwargs)
|
|
|
+
|
|
|
+ def get(self, request, *args, **kwargs):
|
|
|
+ request.encoding = 'utf-8'
|
|
|
+ request_dict = request.GET
|
|
|
+ lang = request_dict.get('lang')
|
|
|
+ response = ResponseObject(lang)
|
|
|
+ was_limited = getattr(request, 'limited', False)
|
|
|
+ if was_limited is True:
|
|
|
+ return response.json(5)
|
|
|
+ return self.ValidationError(request_dict, response)
|
|
|
+
|
|
|
+ def post(self, request):
|
|
|
+ request.encoding = 'utf-8'
|
|
|
+ request_dict = request.POST
|
|
|
+ lang = request_dict.get('lang')
|
|
|
+ response = ResponseObject(lang)
|
|
|
+ was_limited = getattr(request, 'limited', False)
|
|
|
+ if was_limited is True:
|
|
|
+ return response.json(5)
|
|
|
+ return self.ValidationError(request_dict, response)
|
|
|
+
|
|
|
+ def ValidationError(self, request_dict, response):
|
|
|
+ phone = request_dict.get('phone', None)
|
|
|
+ password = request_dict.get('password', None)
|
|
|
+ authcode = request_dict.get('authcode', None)
|
|
|
+ if phone is not None and password is not None and authcode is not None:
|
|
|
+ phone = phone.strip()
|
|
|
+ authcode = authcode.strip()
|
|
|
+ password = password.strip()
|
|
|
+ return self.do_phone_pwd_reset(phone, authcode, password, response)
|
|
|
+ else:
|
|
|
+ return response.json(444, 'phone,password,authcode')
|
|
|
+
|
|
|
+ def do_phone_pwd_reset(self, phone, authcode,password, response):
|
|
|
+ data_valid = DataValid()
|
|
|
+ if data_valid.mobile_validate(phone) is not True:
|
|
|
+ return response.json(100)
|
|
|
+ if data_valid.password_validate(password) is not True:
|
|
|
+ return response.json(109)
|
|
|
+ user_qs = Device_User.objects.filter(Q(phone=phone) | Q(username=phone))
|
|
|
+ if not user_qs.exists():
|
|
|
+ return response.json(102)
|
|
|
+ reds = RedisObject()
|
|
|
+ resetCode = reds.get_data(key=phone + '_forgetPwdResetCode')
|
|
|
+ if resetCode is True:
|
|
|
+ return response.json(90)
|
|
|
+ if authcode != resetCode:
|
|
|
+ return response.json(121)
|
|
|
+ if not reds.set_data(key=phone + '_forgetPwdResetCode', val=resetCode, expire=300):
|
|
|
+ return response.json(10, '生成缓存错误')
|
|
|
+ user_qs.update(password=make_password(password))
|
|
|
+ if not reds.del_data(phone + '_forgetPwdResetCode'):
|
|
|
+ return response.json(10,'删除缓存失败')
|
|
|
+ return response.json(0)
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+# 登录
|
|
|
+class v2LoginView(TemplateView):
|
|
|
+ @method_decorator(csrf_exempt) # @csrf_exempt
|
|
|
+ def dispatch(self, *args, **kwargs):
|
|
|
+ return super(v2LoginView, self).dispatch(*args, **kwargs)
|
|
|
+
|
|
|
+ @ratelimit(key='ip', rate='5/m')
|
|
|
+ def post(self, request, *args, **kwargs):
|
|
|
+ request.encoding = 'utf-8'
|
|
|
+ request_dict = request.POST
|
|
|
+ language = request_dict.get('language', 'en')
|
|
|
+ response = ResponseObject(language)
|
|
|
+ was_limited = getattr(request, 'limited', False)
|
|
|
+ if was_limited is True:
|
|
|
+ return response.json(5)
|
|
|
+ return self.validates(request_dict, response)
|
|
|
+
|
|
|
+ @ratelimit(key='ip', rate='5/m')
|
|
|
+ def get(self, request, *args, **kwargs):
|
|
|
+ request.encoding = 'utf-8'
|
|
|
+ request_dict = request.GET
|
|
|
+ language = request_dict.get('language', 'en')
|
|
|
+ response = ResponseObject(language)
|
|
|
+ was_limited = getattr(request, 'limited', False)
|
|
|
+ if was_limited is True:
|
|
|
+ return response.json(5)
|
|
|
+ return self.validates(request_dict, response)
|
|
|
+
|
|
|
+ def validates(self, request_dict, response):
|
|
|
+ username = request_dict.get('userName', None)
|
|
|
+ password = request_dict.get('userPwd', None)
|
|
|
+ # mcode = request_dict.get('mobileMechanicalCode', '')
|
|
|
+ if username is not None and password is not None:
|
|
|
+ username = username.strip()
|
|
|
+ password = password.strip()
|
|
|
+ data_valid = DataValid()
|
|
|
+ if data_valid.email_validate(username):
|
|
|
+ return self.do_email_login(username,password,response)
|
|
|
+ elif data_valid.mobile_validate(username):
|
|
|
+ return self.do_phone_login(username,password,response)
|
|
|
+ elif data_valid.name_validate(username):
|
|
|
+ return self.do_name_login(username,password,response)
|
|
|
+ else:
|
|
|
+ return response.json(107)
|
|
|
+ else:
|
|
|
+ return response.json(444, 'username,password')
|
|
|
+
|
|
|
+ def do_email_login(self,email,password,response):
|
|
|
+ user_qs = Device_User.objects.filter(Q(username=email)|Q(userEmail=email))
|
|
|
+ if not user_qs.exists():
|
|
|
+ return response.json(104)
|
|
|
+ if not user_qs[0].user_isValid or not user_qs[0].is_active:
|
|
|
+ return response.json(110)
|
|
|
+ return self.valid_login(user_qs,password,response)
|
|
|
+
|
|
|
+ def do_phone_login(self,phone,password,response):
|
|
|
+ user_qs = Device_User.objects.filter(Q(phone=phone)|Q(username=phone))
|
|
|
+ if not user_qs.exists():
|
|
|
+ return response.json(104)
|
|
|
+ if not user_qs[0].user_isValid or not user_qs[0].is_active:
|
|
|
+ return response.json(110)
|
|
|
+ return self.valid_login(user_qs,password,response)
|
|
|
+
|
|
|
+ def do_name_login(self,username,password,response):
|
|
|
+ user_qs = Device_User.objects.filter(username=username)
|
|
|
+ if not user_qs.exists():
|
|
|
+ return response.json(104)
|
|
|
+ if not user_qs[0].user_isValid or not user_qs[0].is_active:
|
|
|
+ return response.json(110)
|
|
|
+ return self.valid_login(user_qs,password,response)
|
|
|
+
|
|
|
+ def valid_login(self,user_qs,password,response):
|
|
|
+ if not check_password(password, user_qs[0].password):
|
|
|
+ return response.json(111)
|
|
|
+ userID = user_qs[0].userID
|
|
|
+ print('userID' + userID)
|
|
|
+ tko = TokenObject()
|
|
|
+ res = tko.generate(data={'userID': userID, 'lang': response.lang})
|
|
|
+ if tko.code == 0:
|
|
|
+ now_time = datetime.datetime.utcnow().replace(tzinfo=utc).astimezone(utc)
|
|
|
+ user_qs.update(last_login=now_time, online=True,language=response.lang)
|
|
|
+ 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
|
|
|
+ print(res)
|
|
|
+ return response.json(0, res)
|
|
|
+ else:
|
|
|
+ return response.json(tko.code)
|