Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédenteDernière révisionLes deux révisions suivantes | ||
technique:adminserv:mattermost:comptes_inactifs [2024/03/26 15:52] – rdelaage | technique:adminserv:mattermost:comptes_inactifs [2024/03/26 20:39] – rdelaage | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | Réaliser un export | + | # Gestion des comptes inactifs |
- | Créer `export_inactive.sql` avec | + | ## Mail d'avertissement |
- | ```sql | + | |
- | SELECT json_agg(exp) FROM ( | + | |
- | SELECT u.id as userid, u.username as username, u.email as email, to_timestamp((lastlogin.lastlogin/ | + | |
- | FROM users u | + | |
- | INNER JOIN ( | + | |
- | SELECT userid, MAX(createat) as lastlogin | + | |
- | FROM audits a | + | |
- | WHERE a.action = '/ | + | |
- | GROUP BY userid | + | |
- | HAVING TO_TIMESTAMP(MAX(a.createat) / 1000) < NOW() - INTERVAL '3 years' | + | |
- | ) lastlogin | + | |
- | ON | + | |
- | u.id = lastlogin.userid | + | |
- | INNER JOIN ( | + | |
- | SELECT teammembers.userid as userid, array_agg(teams.displayname) as nameteams | + | |
- | FROM teammembers | + | |
- | INNER JOIN teams ON teammembers.teamid = teams.id | + | |
- | WHERE teammembers.deleteat = 0 | + | |
- | GROUP BY teammembers.userid | + | |
- | ) userteams | + | |
- | ON | + | |
- | u.id = userteams.userid | + | |
- | WHERE u.deleteat = 0) exp; | + | |
- | ``` | + | |
- | Puis lancer l'export | + | Mattermost a introduit une limite dure dans le nombre de compte qu'il est possible d' |
- | ```bash | + | |
- | cat export_inactive.sql | docker exec -i mattermost-db psql -qAtX -U mattermost > result.json | + | |
- | ``` | + | |
- | générer | + | Un script a été fait afin d' |
- | On utilise gomplate à télécharger sur la machine | + | Afin de l' |
- | ```bash | + | < |
- | curl -o gomplate -L https:// | + | |
- | chmod +x gomplate | + | |
- | ``` | + | |
- | On va utiliser ce script | + | ## Désactivation des comptes |
- | ```bash | + | Le mail d' |
- | #!/bin/env bash | + | |
- | jq -c ' | + | TODO |
- | echo $i > entry.json | + | |
- | ./gomplate -c " | + | |
- | rcpt_to=$(echo $i | jq -r .email) | + | |
- | # TODO: provide password | + | |
- | curl -v --mail-from mattermost@picasoft.net --ssl --mail-rcpt " | + | |
- | rm -f entry.json entry.eml | + | |
- | done | + | |
- | ``` | + | |
- | + | ||
- | Utilisation de ce template `inactive.tpl` | + | |
- | ``` | + | |
- | From: Picateam < | + | |
- | To: {{ .email }} | + | |
- | Date: {{ (time.Now).Format time.RFC1123Z }} | + | |
- | Subject: Votre compte sur Picateam va être desactivé - Your account on Picateam will be deactivated | + | |
- | List-Unsubscribe: | + | |
- | + | ||
- | **English version below** | + | |
- | + | ||
- | Cher utilisateur·ice de Picateam, | + | |
- | + | ||
- | Tu reçois ce message car tu possèdes un compte ({{ .username }}) sur l' | + | |
- | + | ||
- | Afin de prendre soin de notre instance, nous désactivons l' | + | |
- | + | ||
- | Tu es actuellement membre des équipes suivantes : | + | |
- | {{- range .teams }} | + | |
- | - {{ . }} | + | |
- | {{- end }} | + | |
- | + | ||
- | Si tu n'as plus besoin de ton compte, tu n'as aucune action à réaliser, mais si tu souhaites le conserver on t' | + | |
- | + | ||
- | Amicalement, | + | |
- | Picasoft | + | |
- | + | ||
- | === | + | |
- | + | ||
- | Dear Picateam user, | + | |
- | + | ||
- | You're receiving this message because you have an account ({{ .username }}) on Picasoft' | + | |
- | + | ||
- | To take care of our instance, we're deactivating all accounts that haven' | + | |
- | + | ||
- | You are currently a member of the following teams: | + | |
- | {{- range .teams }} | + | |
- | - {{ . }} | + | |
- | {{- end }} | + | |
- | + | ||
- | If you no longer need your account, you have no action to take, but if you wish to keep it, we invite you to log on to https:// | + | |
- | + | ||
- | Best regards, | + | |
- | Picasoft | + | |
- | ``` | + |