69 lines
2.4 KiB
Python
69 lines
2.4 KiB
Python
import jwt # PyJWT
|
|
from jwt import InvalidTokenError
|
|
from jwt import ExpiredSignatureError
|
|
import os
|
|
from flask import jsonify, abort, session
|
|
from deezer_downloader.configuration import config
|
|
|
|
#def setJwtInCookieToResponse(request, response):
|
|
# jwt_token = request.args.get("jwt")
|
|
# if not jwt_token:
|
|
# return response
|
|
#
|
|
# response.set_cookie(
|
|
# "access_token",
|
|
# jwt_token,
|
|
# max_age=60*60*24,
|
|
# httponly=True,
|
|
# secure=True # True si HTTPS
|
|
# )
|
|
# return response
|
|
|
|
def addJwtInUserSession(request):
|
|
if 'user_uid' in session:
|
|
return
|
|
|
|
jwt_token = request.args.get(config["nextcloud"]["jwt_name_parameter"])
|
|
if not jwt_token:
|
|
return abort(403)
|
|
|
|
try:
|
|
decoded = jwt.decode(jwt_token, config["nextcloud"]["public_key"], algorithms=["ES256"])
|
|
iss = decoded.get("iss")
|
|
iat = decoded.get("iat")
|
|
exp = decoded.get("exp")
|
|
userdata = decoded.get("userdata", {})
|
|
email = userdata.get("email")
|
|
uid = userdata.get("uid")
|
|
display_name = userdata.get("displayName")
|
|
|
|
print("✅ JWT décodé :")
|
|
print("Iss:", iss)
|
|
print("Issued At:", iat)
|
|
print("Expires:", exp)
|
|
print("Email:", email)
|
|
print("UID:", uid)
|
|
print("Display Name:", display_name)
|
|
|
|
#base_dir_user = base_dir.format(user=uid)
|
|
#config["download_dirs"]["base"] = base_dir_user
|
|
|
|
session['user_uid'] = uid
|
|
session['user_email'] = email
|
|
session['user_displayName'] = display_name
|
|
session['user_base_dir'] = config["download_dirs"]["base"] + "\\" + uid
|
|
#createDownloadDirectoriesIfNotExist()
|
|
|
|
print(f"✅ Download base dir set to: {session['user_base_dir']}")
|
|
except ExpiredSignatureError:
|
|
return jsonify({"error": "Token expired"}), 401
|
|
except InvalidTokenError as e:
|
|
print("❌ Erreur de validation du token :", e)
|
|
|
|
def createDownloadDirectoriesIfNotExist():
|
|
os.makedirs(config["download_dirs"]["base"], exist_ok=True)
|
|
os.makedirs(config["download_dirs"]["songs"], exist_ok=True)
|
|
os.makedirs(config["download_dirs"]["albums"], exist_ok=True)
|
|
os.makedirs(config["download_dirs"]["zips"], exist_ok=True)
|
|
os.makedirs(config["download_dirs"]["playlists"], exist_ok=True)
|
|
os.makedirs(config["download_dirs"]["youtubedl"], exist_ok=True) |