Squash merge develop → master. - #138 : modale enfant paysage, zone AM/scolarisation, liens responsables - #144 : persistance consent_photo à l'inscription enfant - #143 : masquer Supprimer sur la propre fiche gestionnaire Co-authored-by: Cursor <cursoragent@cursor.com>
112 lines
3.3 KiB
JavaScript
112 lines
3.3 KiB
JavaScript
/**
|
|
* Crée l'issue Gitea — gestionnaire ne doit pas pouvoir se supprimer.
|
|
* Usage: node backend/scripts/create-gitea-issue-gestionnaire-self-delete.js
|
|
*/
|
|
const https = require('https');
|
|
const fs = require('fs');
|
|
const path = require('path');
|
|
|
|
const repoRoot = path.join(__dirname, '../..');
|
|
const MILESTONE_0_1_0 = 10;
|
|
|
|
let token = process.env.GITEA_TOKEN;
|
|
if (!token) {
|
|
try {
|
|
const tokenFile = path.join(repoRoot, '.gitea-token');
|
|
if (fs.existsSync(tokenFile)) token = fs.readFileSync(tokenFile, 'utf8').trim();
|
|
} catch (_) {}
|
|
}
|
|
if (!token) {
|
|
try {
|
|
const briefing = fs.readFileSync(
|
|
path.join(repoRoot, 'docs/27_BRIEFING-FRONTEND.md'),
|
|
'utf8',
|
|
);
|
|
const m = briefing.match(/Token:\s*(gitebu_[a-f0-9]+)/);
|
|
if (m) token = m[1].trim();
|
|
} catch (_) {}
|
|
}
|
|
if (!token) {
|
|
console.error('Token non trouvé : .gitea-token ou GITEA_TOKEN');
|
|
process.exit(1);
|
|
}
|
|
|
|
const body = `## Contexte
|
|
|
|
Quand un **gestionnaire** connecté ouvre sa propre fiche dans l'onglet **Gestionnaires** (Gestion des utilisateurs), la modale **Modifier un "Gestionnaire"** affiche le bouton **Supprimer**.
|
|
|
|
Comportement actuel : le gestionnaire voit et peut tenter de supprimer son propre compte.
|
|
|
|
## Comportement attendu
|
|
|
|
Comme pour le **super administrateur** (bouton Supprimer masqué sur la fiche super admin) :
|
|
|
|
- **Pas de bouton Supprimer** quand l'utilisateur édite **sa propre fiche**
|
|
- **Modification** des informations (prénom, nom, email, téléphone, relais, mot de passe) **toujours autorisée**
|
|
|
|
## Périmètre
|
|
|
|
- Frontend : \`AdminUserFormDialog\` (\`gestionnaires_create.dart\`)
|
|
- Comparer \`initialUser.id\` avec l'utilisateur connecté (\`AuthService.getCurrentUser\`)
|
|
- Masquer Supprimer si édition de soi-même ; conserver garde existante super admin
|
|
|
|
## Critères d'acceptation
|
|
|
|
- [ ] Gestionnaire connecté → ouvre sa fiche → **pas** de bouton Supprimer
|
|
- [ ] Gestionnaire connecté → peut **Modifier** ses informations
|
|
- [ ] Super admin / admin → peut toujours supprimer **un autre** gestionnaire (si droits API)
|
|
- [ ] Pas de régression sur fiche super administrateur (Supprimer toujours masqué)
|
|
|
|
## Fichiers clés
|
|
|
|
- \`frontend/lib/screens/administrateurs/creation/gestionnaires_create.dart\`
|
|
- \`frontend/lib/widgets/admin/gestionnaire_management_widget.dart\`
|
|
|
|
## Milestone
|
|
|
|
**0.1.0** — correction UX / sécurité gestion utilisateurs.`;
|
|
|
|
const payloadClean = JSON.stringify({
|
|
title: '[Bug] Gestionnaire peut voir Supprimer sur sa propre fiche',
|
|
body,
|
|
milestone: MILESTONE_0_1_0,
|
|
});
|
|
|
|
const opts = {
|
|
hostname: 'git.ptits-pas.fr',
|
|
path: '/api/v1/repos/jmartin/petitspas/issues',
|
|
method: 'POST',
|
|
headers: {
|
|
Authorization: 'token ' + token,
|
|
'Content-Type': 'application/json',
|
|
'Content-Length': Buffer.byteLength(payloadClean),
|
|
},
|
|
};
|
|
|
|
const req = https.request(opts, (res) => {
|
|
let d = '';
|
|
res.on('data', (c) => (d += c));
|
|
res.on('end', () => {
|
|
try {
|
|
const o = JSON.parse(d);
|
|
if (o.number) {
|
|
console.log('NUMBER:', o.number);
|
|
console.log('URL:', o.html_url);
|
|
console.log('MILESTONE:', o.milestone?.title ?? '(aucun)');
|
|
} else {
|
|
console.error('Réponse:', d);
|
|
process.exit(1);
|
|
}
|
|
} catch (e) {
|
|
console.error(d);
|
|
process.exit(1);
|
|
}
|
|
});
|
|
});
|
|
req.on('error', (e) => {
|
|
console.error(e);
|
|
process.exit(1);
|
|
});
|
|
req.write(payloadClean);
|
|
req.end();
|