= 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 |