Ajout des fonctionnalitée pour nextcloud
This commit is contained in:
69
deezer_downloader/nextcloud.py
Normal file
69
deezer_downloader/nextcloud.py
Normal file
@@ -0,0 +1,69 @@
|
||||
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)
|
||||
Reference in New Issue
Block a user