From 8d208159d0987f405519566559cc8dd3b41de67f Mon Sep 17 00:00:00 2001
From: Guillaume Damiens <guillaume.damiens@etu.utc.fr>
Date: Wed, 1 May 2019 10:52:27 +0200
Subject: [PATCH] =?UTF-8?q?Ajout=20README.md=20et=20am=C3=A9liorations=20d?=
 =?UTF-8?q?es=20variables?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 pica-wekan/README.md | 39 +++++++++++++++++++++++++++++++++++++++
 pica-wekan/policy.sh | 33 +++++++++++++++------------------
 2 files changed, 54 insertions(+), 18 deletions(-)
 create mode 100644 pica-wekan/README.md

diff --git a/pica-wekan/README.md b/pica-wekan/README.md
new file mode 100644
index 00000000..8202cc24
--- /dev/null
+++ b/pica-wekan/README.md
@@ -0,0 +1,39 @@
+# Script de suppression des boards Wekan trop anciens
+## Avant le lancement
+Le paquet jq permet de parser et manipuler du JSON en ligne de commande. Il est nécessaire pour filtrer les informations reçu de l'API.
+
+```bash
+sudo apt install jq
+```
+
+Le Wekan doit contenir un compte dédié pour ce script permettant d'accéder à l'API. Ce compte doit disposer des droits administrateurs du Wekan. Les identifiants doivent être présents dans un fichier séparer du script `policy.sh`.
+
+```bash
+touch ids.sh
+```
+
+## Contenu de `ids.sh`
+2 variables sont nécessaires : username et password du compte dédié.
+```bash
+#!/bin/bash
+
+export username="username"
+export password="password"
+```
+
+## Choix de la deadline et de l'URL de l'API
+Les boards n'ayant pas été modifiés depuis un certain temps sont définitivement supprimés. Cette durée est la somme de trois variables : `boardExpirationDurationYears`, `boardExpirationDurationMonths` et `boardExpirationDurationDays`. L'URL de l'application est également nécessaire.
+ Ces informations sont à modifier directement dans les premières lignes du script `policy.sh`.
+
+```bash
+boardExpirationDurationYears=0 # années
+boardExpirationDurationMonths=12 # mois
+boardExpirationDurationDays=0 # jours
+url=https://wekan.test.picasoft.net
+```
+
+
+## Lancement du script
+```bash
+./policy.sh
+```
diff --git a/pica-wekan/policy.sh b/pica-wekan/policy.sh
index dbf33ae8..da795064 100755
--- a/pica-wekan/policy.sh
+++ b/pica-wekan/policy.sh
@@ -6,36 +6,33 @@
 boardExpirationDurationYears=0 # années
 boardExpirationDurationMonths=12 # mois
 boardExpirationDurationDays=0 # jours
+url=https://wekan.test.picasoft.net
 # Deadline = somme des durées du dessus
 deadlineTimeStamp=$(date -d "-"$boardExpirationDurationYears"years-"$boardExpirationDurationMonths"months-"$boardExpirationDurationDays"days" +%s)
 
-queryPica=$(curl -s https://wekan.test.picasoft.net/users/login -d 'username='"$username"'&password='"$password"'')
-
+# Récupération du token de connexion
+queryPica=$(curl -s $url/users/login -d 'username='"$username"'&password='"$password"'')
 token=$(echo $queryPica | jq -r .token)
-tokenExpirationDate=$(echo $queryPica | jq -r .tokenExpires)
-# condition à rajouter sur la date d'expiration du token : arrêt si trop ancien
 
-# Récupérer les utilisateurs
-users=$(curl -s -X GET https://wekan.test.picasoft.net/api/users \
+# Récupération des utilisateurs
+users=$(curl -s -X GET $url/api/users \
   -H 'Accept: application/json' \
   -H 'Authorization: Bearer '"$token"'')
 usersIds=$(echo $users | jq -r '.[]._id')
 usersUsernames=$(echo $users | jq -r '.[].username')
 
-# Boucler sur les utilisateurs
+# Boucle sur les utilisateurs
 for usersId in $usersIds
 do
-  # récupérer les boards de chaque utilisateur
-  userBoards=$(curl -s -X GET https://wekan.test.picasoft.net/api/users/$usersId/boards \
+  # Récupération des boards de chaque utilisateur
+  userBoards=$(curl -s -X GET $url/api/users/$usersId/boards \
   -H 'Accept: application/json' \
   -H 'Authorization: Bearer '"$token"'' | jq -r '.[]._id')
 
-  #boucler sur chaque board de l'utilisateur
+  # Boucle sur chaque board de l'utilisateur
   for userBoard in $userBoards
   do
-    # echo "Utilisateur "$usersId" fait partie de "$userBoard
-
-    board=$(curl -s -X GET https://wekan.test.picasoft.net/api/boards/$userBoard \
+    board=$(curl -s -X GET $url/api/boards/$userBoard \
     -H 'Accept: application/json' \
     -H 'Authorization: Bearer '"$token"'')
     boardTitle=$(echo $board | jq -r '.title')
@@ -51,9 +48,9 @@ do
     then
       echo "Suppresion du board "$boardTitle" (_id "$userBoard", modifié le "$lastModificationDate")"
 
-      # supprimer le board si trop ancien
-      # curl -X DELETE https://wekan.test.picasoft.net/api/boards/$idBoard \
-      # -H 'Authorization: Bearer '"$token"''
+      # Suppression du board si trop ancien
+      curl -X DELETE https://wekan.test.picasoft.net/api/boards/$userBoard \
+      -H 'Authorization: Bearer '"$token"''
     fi
   done
 done
@@ -63,14 +60,14 @@ exit 1
 ######## FONCTIONNE MAIS QU'AVEC LES BOARDS PUBLICS #######
 
 # récupération des ids de tous les boards publics
-idBoards=$(curl -s -X GET https://wekan.test.picasoft.net/api/boards \
+idBoards=$(curl -s -X GET $url/api/boards \
   -H 'Accept: application/json' \
   -H 'Authorization: Bearer '"$token"'' | jq -r '.[]._id')
 
 # affiche les boards publics qui n'ont pas été modifié depuis deadlineTimeStamp
 for idBoard in $idBoards
 do
-  board=$(curl -s -X GET https://wekan.test.picasoft.net/api/boards/$idBoard \
+  board=$(curl -s -X GET $url/api/boards/$idBoard \
   -H 'Accept: application/json' \
   -H 'Authorization: Bearer '"$token"'')
 
-- 
GitLab