= order of use
1 - list user : info_user_projets_and_collab.sh
2 - change owner sharing projects : sharelatex-overleaf_replace-project-owner.sh
3 - delete project and user : delete_user_and_projects.sh
| #!/bin/sh | |
| mongo sharelatex --eval "var param1='$1'" delete_user_and_project.js |
| print("##########################################################################"); | |
| print("use : sh delete_user_and_projects.sh MailOwner"); | |
| print("##########################################################################"); | |
| print("Mail User: " + param1); | |
| var listFileRM = [] | |
| // On cherche l'utilisateur | |
| var users = db.users.find({ | |
| email: param1 | |
| }) | |
| while (users.hasNext()) { | |
| var userDetail = users.next(); | |
| print() | |
| print("*******************************************") | |
| print("Compte sharelatex : " + userDetail.email + " (ID : " + "ObjectId(\"" + userDetail._id + "\"))"); | |
| // On cherche ses projets | |
| var projectsList = db.projects.find({ | |
| "owner_ref": userDetail._id | |
| }); | |
| while (projectsList.hasNext()) { | |
| projet = projectsList.next(); | |
| if (projet.archived == true) { | |
| var archived = "--> Archivé"; | |
| } else { | |
| var archived = ""; | |
| } | |
| print(" Projet : " + projet.name + " (ID : " + projet._id + ") ", archived); | |
| for (var collab in projet.collaberator_refs) { | |
| var emailcollab = db.users.find({ | |
| "_id": projet.collaberator_refs[collab] | |
| }); | |
| // On vérifie qu'il n'y a pas de projet avec des collabs, auquel cas on stop | |
| while (emailcollab.hasNext()) { | |
| unemail = emailcollab.next(); | |
| print(" Collab : " + unemail.email + " (ID : " + unemail._id + ")"); | |
| throw new Error("Impossible de supprimer le compte, il a encore des projets partagés"); | |
| } | |
| } | |
| listFileRM.push("rm -rf /local/sharelatex/data/user_files/" + projet._id + "*"); | |
| // On supprime le projet | |
| db.projects.deleteOne({ | |
| _id: projet._id | |
| }); | |
| print(" -> Projet supprimé sur la base de donnees") | |
| } | |
| print("*******************************************") | |
| print(); | |
| // On supprime le compte | |
| db.users.deleteOne({ | |
| _id: userDetail._id | |
| }); | |
| print("Le compte a bien été supprimé"); | |
| print("*******************************************") | |
| print(); | |
| print("Commandes à executer pour supprimer les fichiers restant: ") | |
| for (val of listFileRM) { | |
| print(val); | |
| } | |
| print(); | |
| } |
| print("##########################################################################"); | |
| print("use : sh info_user_projets_and_collab.sh MailOwner"); | |
| print("##########################################################################"); | |
| // On cherche l'utilisateur | |
| var users = db.users.find({ | |
| email: param1 | |
| }) | |
| while (users.hasNext()) { | |
| var userDetail = users.next(); | |
| print() | |
| print("*******************************************") | |
| print("Compte sharelatex : " + userDetail.email + " (ID : " + "ObjectId(\"" + userDetail._id + "\"))"); | |
| // On cherche ses projets | |
| var projectsList = db.projects.find({ | |
| "owner_ref": userDetail._id | |
| }); | |
| while (projectsList.hasNext()) { | |
| projet = projectsList.next(); | |
| if (projet.archived == true) { | |
| var archived = "--> Archivé"; | |
| } else { | |
| var archived = ""; | |
| } | |
| print(" Projet : " + projet.name + " (ID : " + projet._id + ") ", archived); | |
| for (var collab in projet.collaberator_refs) { | |
| var emailcollab = db.users.find({ | |
| "_id": projet.collaberator_refs[collab] | |
| }); | |
| while (emailcollab.hasNext()) { | |
| unemail = emailcollab.next(); | |
| print(" Collab : " + unemail.email + " (ID : " + unemail._id + ") "); | |
| print(" -> ( sh sharelatex-overleaf_replace-project-owner.sh " + projet._id + " " + unemail._id + ")"); | |
| } | |
| } | |
| print() | |
| } | |
| print("##########################################################################"); | |
| } |
| #!/bin/sh | |
| mongo sharelatex --eval "var param1='$1'" info_user_projets_and_collab.js |