Gestion des teamleaders¶
Ce tutoriel montre comment modifier la liste des teamleaders via les API.
/api/v2/teamleader
est obsolète¶
Les apis utilisant /api/v2/teamleader
sont obsolètes et ne permettent plus de modifier directement la liste des teamleaders. Cette API ne doit plus être utilisé.
Pour information les scripts suivants utilisent l’API obsolète :
Récupérer la liste des teamleaders¶
Le script list_teamleaders.py affiche la liste des teamleaders.
La première chose que le script réalise est de préparer le header Authorization
avec le token de connexion.
# configuration du script
TOKEN="eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ0ZW5hbnRJZCI6ImRlZmF1bHQiLCJpc3MiOiJhdXRoMCIsImV4cCI6MzMyMDk3MDQ3MjAsImxvZ2luIjoiYXBpIn0.A-QDT74j6Cnt0g_ohVngZN2T-8kWnq4-0v5YESOK4BM"
TENANT="default"
HOST="http://localhost:9327"
#############################################################################
import requests
import sys
headers = {
"Authorization": 'Bearer {"token":"%s","myTenant":{"id":"%s"}}' % (TOKEN, TENANT)
}
Ensuite, il fait un GET sur http://localhost:9327/api/v2/allow
pour récupérer la liste des droits qu’il enregistre dans la variable allows
print("Récupération de la liste des droits")
URL_ALLOW=HOST+"/api/v2/allow"
rep = requests.get(URL_ALLOW+"/_all", headers=headers)
if rep.status_code != 200:
print("Erreur %d : %s"%(rep.status_code, rep.text))
sys.exit(1)
allows = rep.json()
Pour chaque élément de allows
, le script garde uniquement le login
de ceux qui ont teamLeader
à True
.
print("Filtrage des teamleaders")
teamleaders = []
for allow in allows:
if allow["teamLeader"]:
teamleaders.append(allow["login"])
Pour finir, il affiche la liste des logins.
print("Il y a %d teamleader(s)"%len(teamleaders))
for leader in teamleaders:
print("- %s"%leader)
Ajouter des teamleaders¶
Le script invite_teamleaders.py ajoute les teamleaders qui ne sont pas encore enregistrés.
Au début, le script définit la liste des teamleaders à rajouter.
emails = [
"luke.skywalker@rebels.org",
"leia.organa@rebels.org"
]
Puis il définit le header Authorization
.
TOKEN="eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ0ZW5hbnRJZCI6ImRlZmF1bHQiLCJpc3MiOiJhdXRoMCIsImV4cCI6MzMyMDk3MDQ3MjAsImxvZ2luIjoiYXBpIn0.A-QDT74j6Cnt0g_ohVngZN2T-8kWnq4-0v5YESOK4BM"
TENANT="default"
HOST="http://localhost:9327"
#############################################################################
import requests
import sys
headers = {
"Authorization": 'Bearer {"token":"%s","myTenant":{"id":"%s"}}' % (TOKEN, TENANT)
}
L’appel à /api/v2/user
avec le verbe POST
permet d’enregistrer de nouveaux comptes et d’envoyer un mail d’invitation aux utilisateurs non enregistrés.
Si l’appel demande l’enregistrement d’un compte déjà été enregistré, alors Carto-SI ne fera rien pour ce compte.
print("Invitation des teamleaders")
URL_USER=HOST+"/api/v2/user"
# L'API enverra un mail d'invitation pour tous les emails qui n'ont pas encore de compte
rep = requests.post(URL_USER, json=emails, headers=headers)
if rep.status_code != 200:
print("Erreur %d : %s"%(rep.status_code, rep.text))
Pour chaque teamleader, le script récupère la liste de ses droit avec un appel à /api/v2/allow/{email}
. Chaque utilisateur enregistré a obligatoirement une entrée
dans cette API.
Puis, le script vérifie que l’utilisateur n’a pas le droit manager
. si tel est le cas, le droit manager est rajouté et la nouvelle liste des droits est enregistré dans
/api/v2/allow/{email}
.
print("Les teamleaders doivent avoir le droit teamleader")
URL_ALLOW=HOST+"/api/v2/allow"
for email in emails:
# récupère la liste des droits du user
rep = requests.get(URL_ALLOW+"/"+email, headers=headers)
if rep.status_code == 200:
allow = rep.json()
else:
print("Erreur pour %s - %d : %s"%(email, rep.status_code, rep.text))
continue
if not "manager" in allow["allows"]:
print(" - on donne les droits de teamleader à %s"%email)
allow["allows"].append("manager")
rep = requests.put(URL_ALLOW+"/"+email, json=allow, headers=headers)
if rep.status_code != 200:
print("Erreur %d : %s"%(rep.status_code, rep.text))
else:
print(" - %s a déjà les droits de teamleader"%email)
Comment sont définis les Teamleaders ?¶
La liste des Teamleaders est composée par la liste des comptes utilisateurs ayant le droit
Responsable d'applications
.Le code du droit
Responsable d'applications
estmanager
.La liste des droits est définit par l’API
/api/v2/allow
.