Beispiel #1
0
def token_generate(email=None, expires_in=TOKEN_EXPIRE_TIME):
    user = UserModel.query\
        .filter(UserModel.email == email) \
        .first()

    # print(user)

    created_at = datetime.datetime.now()
    expired_at = created_at + datetime.timedelta(seconds=expires_in)

    data = {
        #'id': user.id,
        'user_id': user.id,
        'username': user.username,
        'email': user.email,
        'created_at': created_at.isoformat(),
        'expired_at': expired_at.isoformat(),
        'scheme': TOKEN_SCHEME,
        'confirmed': user.confirmed,
        'is_active': user.is_active,
    }

    # change bytes to string
    # token = Serializer(APP_SECRET_KEY, expires_in=expires_in).dumps(data)
    token = Serializer(APP_SECRET_KEY,
                       expires_in=expires_in).dumps(data).decode()
    data['token'] = hashlib.sha384(token.encode()).hexdigest()

    user_token = UserTokenModel(user_id=user.id,
                                token=token,
                                hashed=data['token'],
                                expired_at=expired_at)

    db.session.add(user_token)
    db.session.commit()

    return data