Esempio n. 1
0
 def generate_sms_access_token(self):
     serializer = TJSerializer(
         secret_key=settings.SECRET_KEY,
         expires_in=constants.SET_PASSWORD_TOKEN_EXPIRES)
     data = {'mobile': self.mobile}
     token = serializer.dumps(data)  # dumps返回的是byte类型,需要decode一下
     return token.decode()
Esempio n. 2
0
 def generate_email_verify_url(self):
     serializer = TJSerializer(
         secret_key=settings.SECRET_KEY,
         expires_in=constants.EMAIL_VERIFY_TOKEN_EXPIRES)
     data = {'user_id': self.id, 'email': self.email}
     token = serializer.dumps(data)
     verify_url = 'http://www.meiduo.site:8080/success_verify_email.html?token=' + token.decode(
     )
     return verify_url
Esempio n. 3
0
 def generate_email_verify_url(self):
     """生成邮箱激活链接"""
     # 创建加密序列化器
     serializer = TJSerializer(settings.SECRET_KEY, 3600 * 24)
     # 调用序列化器对象dumps方法进行加密
     data = {'user_id': self.id, 'email': self.email}
     token = serializer.dumps(data).decode()
     # 拼接激活url
     return 'http://www.meiduo.site:8080/success_verify_email.html?token=' + token
Esempio n. 4
0
 def check_sms_access_token(access_token):
     serializer = TJSerializer(
         secret_key=settings.SECRET_KEY,
         expires_in=constants.SET_PASSWORD_TOKEN_EXPIRES)
     try:
         data = serializer.load(access_token)
     except BadData:
         return None
     else:
         mobile = data.get('mobile')
         return mobile
Esempio n. 5
0
 def password_reset(self, token, new_password):
     s = TJSerializer(current_app.config['SECRET_KEY'])
     try:
         data = s.loads(token)
     except:
         return False
     if self.id != data.get('reset'):
         return False
     self.password = new_password
     db.session.add(self)
     db.session.commit()
     return True
Esempio n. 6
0
 def email_changed(self, token):
     s = TJSerializer(current_app.config['SECRET_KEY'])
     try:
         data = s.loads(token)
     except:
         return False
     if self.id != data.get('user_id'):
         return False
     self.email = data.get('new_email')
     db.session.add(self)
     db.session.commit()
     return True
Esempio n. 7
0
 def confirmed(self, token):
     if self.is_confirmed:
         return True
     s = TJSerializer(current_app.config['SECRET_KEY'])
     try:
         data = s.loads(token)
     except:
         return False
     if data.get('confirm') != self.id:
         return False
     self.is_confirmed = True
     db.session.add(self)
     db.session.commit()
     return True
Esempio n. 8
0
 def check_email_verify_token(token):
     serializer = TJSerializer(
         secret_key=settings.SECRET_KEY,
         expires_in=constants.EMAIL_VERIFY_TOKEN_EXPIRES)
     try:
         data = serializer.loads(token)
     except BadData:
         return False
     else:
         email = data.get('email')
         user_id = data.get('user_id')
         # 查询用户并更新字段的两种方式
         # user = User.objects.get(id=user_id, email=email)
         # user.email_active = True
         # user.save()
         User.objects.filter(id=user_id,
                             email=email).update(email_active=True)
         return True
Esempio n. 9
0
 def check_verify_email_token(token):
     """对token解密并查询对应的user"""
     #创建序列话器对象
     serializer = TJSerializer(settings.SECRET_KEY, 3600 * 24)
     # 调用loads方法进行解密 解密的时如果过期的话或者数据有问题是会报异常的
     try:
         data = serializer.loads(token)
     except BadData:
         return None
     else:
         id = data.get('user_id')
         email = data.get('email')
         try:
             user = User.objects.get(id=id, email=email)
         except User.DoesNotExist:
             return None
         else:
             return user
Esempio n. 10
0
 def generate_reset_password_token(self, expiration=1800):
     s = TJSerializer(current_app.config['SECRET_KEY'], expiration)
     return s.dumps({'reset': self.id})
Esempio n. 11
0
 def generate_new_email_token(self, new_email, expiration=1800):
     s = TJSerializer(current_app.config['SECRET_KEY'], expiration)
     return s.dumps({'user_id': self.id, 'new_email': new_email})
Esempio n. 12
0
 def generate_confirmation_token(self, expiration=1800):
     s = TJSerializer(current_app.config['SECRET_KEY'], expiration)
     return s.dumps({'confirm': self.id})