Vull fer lo que diu aquest senyor Sync group membership with external list of email addresses - support - Discourse Meta
Diuen que és una idea terrible
Però és similar a com estem gestionant sincronia de exo-membres en els diferents canals (ara per ara): matrix i llista de correu
Si fos per nom d’usuari, ja estaria fet via API Discourse API Docs
Però no exposa per correu electrònic (lo qual és realment, a priori, més convenient)
El lloc on suggereixen el discourse-data-explorer ( GitHub - discourse/discourse-data-explorer: SQL Queries for admins in Discourse ) és aquí per un escenari similar Exporting group members emails as csv - support - Discourse Meta ; de fet, probablement aquest plugin ens servirà per altres extraccions de dades rares que vulguem fer en el futur
cc @evilham
Ei, no cal:
https://docs.discourse.org/#tag/Users/operation/adminListUsers
Una crida a: https://agora.eXO.cat/admin/users/list/active.json?show_emails=true
dona els usuaris actius amb els correus.
M’adono que no he explicat prou bé el propòsit: necessitem poder fer una consulta que retorni el llistat dels correus electrònics que formen part del grup de membres d’eXO d’agora.exo.cat per donar-los d’alta o de baixa segons l’estat de la seva afiliació a l’associació.
La consulta que comentes [1], només retorna tots els usuaris de la instància d’agora.exo.cat, i no és possible especificar el llistat d’usuaris del grup eXO (la API de Groups només deixa amb el username).
No ens serviria de gaire sincronitzar el llistat de membres d’eXO amb els usuaris d’àgora perquè vam decidir que aquesta instància seria de registre obert, i només el subgrup d’usuaris registrats en agora.exo.cat tindria accés al grup privat d’eXO-membres. Per exemple, una persona que es dona d’alta no té per què ser membre d’eXO, ni li donaríem de baixa en cas de donar-se de baixa com a membre de l’associació.
[1] Discourse API Docs
Crec que havia entès i potser m’equivoco, però diria que tenim tota la informació necessària amb l’API estàndard:
# on _d és curl -X ...`
all_user_data="$(_d /admin/users/list/active.json?show_emails=true)"
group_data="$(_d /groups/exo-membres/members.json)"
group_users="$(echo "${group_data}" | jq -r '.members[].username')"
user_email_mapping="$(echo "${all_user_data}" | jq -r '.[] | [.username, .email] | @tsv')"
for group_user in ${group_users}; do
echo "${user_email_mapping}" | awk "/^${group_user}\t/"
done
Genera només per usuaris membres del grup:
username1 email1
vale! cert, disculpa, i gràcies per deixar-m’ho ja mig fet!! . Tanco això perquè ja no és necessari