import time
import datetime
import jwt
from django.conf import settings
from rest_framework.response import Response
from django.contrib.auth.models import User


def generate_token(user):
    """
     :param user: 用户对象
     :return: 生成的token
    """
    payload = {
        'user_id': user.id,
        'username': user.username,
        'exp': datetime.datetime.utcnow() + datetime.timedelta(weeks=1)  # token过期时间 1week
    }
    token = jwt.encode(payload=payload, key=settings.SECRET_KEY, algorithm='HS256')
    return token


def decode_token_exp_time(token):
    try:
        res_dict = jwt.decode(token, settings.SECRET_KEY, algorithms=['HS256'])
        exp = res_dict.get('exp')
        exp_time = time.ctime(exp)
        return exp_time
    except Exception as e:
        return None