def createFolder(): # Chargement de la BD db = InviteUtils.loadJson() # Authentification userId = getUserId(db, request) if not userId: return Error("Utilisateur n'est pas connecté") # Obtention des infos folders = db["folder"] body = request.json folderName = body["name"] if not folderName: return Error("Le nom du dossier est requis") # Creation du dossier folderId = uuid.uuid4().hex newfolder = { "id": folderId, "name": folderName, "files": [], "invitedClients": [], "clients": [userId], "administrator": userId } folders.append(newfolder) # Sauvegarde de la BD InviteUtils.unloadJson(db) # Reponse a l'utilisateur return json.dumps(newfolder, indent=4)
def sendInvite(folderId): # 1 - OUVRIR LA BASE DE DONNEE jsondata = InviteUtils.loadJson() clientId = request.json["clientId"] folderId = folderId clientId = clientId if jsondata == None: return Error("Erreur lors de l'ouverture de la BD.") folders = jsondata["folder"] # 2 - VERIFIER SI LE DOSSIER EXISTE found, findex = InviteUtils.isExists(jsondata, folderId, "FOLDER") if not found: return Error("Erreur lors de la recherche du repertoire.") # 3 - VERIFIER SI LE CLIENT EXISTE found, cindex = InviteUtils.isExists(jsondata, clientId, "USER") if not found: return Error("Erreur lors de la recherche du client.") if not request.headers["Authorization"] in folders[findex]["administrator"]: return Error("Erreur le client n'a pas les droits.") #4 - ECRIRE DANS "INVITEDCLIENTS" SI PAS DEJA PRESENT if not clientId in folders[findex]["invitedClients"]: folders[findex]["invitedClients"].append(clientId) InviteUtils.unloadJson(jsondata) return Success("Invitation envoyée")
def changeAdmin(folderId): # Chargement de la BD db = InviteUtils.loadJson() # Authentification userId = getUserId(db, request) if not userId: return Error("Utilisateur n'est pas connecté") # Obtention des infos folders = db["folder"] folder = next(filter(lambda f: f["id"] == folderId, folders), None) body = request.json newAdminUserId = body["userId"] if folder["administrator"] is not userId: return Error("Seul l'administrateur peut modifier l'administrateur") if not newAdminUserId: return Error("L'id du nouvel admin est requis") users = db["user"] user = next(filter(lambda u: u["id"] == newAdminUserId, users), None) if not user: return Error("L'id du nouvel admin n'existe pas") # Remplacement de l'admin folder["administrator"] = newAdminUserId # Sauvegarde de la BD InviteUtils.unloadJson(db) # Reponse a l'utilisateur return Success("L'administrateur a été modifié")
def replaceFile(folderId, fileId): # Validations if 'file' not in request.files: return Error("Aucun fichier sélectionné") file = request.files['file'] if file.filename == '': return Error("Aucun fichier sélectionné") # Chargement de la BD db = InviteUtils.loadJson() # Authentification userId = getUserId(db, request) if not userId: return Error("Utilisateur n'est pas connecté") # Obtention des infos folders = db['folder'] folder = next(filter(lambda f: f["id"] == folderId, folders), None) fileEntry = next(filter(lambda f: f["id"] == fileId, folder["files"]), None) if not fileEntry: return Error("Aucun fichier n'a cet id") filename = secure_filename(file.filename) # Sauvegarde du fichier sur le disque file.save(os.path.join(app.config['UPLOAD_FOLDER'], fileId)) # Modification de l'entree du fichier fileEntry["name"] = filename # Sauvegarde de la BD InviteUtils.unloadJson(db) # Reponse a l'utilisateur return Success("Le fichier a été téléversé")
def replyInvite(userId, folderId): # 1 - OUVRIR LA BASE DE DONNEE jsondata = InviteUtils.loadJson() answer = int(flask.request.json["answer"]) # 0 : FALSE # TRUE clientId = int(userId) folderId = int(folderId) # 2 - VERIFIER SI LE CLIENT EXISTE found, cindex = InviteUtils.isExists(jsondata, clientId, "USER") if not found: return Error("Erreur lors de la recherche du client.") # 3 - VERIFIER SI LE DOSSIER EXISTE found, findex = InviteUtils.isExists(jsondata, folderId, "FOLDER") if not found: return Error("Erreur lors de la recherche du repertoire.") folder = jsondata["folder"][findex] isclient = clientId in folder["clients"] isinvite = clientId in folder["invitedClients"] # 4 - VERIFIER LES DEMANDES DACCESS if not isinvite and not isclient: return Error("Le client n'a pas eu l'access au dossier.") # 5 - AJOUTER L'ACCES needwrite = False if isinvite: folder["invitedClients"].remove(clientId) needwrite = True if answer != 0 and not isclient: folder["clients"].append(clientId) needwrite = True if needwrite: InviteUtils.unloadJson(jsondata) if answer == 0: return Success("Acces enleve.") return Success("Acces ajoute.")
def deleteFile(folderId, fileId): # Chargement de la BD db = InviteUtils.loadJson() # Authentification userId = getUserId(db, request) if not userId: return Error("Utilisateur n'est pas connecté") # Obtention des infos folders = db['folder'] folder = next(filter(lambda f: f["id"] == folderId, folders), None) fileEntry = next(filter(lambda f: f["id"] == fileId, folder["files"]), None) if not fileEntry: return Error("Aucun fichier n'a cet id") # Suppression de l'entree du fichier dans la BD newFilesArray = list(filter(lambda f: f["id"] != fileId, folder["files"])) folder["files"] = newFilesArray # Suppression du fichier sur le disque os.remove(os.path.join(app.config['UPLOAD_FOLDER'], fileId)) # Sauvegarde de la BD InviteUtils.unloadJson(db) # Reponse a l'utilisateur return Success("Le fichier a été supprimé")