コード例 #1
0
ファイル: keys.py プロジェクト: justanr/OpenWebAmp
def hmac(payload, private_key):
    '''Generate a decryptable signature on the server side that the client
    can analzye. Server generated HMAC signatures aren't timed.
    '''
    payload = organize_payload(payload)
    t = Token(secret_key=private_key)
    return t.dumps(payload)
コード例 #2
0
    def confirm(self, token):
        t = Token(current_app.config['SECRET_KEY'])
        try:
            data = t.loads(token.encode('utf-8'))
        except Exception:
            return False
        if data.get('token') != self.id:
            return False

        self.confirmed = True
        db.session.add(self)
        return True
コード例 #3
0
 def change_email(self, token):
     t = Token(current_app.config['SECRET_KEY'])
     try:
         data = t.loads(token.encode('utf-8'))
     except Exception:
         return False
     if data.get('change_email') != self.id:
         return False
     if data.ger('new_email') is None:
         return False
     self.email = data.ger('new_email')
     db.session.add(self)
     return True
コード例 #4
0
    def reset_password(self, new_password):
        t = Token(current_app.config['SECRET_KEY'])
        try:
            data = t.loads(new_password.encode('utf-8'))
        except Exception:
            return False
        user = User.query.get(data.get('reset'))
        if user is None:
            return False

        user.password = new_password
        db.session.add(user)
        return True
コード例 #5
0
 def post(self, request):
     if request.is_ajax():
         username = request.POST.get('userName')
         password = request.POST.get('passWords')
         sex = request.POST.get('sex')
         phone = request.POST.get('phone')
         code = request.POST.get('code')
         email = request.POST.get('email')
         rank = request.POST.get('rank')
         # 超管验证
         s_user = request.POST.get('s_user')
         s_pwd = request.POST.get('s_pwd')
         if all([s_user, s_pwd]):
             superuser = auth.authenticate(username=s_user,
                                           password=s_pwd,
                                           is_superuser=1)
             if superuser:
                 return JsonResponse({'err': 'yz_200'})
             else:
                 return JsonResponse({'err': 'yz_101'})
         # 信息加密,有效期30分钟
         encipher = Token(settings.SECRET_KEY, 1800)
         # bytes类型
         token = encipher.dumps(username)
         # 转字符串
         token = token.decode()
         phone_code = cache.get(phone)
         if phone_code == code:
             send_email.delay(email, username, token)
             redis_user = {
                 'username': username,
                 'password': password,
                 'email': email,
                 'phone': phone,
                 'sex': sex,
                 'rank': rank
             }
             # 缓存在redis中,30分钟后失效
             caches['redis_user'].set(username, redis_user, 1800)
             return JsonResponse({'err': '200'})
         else:
             return JsonResponse({'err': '101'})
     return render(request, 'users/register.html')
コード例 #6
0
def active(request, token):
    if request.method == 'GET':
        try:
            encipher = Token(settings.SECRET_KEY, 1800)
            # 解密
            info = encipher.loads(token)
            user = caches['redis_user'].get(info)
            # 激活账号后存入数据库用户表
            User.objects.create_user(username=user['username'],
                                     password=user['password'],
                                     email=user['email'],
                                     phone=user['phone'],
                                     sex=user['sex'],
                                     is_active=1,
                                     is_rank=user['rank'])
            return render(request, 'users/active.html')
        except Exception:
            return HttpResponse(
                "<h3>该链接已经过期,请重新<a href='http://127.0.0.1:8000/users/register/'>注册</a></h3>"
            )
コード例 #7
0
ファイル: keys.py プロジェクト: justanr/OpenWebAmp
def PrivateKey(id):
    '''Generate a reusable private key for the user.'''
    t = Token(secret_key=current_app.config['SECRET_KEY'])
    return t.dumps({'id':id})
コード例 #8
0
 def generate_email_change_token(self, new_email, expiretion):
     token = Token(current_app.config['SECRET_KEY'])
     return token.dumps({
         'change_email': self.id,
         'new_email': new_email
     }).decode('utf-8')
コード例 #9
0
 def generate_reset_token(self, expiretion=3600):
     token = Token(current_app.config['SECRET_KEY'])
     return token.dumps({'reset': self.id}).decode('utf-8')
コード例 #10
0
 def generate_confimation_token(self, expiretion=3600):
     token = Token(current_app.config['SECRET_KEY'], expiretion)
     return token.dumps({'token': self.id}).decode('utf-8')