def get(self, request, *args, **kwargs): if not "base64string" in kwargs: kwargs['getError'] = True return super(ForgetReset, self).get(request, *args, **kwargs) aes = AESCipher() data=None try: data = aes.decrypt(kwargs['base64string']).split("~|@|~") except Exception as e: print(e) kwargs['getError'] = True return super(ForgetReset, self).get(request, *args, **kwargs) timeout = time.mktime(time.strptime(data[4], '%Y-%m-%d-%H-%M-%S')) now = time.mktime(timezone.now().timetuple()) if now>timeout: kwargs['timeout'] = "重置資料已超時,請重新按 忘記密碼。" return super(ForgetReset, self).get(request, *args, **kwargs) try: user = User.objects.get(id=data[0]) if (user.username!=data[1] and user.email!=data[2] and user.profile.resetCode!=data[3]): kwargs['getError'] = True kwargs['form'] = ResetPwd() except Exception as e: print(e) return super(ForgetReset, self).get(request, *args, **kwargs)
def get(self, request, *args, **kwargs): if not "base64string" in kwargs: kwargs["getError"] = True return super(ForgetReset, self).get(request, *args, **kwargs) aes = AESCipher() data = None try: data = aes.decrypt(kwargs["base64string"]).split("~|@|~") except Exception as e: print(e) kwargs["getError"] = True return super(ForgetReset, self).get(request, *args, **kwargs) timeout = time.mktime(time.strptime(data[4], "%Y-%m-%d-%H-%M-%S")) now = time.mktime(timezone.now().timetuple()) if now > timeout: kwargs["timeout"] = "重置資料已超時,請重新按 忘記密碼。" return super(ForgetReset, self).get(request, *args, **kwargs) try: user = User.objects.get(id=data[0]) if user.username != data[1] and user.email != data[2] and user.profile.resetCode != data[3]: kwargs["getError"] = True kwargs["form"] = ResetPwd() except Exception as e: print(e) return super(ForgetReset, self).get(request, *args, **kwargs)
def sendMail(self, request, user, resetCode): timeout = datetime.datetime.strftime(timezone.now() + datetime.timedelta(hours=24), "%Y-%m-%d-%H-%M-%S") cipher = AESCipher() code = cipher.encrypt( str(user.id) + "~|@|~" + user.username + "~|@|~" + user.email + "~|@|~" + resetCode + "~|@|~" + timeout ) url = "http://" + self.getHost(request) + reverse("account:forgetReset", args=(code,)) email = user.email html = """ <!DOCTYPE html> <html> <body> <span>這是您的重置碼(分大小寫):</span><span style="background-color:#eee">{code}</span><br> 以下是重置您密碼的網址:<br> <a href="{url}" target="_blank">點此重置您密碼</a> </body> </html> """.format( url=url, name=user.username, code=resetCode ) text = "這是您的重置碼(分大小寫):\n {code} \n 以下是重置您密碼的網址:\n{url}".format(url=url, code=resetCode) smtp = SMTP() return smtp.send(email, "密碼重置", html, text) # 收件人, 標題, 內容
def checkUser(self,request, *args, **kwargs): base64 = kwargs['base64string'] aes = AESCipher() data = aes.decrypt(base64).split("~|@|~") user = User.objects.get(id=data[0]) if user.username!=data[1]: return False if user.email!=data[2]: return False user.profile.isVerified = True user.profile.save() logout(request) return True
def checkUser(self, request, *args, **kwargs): base64 = kwargs["base64string"] aes = AESCipher() data = aes.decrypt(base64).split("~|@|~") user = User.objects.get(id=data[0]) if user.username != data[1]: return False if user.email != data[2]: return False user.profile.isVerified = True user.profile.save() logout(request) return True
def post(self, request, *args, **kwargs): cipher = AESCipher() code = cipher.encrypt(str(request.user.id)+"~|@|~"+request.user.username+"~|@|~"+request.user.email) url = "http://"+self.getHost(request)+reverse('account:verifyEmail', args=(code,)) email = request.user.email html=""" <!DOCTYPE html> <html> <body> <h3>會員 {name}:</h3> <p>謝謝您的註冊。</p> 以下是您的驗證網址: <a href="{url}">點此驗證</a> </body> </html> """.format(url=url, name=request.user.username) text = "以下是你的驗證網址:\n {url}".format(url=url) response = {} smtp = SMTP() response['success'] = smtp.send(email, "Email 驗證", html , text) # 收件人, 標題, 內容 return JsonResponse(response)
def sendMail(self,request, user, resetCode): timeout = datetime.datetime.strftime(timezone.now()+ datetime.timedelta(hours=24), '%Y-%m-%d-%H-%M-%S') cipher = AESCipher() code = cipher.encrypt(str(user.id)+"~|@|~"+user.username+"~|@|~"+user.email+"~|@|~"+resetCode+ "~|@|~"+timeout ) url = "http://"+self.getHost(request)+reverse('account:forgetReset', args=(code,)) email = user.email html=""" <!DOCTYPE html> <html> <body> <span>這是您的重置碼(分大小寫):</span><span style="background-color:#eee">{code}</span><br> 以下是重置您密碼的網址:<br> <a href="{url}" target="_blank">點此重置您密碼</a> </body> </html> """.format(url=url, name=user.username, code = resetCode) text = "這是您的重置碼(分大小寫):\n {code} \n 以下是重置您密碼的網址:\n{url}".format(url=url, code = resetCode) smtp = SMTP() return smtp.send(email, "密碼重置", html , text) # 收件人, 標題, 內容
def post(self, request, *args, **kwargs): cipher = AESCipher() code = cipher.encrypt(str(request.user.id) + "~|@|~" + request.user.username + "~|@|~" + request.user.email) url = "http://" + self.getHost(request) + reverse("account:verifyEmail", args=(code,)) email = request.user.email html = """ <!DOCTYPE html> <html> <body> <h3>會員 {name}:</h3> <p>謝謝您的註冊。</p> 以下是您的驗證網址: <a href="{url}">點此驗證</a> </body> </html> """.format( url=url, name=request.user.username ) text = "以下是你的驗證網址:\n {url}".format(url=url) response = {} smtp = SMTP() response["success"] = smtp.send(email, "Email 驗證", html, text) # 收件人, 標題, 內容 return JsonResponse(response)