Comment: | Fix [50852efa366bd9f1a7848441f88a235eca4cb94a] : empêcher un admin de se tirer une balle dans le pied |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: |
584b04bc0e3ee46c80e102476193be12 |
User & Date: | bohwaz on 2016-05-31 06:13:03 |
Other Links: | manifest | tags |
2016-05-31
| ||
06:44 | Nouvelle version stable check-in: 8d327464a4 user: bohwaz tags: trunk, stable | |
06:13 | Fix [50852efa366bd9f1a7848441f88a235eca4cb94a] : empêcher un admin de se tirer une balle dans le pied check-in: 584b04bc0e user: bohwaz tags: trunk | |
05:44 | Ne pas utiliser lettre_infos si le champ n'existe pas. check-in: 1d8fcfb0ad user: bohwaz tags: trunk | |
Modified src/templates/admin/membres/cat_modifier.tpl from [5aaec0c773] to [2fe1d52da3].
︙ | ︙ | |||
50 51 52 53 54 55 56 57 | </dl> </fieldset> <fieldset> <legend>Droits</legend> <dl class="droits"> <dt><label for="f_droit_connexion_aucun">Les membres de cette catégorie peuvent-ils se connecter ?</label></dt> <dd> | > > > > > | | > > > > > | | | | | 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 | </dl> </fieldset> <fieldset> <legend>Droits</legend> <dl class="droits"> <dt><label for="f_droit_connexion_aucun">Les membres de cette catégorie peuvent-ils se connecter ?</label></dt> {if $readonly} <dd class="help"> Il n'est pas possible de désactiver ce droit pour votre propre catégorie. </dd> {/if} <dd> <input type="radio" name="droit_connexion" value="{Garradin\Membres::DROIT_AUCUN}" id="f_droit_connexion_aucun" {if $cat.droit_connexion == Garradin\Membres::DROIT_AUCUN}checked="checked"{/if} {$readonly} /> <label for="f_droit_connexion_aucun"><b class="aucun">C</b> Non</label> </dd> <dd> <input type="radio" name="droit_connexion" value="{Garradin\Membres::DROIT_ACCES}" id="f_droit_connexion_acces" {if $cat.droit_connexion == Garradin\Membres::DROIT_ACCES}checked="checked"{/if} {$readonly} /> <label for="f_droit_connexion_acces"><b class="acces">C</b> Oui</label> </dd> </dl> <dl class="droits"> <dt><label for="f_droit_inscription_aucun">Les membres de cette catégorie peuvent-ils s'inscrire d'eux-même ?</label></dt> <dd> <input type="radio" name="droit_inscription" value="{Garradin\Membres::DROIT_AUCUN}" id="f_droit_inscription_aucun" {if $cat.droit_inscription == Garradin\Membres::DROIT_AUCUN}checked="checked"{/if} /> <label for="f_droit_inscription_aucun"><b class="aucun">I</b> Non</label> </dd> <dd> <input type="radio" name="droit_inscription" value="{Garradin\Membres::DROIT_ACCES}" id="f_droit_inscription_acces" {if $cat.droit_inscription == Garradin\Membres::DROIT_ACCES}checked="checked"{/if} /> <label for="f_droit_inscription_acces"><b class="acces">I</b> Oui</label> </dd> </dl> <dl class="droits"> <dt><label for="f_droit_membres_aucun">Gestion des membres :</label></dt> {if $readonly} <dd class="help"> Il n'est pas possible de désactiver ce droit pour votre propre catégorie. </dd> {/if} <dd> <input type="radio" name="droit_membres" value="{Garradin\Membres::DROIT_AUCUN}" id="f_droit_membres_aucun" {if $cat.droit_membres == Garradin\Membres::DROIT_AUCUN}checked="checked"{/if} {$readonly} /> <label for="f_droit_membres_aucun"><b class="aucun">M</b> Pas d'accès</label> </dd> <dd> <input type="radio" name="droit_membres" value="{Garradin\Membres::DROIT_ACCES}" id="f_droit_membres_acces" {if $cat.droit_membres == Garradin\Membres::DROIT_ACCES}checked="checked"{/if} {$readonly} /> <label for="f_droit_membres_acces"><b class="acces">M</b> Lecture uniquement</label> </dd> <dd> <input type="radio" name="droit_membres" value="{Garradin\Membres::DROIT_ECRITURE}" id="f_droit_membres_ecriture" {if $cat.droit_membres == Garradin\Membres::DROIT_ECRITURE}checked="checked"{/if} {$readonly} /> <label for="f_droit_membres_ecriture"><b class="ecriture">M</b> Lecture & écriture</label> </dd> <dd> <input type="radio" name="droit_membres" value="{Garradin\Membres::DROIT_ADMIN}" id="f_droit_membres_admin" {if $cat.droit_membres == Garradin\Membres::DROIT_ADMIN}checked="checked"{/if} {$readonly} /> <label for="f_droit_membres_admin"><b class="admin">M</b> Administration</label> </dd> </dl> <dl class="droits"> <dt><label for="f_droit_compta_aucun">Comptabilité :</label></dt> <dd> <input type="radio" name="droit_compta" value="{Garradin\Membres::DROIT_AUCUN}" id="f_droit_compta_aucun" {if $cat.droit_compta == Garradin\Membres::DROIT_AUCUN}checked="checked"{/if} /> |
︙ | ︙ | |||
129 130 131 132 133 134 135 136 | <dd> <input type="radio" name="droit_wiki" value="{Garradin\Membres::DROIT_ADMIN}" id="f_droit_wiki_admin" {if $cat.droit_wiki == Garradin\Membres::DROIT_ADMIN}checked="checked"{/if} /> <label for="f_droit_wiki_admin"><b class="admin">W</b> Administration</label> </dd> </dl> <dl class="droits"> <dt><label for="f_droit_config_aucun">Les membres de cette catégorie peuvent-ils modifier la configuration ?</label></dt> <dd> | > > > > > | | | 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 | <dd> <input type="radio" name="droit_wiki" value="{Garradin\Membres::DROIT_ADMIN}" id="f_droit_wiki_admin" {if $cat.droit_wiki == Garradin\Membres::DROIT_ADMIN}checked="checked"{/if} /> <label for="f_droit_wiki_admin"><b class="admin">W</b> Administration</label> </dd> </dl> <dl class="droits"> <dt><label for="f_droit_config_aucun">Les membres de cette catégorie peuvent-ils modifier la configuration ?</label></dt> {if $readonly} <dd class="help"> Il n'est pas possible de désactiver ce droit pour votre propre catégorie. </dd> {/if} <dd> <input type="radio" name="droit_config" value="{Garradin\Membres::DROIT_AUCUN}" id="f_droit_config_aucun" {if $cat.droit_config == Garradin\Membres::DROIT_AUCUN}checked="checked"{/if} {$readonly} /> <label for="f_droit_config_aucun"><b class="aucun">☑</b> Non</label> </dd> <dd> <input type="radio" name="droit_config" value="{Garradin\Membres::DROIT_ADMIN}" id="f_droit_config_admin" {if $cat.droit_config == Garradin\Membres::DROIT_ADMIN}checked="checked"{/if} {$readonly} /> <label for="f_droit_config_admin"><b class="admin">☑</b> Oui</label> </dd> </dl> </fieldset> <p class="submit"> {csrf_field key="edit_cat_"|cat:$cat.id} <input type="submit" name="save" value="Enregistrer →" /> </p> </form> {include file="admin/_foot.tpl"} |
Modified src/templates/admin/membres/categories.tpl from [dd583e5389] to [f9ee8a7a8a].
︙ | ︙ | |||
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | <th>{$cat.nom|escape}</th> <td class="num">{$cat.nombre|escape}</td> <td class="droits"> {format_droits droits=$cat} </td> <td class="actions"> <a class="icn" href="cat_modifier.php?id={$cat.id|escape}" title="Modifier">✎</a> <a class="icn" href="cat_supprimer.php?id={$cat.id|escape}" title="Supprimer">✘</a> </td> </tr> {/foreach} </tbody> </table> {if $error} | > > | 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | <th>{$cat.nom|escape}</th> <td class="num">{$cat.nombre|escape}</td> <td class="droits"> {format_droits droits=$cat} </td> <td class="actions"> <a class="icn" href="cat_modifier.php?id={$cat.id|escape}" title="Modifier">✎</a> {if $cat.id != $user.id_categorie} <a class="icn" href="cat_supprimer.php?id={$cat.id|escape}" title="Supprimer">✘</a> {/if} </td> </tr> {/foreach} </tbody> </table> {if $error} |
︙ | ︙ |
Modified src/templates/admin/membres/cotisations.tpl from [ebd63024b1] to [b31f937787].
1 2 3 4 5 | {include file="admin/_head.tpl" title="Cotisations du membre" current="membres/cotisations"} <ul class="actions"> <li><a href="{$admin_url}membres/fiche.php?id={$membre.id|escape}"><b>{$membre.identite|escape}</b></a></li> <li><a href="{$admin_url}membres/modifier.php?id={$membre.id|escape}">Modifier</a></li> | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 | {include file="admin/_head.tpl" title="Cotisations du membre" current="membres/cotisations"} <ul class="actions"> <li><a href="{$admin_url}membres/fiche.php?id={$membre.id|escape}"><b>{$membre.identite|escape}</b></a></li> <li><a href="{$admin_url}membres/modifier.php?id={$membre.id|escape}">Modifier</a></li> {if $user.droits.membres >= Garradin\Membres::DROIT_ADMIN && $user.id != $membre.id} <li><a href="{$admin_url}membres/supprimer.php?id={$membre.id|escape}">Supprimer</a></li> {/if} <li class="current"><a href="{$admin_url}membres/cotisations.php?id={$membre.id|escape}">Suivi des cotisations</a></li> </ul> <dl class="cotisation"> {if $cotisation} |
︙ | ︙ |
Modified src/templates/admin/membres/cotisations/ajout.tpl from [62f9cf3edb] to [f0b352697d].
1 2 3 4 5 6 | {if $membre} {include file="admin/_head.tpl" title="Enregistrer une cotisation pour le membre" current="membres/cotisations" js=1} <ul class="actions"> <li><a href="{$admin_url}membres/fiche.php?id={$membre.id|escape}"><b>{$membre.identite|escape}</b></a></li> <li><a href="{$admin_url}membres/modifier.php?id={$membre.id|escape}">Modifier</a></li> | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 | {if $membre} {include file="admin/_head.tpl" title="Enregistrer une cotisation pour le membre" current="membres/cotisations" js=1} <ul class="actions"> <li><a href="{$admin_url}membres/fiche.php?id={$membre.id|escape}"><b>{$membre.identite|escape}</b></a></li> <li><a href="{$admin_url}membres/modifier.php?id={$membre.id|escape}">Modifier</a></li> {if $user.droits.membres >= Garradin\Membres::DROIT_ADMIN && $user.id != $membre.id} <li><a href="{$admin_url}membres/supprimer.php?id={$membre.id|escape}">Supprimer</a></li> {/if} <li><a href="{$admin_url}membres/cotisations.php?id={$membre.id|escape}">Suivi des cotisations</a></li> </ul> {else} {include file="admin/_head.tpl" title="Enregistrer une cotisation" current="membres/cotisations" js=1} |
︙ | ︙ |
Modified src/templates/admin/membres/cotisations/rappels.tpl from [434fa8281b] to [02dc8464dd].
1 2 3 4 5 | {include file="admin/_head.tpl" title="Rappels pour cotisations du membre" current="membres/cotisations" js=1} <ul class="actions"> <li><a href="{$admin_url}membres/fiche.php?id={$membre.id|escape}"><b>{$membre.identite|escape}</b></a></li> <li><a href="{$admin_url}membres/modifier.php?id={$membre.id|escape}">Modifier</a></li> | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 | {include file="admin/_head.tpl" title="Rappels pour cotisations du membre" current="membres/cotisations" js=1} <ul class="actions"> <li><a href="{$admin_url}membres/fiche.php?id={$membre.id|escape}"><b>{$membre.identite|escape}</b></a></li> <li><a href="{$admin_url}membres/modifier.php?id={$membre.id|escape}">Modifier</a></li> {if $user.droits.membres >= Garradin\Membres::DROIT_ADMIN && $user.id != $membre.id} <li><a href="{$admin_url}membres/supprimer.php?id={$membre.id|escape}">Supprimer</a></li> {/if} <li class="current"><a href="{$admin_url}membres/cotisations.php?id={$membre.id|escape}">Suivi des cotisations</a></li> </ul> <form method="post" action="{$self_url}"> <fieldset> |
︙ | ︙ |
Modified src/templates/admin/membres/cotisations/supprimer.tpl from [3b17df39a6] to [0e6b2ffe34].
1 2 3 4 5 | {include file="admin/_head.tpl" title="Supprimer une cotisation pour le membre n°`$membre.id`" current="membres/cotisations"} <ul class="actions"> <li><a href="{$admin_url}membres/fiche.php?id={$membre.id|escape}">Membre n°{$membre.id|escape}</a></li> <li><a href="{$admin_url}membres/modifier.php?id={$membre.id|escape}">Modifier</a></li> | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 | {include file="admin/_head.tpl" title="Supprimer une cotisation pour le membre n°`$membre.id`" current="membres/cotisations"} <ul class="actions"> <li><a href="{$admin_url}membres/fiche.php?id={$membre.id|escape}">Membre n°{$membre.id|escape}</a></li> <li><a href="{$admin_url}membres/modifier.php?id={$membre.id|escape}">Modifier</a></li> {if $user.droits.membres >= Garradin\Membres::DROIT_ADMIN && $user.id != $membre.id} <li><a href="{$admin_url}membres/supprimer.php?id={$membre.id|escape}">Supprimer</a></li> {/if} <li class="current"><a href="{$admin_url}membres/cotisations.php?id={$membre.id|escape}">Suivi des cotisations</a></li> </ul> {if $error} <p class="error">{$error|escape}</p> |
︙ | ︙ |
Modified src/templates/admin/membres/fiche.tpl from [56d2b7c486] to [5537ffcdef].
1 2 3 4 5 | {include file="admin/_head.tpl" title="`$membre.identite` (`$categorie.nom`)" current="membres"} <ul class="actions"> <li class="current"><a href="{$admin_url}membres/fiche.php?id={$membre.id|escape}"><b>{$membre.identite|escape}</b></a></li> <li><a href="{$admin_url}membres/modifier.php?id={$membre.id|escape}">Modifier</a></li> | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 | {include file="admin/_head.tpl" title="`$membre.identite` (`$categorie.nom`)" current="membres"} <ul class="actions"> <li class="current"><a href="{$admin_url}membres/fiche.php?id={$membre.id|escape}"><b>{$membre.identite|escape}</b></a></li> <li><a href="{$admin_url}membres/modifier.php?id={$membre.id|escape}">Modifier</a></li> {if $user.droits.membres >= Garradin\Membres::DROIT_ADMIN && $user.id != $membre.id} <li><a href="{$admin_url}membres/supprimer.php?id={$membre.id|escape}">Supprimer</a></li> {/if} <li><a href="{$admin_url}membres/cotisations.php?id={$membre.id|escape}">Suivi des cotisations</a></li> </ul> <dl class="cotisation"> {if $cotisation} |
︙ | ︙ |
Modified src/templates/admin/membres/modifier.tpl from [bea41901e2] to [97ce04832b].
1 2 3 4 5 | {include file="admin/_head.tpl" title="Modifier un membre" current="membres" js=1} <ul class="actions"> <li><a href="{$admin_url}membres/fiche.php?id={$membre.id|escape}"><b>{$membre.identite|escape}</b></a></li> <li class="current"><a href="{$admin_url}membres/modifier.php?id={$membre.id|escape}">Modifier</a></li> | | | 1 2 3 4 5 6 7 8 9 10 11 12 13 | {include file="admin/_head.tpl" title="Modifier un membre" current="membres" js=1} <ul class="actions"> <li><a href="{$admin_url}membres/fiche.php?id={$membre.id|escape}"><b>{$membre.identite|escape}</b></a></li> <li class="current"><a href="{$admin_url}membres/modifier.php?id={$membre.id|escape}">Modifier</a></li> {if $user.droits.membres >= Garradin\Membres::DROIT_ADMIN && $user.id != $membre.id} <li><a href="{$admin_url}membres/supprimer.php?id={$membre.id|escape}">Supprimer</a></li> {/if} <li><a href="{$admin_url}membres/cotisations.php?id={$membre.id|escape}">Suivi des cotisations</a></li> </ul> {if $error} <p class="error"> |
︙ | ︙ |
Modified src/www/admin/membres/cat_modifier.php from [65fb457d34] to [33afb1fa19].
︙ | ︙ | |||
30 31 32 33 34 35 36 | { if (!Utils::CSRF_check('edit_cat_'.$id)) { $error = 'Une erreur est survenue, merci de renvoyer le formulaire.'; } else { | < | | > > > > > > > > > > > > > > > < < | 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 | { if (!Utils::CSRF_check('edit_cat_'.$id)) { $error = 'Une erreur est survenue, merci de renvoyer le formulaire.'; } else { $data = [ 'nom' => Utils::post('nom'), 'description' => Utils::post('description'), 'droit_wiki' => (int) Utils::post('droit_wiki'), 'droit_compta' => (int) Utils::post('droit_compta'), 'droit_config' => (int) Utils::post('droit_config'), 'droit_membres' => (int) Utils::post('droit_membres'), 'droit_connexion' => (int) Utils::post('droit_connexion'), 'droit_inscription' => (int) Utils::post('droit_inscription'), 'cacher' => (int) Utils::post('cacher'), 'id_cotisation_obligatoire' => (int) Utils::post('id_cotisation_obligatoire'), ]; // Ne pas permettre de modifier la connexion, l'accès à la config et à la gestion des membres // pour la catégorie du membre qui édite les catégories, sinon il pourrait s'empêcher // de se connecter ou n'avoir aucune catégorie avec le droit de modifier les catégories ! if ($cat['id'] == $user['id_categorie']) { $data['droit_connexion'] = Membres::DROIT_ACCES; $data['droit_config'] = Membres::DROIT_ADMIN; $data['droit_membres'] = Membres::DROIT_ADMIN; } try { $cats->edit($id, $data); if ($id == $user['id_categorie']) { $membres->updateSessionData(); } Utils::redirect('/admin/membres/categories.php'); } catch (UserException $e) { $error = $e->getMessage(); } } } $tpl->assign('cat', $cat); $tpl->assign('error', $error); $tpl->assign('readonly', $cat['id'] == $user['id_categorie'] ? 'disabled="disabled"' : ''); $cotisations = new Cotisations; $tpl->assign('cotisations', $cotisations->listCurrent()); $tpl->display('admin/membres/cat_modifier.tpl'); |
Modified src/www/admin/membres/cat_supprimer.php from [d2a7af392a] to [0996b48d07].
︙ | ︙ | |||
19 20 21 22 23 24 25 26 27 28 29 30 31 32 | $cat = $cats->get($id); if (!$cat) { throw new UserException("Cette catégorie n'existe pas."); } $error = false; if (!empty($_POST['delete'])) { if (!Utils::CSRF_check('delete_cat_'.$id)) { | > > > > > | 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | $cat = $cats->get($id); if (!$cat) { throw new UserException("Cette catégorie n'existe pas."); } if ($cat['id'] == $user['id_categorie']) { throw new UserException("Vous ne pouvez pas supprimer votre catégorie."); } $error = false; if (!empty($_POST['delete'])) { if (!Utils::CSRF_check('delete_cat_'.$id)) { |
︙ | ︙ |
Modified src/www/admin/membres/supprimer.php from [653b4fe0c8] to [77972b15eb].
︙ | ︙ | |||
13 14 15 16 17 18 19 | if (!$membre) { throw new UserException("Ce membre n'existe pas."); } $error = false; | > > > > > | | 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | if (!$membre) { throw new UserException("Ce membre n'existe pas."); } $error = false; if ($membre['id'] == $user['id']) { $error = "Il n'est pas possible de supprimer votre propre compte."; } if (Utils::post('delete') && !$error) { if (!Utils::CSRF_check('delete_membre_'.$membre['id'])) { $error = 'Une erreur est survenue, merci de renvoyer le formulaire.'; } else { |
︙ | ︙ |