from pot_libs.aredis_util.aredis_utils import RedisUtils
from pot_libs.logger import log
from jwt.utils import base64url_decode
from pot_libs.aes_util.aes_util import PrpCrypt
import json


def jwt_user(request):
    """从jwt中解析user_id"""
    token = request.token
    if not token:
        return None
    try:
        payload = base64url_decode(token.split(".")[1])
    except:
        return None
    payload = json.loads(payload.decode("utf-8"))
    user_id = payload.get("user_id")
    return user_id


async def auth_phone_verify(phone, verify):
    """检验手机验证码"""
    verify_server = await RedisUtils().get(f"sms:sms_{phone}")
    log.info(f"auth_phone_verify phone:{phone}, verify_server:{verify_server},"
             f"verify:{verify}")
    if not verify_server:
        return False
    if isinstance(verify_server, str) and verify != verify_server:
        return False
    if isinstance(verify_server, bytes) and verify != verify_server.decode():
        return False
    return True


def check_password(password):
    """加密密码"""
    pc = PrpCrypt()
    password_enc_b = pc.encrypt(str(password))
    password_enc = str(password_enc_b, encoding='utf-8')
    return password_enc