if (Get::has('del')) {
+ S::assert_xsrf_token();
$this->client->unsubscribe(Get::v('del'));
pl_redirect('lists');
}
if (Get::has('add')) {
+ S::assert_xsrf_token();
$this->client->subscribe(Get::v('add'));
pl_redirect('lists');
}
if (Post::has('promo_add')) {
+ S::assert_xsrf_token();
+
$promo = Post::i('promo_add');
if ($promo >= 1900 and $promo < 2100) {
$this->client->subscribe("promo$promo");
$page->trigSuccess("promo incorrecte, il faut une promo sur 4 chiffres.");
}
}
+
$listes = $this->client->get_lists();
$owner = array_filter($listes, 'filter_owner');
$listes = array_diff_key($listes, $owner);
header('Content-Type: text/html; charset="UTF-8"');
$domain = $this->prepare_client($page);
$page->changeTpl('lists/liste.inc.tpl', NO_SKIN);
+ S::assert_xsrf_token();
+
if (Get::has('unsubscribe')) {
$this->client->unsubscribe($list);
}
if (!Post::has('submit')) {
return;
+ } else {
+ S::assert_xsrf_token();
}
$asso = Post::v('asso');
$page->changeTpl('lists/members.tpl');
if (Get::has('del')) {
+ S::assert_xsrf_token();
$this->client->unsubscribe($liste);
pl_redirect('lists/members/'.$liste);
}
if (Get::has('add')) {
+ S::assert_xsrf_token();
$this->client->subscribe($liste);
pl_redirect('lists/members/'.$liste);
}
$this->prepare_client($page);
if (Get::has('del')) {
+ S::assert_xsrf_token();
$this->client->unsubscribe($liste);
pl_redirect('lists/annu/'.$liste);
}
if (Get::has('add')) {
+ S::assert_xsrf_token();
$this->client->subscribe($liste);
pl_redirect('lists/annu/'.$liste);
}
$page->register_modifier('hdc', 'list_header_decode');
if (Env::has('sadd') || Env::has('sdel')) {
+ S::assert_xsrf_token();
+
if (Env::has('sadd')) { /* 4 = SUBSCRIBE */
$sub = $this->client->get_pending_sub($liste, Env::v('sadd'));
$this->client->handle_request($liste,Env::v('sadd'),4,'');
}
if (Post::has('moderate_mails') && Post::has('select_mails')) {
+ S::assert_xsrf_token();
+
$mails = array_keys(Post::v('select_mails'));
foreach($mails as $mail) {
$this->moderate_mail($domain, $liste, $mail);
$page->changeTpl('lists/admin.tpl');
if (Env::has('send_mark')) {
+ S::assert_xsrf_token();
+
$actions = Env::v('mk_action');
$uids = Env::v('mk_uid');
$mails = Env::v('mk_email');
}
if (Env::has('add_member')) {
+ S::assert_xsrf_token();
+
require_once('user.func.inc.php');
$members = get_users_forlife_list(Env::v('add_member'),
false,
}
if (isset($_FILES['add_member_file']) && $_FILES['add_member_file']['tmp_name']) {
+ S::assert_xsrf_token();
+
$upload =& PlUpload::get($_FILES['add_member_file'], S::v('forlife'), 'list.addmember', true);
if (!$upload) {
$page->trigError('Une erreur s\'est produite lors du téléchargement du fichier');
}
if (Env::has('del_member')) {
+ S::assert_xsrf_token();
+
if (strpos(Env::v('del_member'), '@') === false) {
$this->client->mass_unsubscribe(
$liste, array(Env::v('del_member').'@'.$globals->mail->domain));
}
if (Env::has('add_owner')) {
+ S::assert_xsrf_token();
+
require_once('user.func.inc.php');
$owners = get_users_forlife_list(Env::v('add_owner'), false, array('ListsModule', 'no_login_callback'));
if ($owners) {
}
if (Env::has('del_owner')) {
+ S::assert_xsrf_token();
+
if (strpos(Env::v('del_owner'), '@') === false) {
$this->client->del_owner($liste, Env::v('del_owner').'@'.$globals->mail->domain);
} else {
$page->changeTpl('lists/options.tpl');
if (Post::has('submit')) {
+ S::assert_xsrf_token();
+
$values = $_POST;
$values = array_map('utf8_decode', $values);
$spamlevel = intval($values['bogo_level']);
}
$this->client->set_owner_options($liste, $values);
} elseif (isvalid_email(Post::v('atn_add'))) {
+ S::assert_xsrf_token();
$this->client->add_to_wl($liste, Post::v('atn_add'));
} elseif (Get::has('atn_del')) {
+ S::assert_xsrf_token();
$this->client->del_from_wl($liste, Get::v('atn_del'));
pl_redirect('lists/options/'.$liste);
}
$page->changeTpl('lists/delete.tpl');
if (Post::v('valid') == 'OUI') {
+ S::assert_xsrf_token();
+
if ($this->client->delete_list($liste, Post::b('del_archive'))) {
foreach (array('', '-owner', '-admin', '-bounces', '-unsubscribe') as $app) {
XDB::execute("DELETE FROM $table
$page->changeTpl('lists/soptions.tpl');
if (Post::has('submit')) {
+ S::assert_xsrf_token();
+
$values = $_POST;
$values = array_map('utf8_decode', $values);
unset($values['submit']);
$page->changeTpl('lists/check.tpl');
if (Post::has('correct')) {
+ S::assert_xsrf_token();
$this->client->check_options($liste, true);
}
</script>
<form method="post" action='{$smarty.server.REQUEST_URI}'>
+ {xsrf_token_field}
<table class="bicol">
{foreach from=$unregistered key=login item=it}
<tr class="{cycle values="pair,impair"}">
</h1>
<form method='post' action='{$smarty.server.REQUEST_URI}'>
+ {xsrf_token_field}
<table class='tinybicol' cellpadding='0' cellspacing='0'>
{foreach from=$owners item=xs key=promo}
<tr>
</h1>
<form method='post' action='{$smarty.server.REQUEST_URI}' enctype="multipart/form-data">
+ {xsrf_token_field}
<table class='bicol' cellpadding='0' cellspacing='0'>
{foreach from=$members item=xs key=promo}
<tr>
{else}
{$x.l}
{/if}
- <a href='{$platal->pl_self(1)}?del_member={$x.l}'>{icon name=cross title='retirer membre'}</a>
+ <a href='{$platal->pl_self(1)}?del_member={$x.l}&token={xsrf_token}'>{icon name=cross title='retirer membre'}</a>
<br />
{/foreach}
</td>
{if $details.sub>1}
Tu es inscrit sur la liste.<br />
Te désinscrire :
- <a href='{$platal->pl_self(1)}?del=1'>{icon name=cross title="me désinscrire"}</a>
+ <a href='{$platal->pl_self(1)}?del=1&token={xsrf_token}'>{icon name=cross title="me désinscrire"}</a>
{elseif $details.sub eq 1}
Ta demande d'inscription est en cours de validation.
{else}
Tu n'es pas inscrit.<br />
Demander ton inscription :
- <a href="{$platal->pl_self(1)}?add=1">{icon name=add title="demander mon inscription"}</a>
+ <a href="{$platal->pl_self(1)}?add=1&token={xsrf_token}">{icon name=add title="demander mon inscription"}</a>
{/if}
</td>
</tr>
{/foreach}
</table>
<form action='{$platal->pl_self(1)}' method='post'>
+ {xsrf_token_field}
<div class='center'>
<br />
<input type='submit' name='correct' value='Corriger les valeurs !' />
</p>
<form action='lists/create' method='post' enctype="multipart/form-data">
+ {xsrf_token_field}
<table class='bicol' cellspacing='0' cellpadding='2'>
<tr>
<th colspan='5'>Caractéristiques de la liste</th>
</h1>
<form method='post' action='{$platal->pl_self(1)}'>
+ {xsrf_token_field}
<table class='tinybicol' cellpadding='2' cellspacing='0'>
<tr class='impair'>
<td>
{/if}
<form method='post' action='lists'>
+ {xsrf_token_field}
<table class='tinybicol' cellspacing='0' cellpadding='2'>
<tr>
<th colspan='2'>Inscription à une liste de diffusion promo</th>
{if $liste.subscriptions|@count}
<strong>• Demandes d'inscription</strong><br />
{foreach from=$liste.subscriptions item=s}
- <a href='{$platal->ns}lists/moderate/{$liste.list}?sadd={$s.id}'
- onclick="return (is_IE || Ajax.update_html('list_{$liste.list}', '{$platal->ns}lists/ajax/{$liste.list}?sadd={$s.id}'));">
+ <a href='{$platal->ns}lists/moderate/{$liste.list}?sadd={$s.id}&token={xsrf_token}'
+ onclick="return (is_IE || Ajax.update_html('list_{$liste.list}', '{$platal->ns}lists/ajax/{$liste.list}?sadd={$s.id}&token={xsrf_token}'));">
{icon name=add title="Accepter"}
</a>
<a href='{$platal->ns}lists/moderate/{$liste.list}?sid={$s.id}'>
<strong>• Demandes de modération</strong><br />
<span class="smaller">
{foreach from=$liste.mails item=m}
- <a href='{$platal->ns}lists/moderate/{$liste.list}?mid={$m.id}&mok=1'
- onclick="return (is_IE || Ajax.update_html('list_{$liste.list}', '{$platal->ns}lists/ajax/{$liste.list}?mid={$m.id}&mok=1'));">
+ <a href='{$platal->ns}lists/moderate/{$liste.list}?mid={$m.id}&mok=1&token={xsrf_token}'
+ onclick="return (is_IE || Ajax.update_html('list_{$liste.list}', '{$platal->ns}lists/ajax/{$liste.list}?mid={$m.id}&mok=1&token={xsrf_token}'));">
{icon name=add title="Valider le mail"}
</a>
- <a href='{$platal->ns}lists/moderate/{$liste.list}?mid={$m.id}&mdel=1'
- onclick="return (is_IE || Ajax.update_html('list_{$liste.list}', '{$platal->ns}lists/ajax/{$liste.list}?mid={$m.id}&mdel=1'));">
+ <a href='{$platal->ns}lists/moderate/{$liste.list}?mid={$m.id}&mdel=1&token={xsrf_token}'
+ onclick="return (is_IE || Ajax.update_html('list_{$liste.list}', '{$platal->ns}lists/ajax/{$liste.list}?mid={$m.id}&mdel=1&token={xsrf_token}'));">
{icon name=delete title="Spam"}
</a>
De : {$m.sender}<br />
<td class='right'>{$liste.nbsub}</td>
<td class='right'>
{if $liste.sub eq 2}
- <a href='{$platal->ns}lists?del={$liste.list}'
- onclick="return (is_IE || Ajax.update_html('list_{$liste.list}', '{$platal->ns}lists/ajax/{$liste.list}?unsubscribe=1'));">
+ <a href='{$platal->ns}lists?del={$liste.list}&token={xsrf_token}'
+ onclick="return (is_IE || Ajax.update_html('list_{$liste.list}', '{$platal->ns}lists/ajax/{$liste.list}?unsubscribe=1&token={xsrf_token}'));">
{icon name=cross title="me désinscrire"}
</a>
{elseif $liste.sub eq 1}
{icon name=flag_orange title='inscription en attente de modération'}
{else}
- <a href='{$platal->ns}lists?add={$liste.list}'
- onclick="return (is_IE || Ajax.update_html('list_{$liste.list}', '{$platal->ns}lists/ajax/{$liste.list}?subscribe=1'));">
+ <a href='{$platal->ns}lists?add={$liste.list}&token={xsrf_token}'
+ onclick="return (is_IE || Ajax.update_html('list_{$liste.list}', '{$platal->ns}lists/ajax/{$liste.list}?subscribe=1&token={xsrf_token}'));">
{icon name=add title="m'inscrire"}
</a>
{/if}
{if $details.sub>1}
Tu es inscrit sur la liste.<br />
Te désinscrire :
- <a href='{$platal->pl_self(1)}?del=1'>{icon name=cross title="me désinscrire"}</a>
+ <a href='{$platal->pl_self(1)}?del=1&token={xsrf_token}'>{icon name=cross title="me désinscrire"}</a>
{elseif $details.sub eq 1}
Ta demande d'inscription est en cours de validation.
{else}
Tu n'es pas inscrit.<br />
Demander ton inscription :
- <a href="{$platal->pl_self(1)}?add=1">{icon name=add title="demander mon inscription"}</a>
+ <a href="{$platal->pl_self(1)}?add=1&token={xsrf_token}">{icon name=add title="demander mon inscription"}</a>
{/if}
</td>
</tr>
</td>
<td>{$s.addr}</td>
<td class='action'>
- <a href='{$platal->pl_self(1)}?sadd={$s.id}'>{icon name=add title="Valider l'inscription"}</a>
+ <a href='{$platal->pl_self(1)}?sadd={$s.id}&token={xsrf_token}'>{icon name=add title="Valider l'inscription"}</a>
<a href='{$platal->pl_self(1)}?sid={$s.id}'>{icon name=delete title="Refuser l'inscription"}</a>
</td>
</tr>
//]]></script>
<form method="post" action="{$platal->pl_self(1)}">
+{xsrf_token_field}
{if $with_fromx}
<table class="bicol" style="margin-bottom: 1ex">
<tr>
{$m.size} octets</small>
</td>
<td class='action'>
- <a href='{$platal->pl_self(1)}?mid={$m.id}&mok=1'>{icon name=add title="Accepter le message"}</a>
+ <a href='{$platal->pl_self(1)}?mid={$m.id}&mok=1&token={xsrf_token}'>{icon name=add title="Accepter le message"}</a>
</td>
<td class='action'>
<a href='{$platal->pl_self(1)}?mid={$m.id}'>{icon name=magnifier title="Voir le message"}</a><br/>
- <a href='{$platal->pl_self(1)}?mid={$m.id}&mdel=1'>{icon name=delete title="Spam !"}</a>
+ <a href='{$platal->pl_self(1)}?mid={$m.id}&mdel=1&token={xsrf_token}'>{icon name=delete title="Spam !"}</a>
</td>
</tr>
{/if}
{$m.size} octets</small>
</td>
<td class='action'>
- <a href='{$platal->pl_self(1)}?mid={$m.id}&mok=1'>{icon name=add title="Accepter le message"}</a>
+ <a href='{$platal->pl_self(1)}?mid={$m.id}&mok=1&token={xsrf_token}'>{icon name=add title="Accepter le message"}</a>
</td>
<td class='action'>
<a href='{$platal->pl_self(1)}?mid={$m.id}'>{icon name=magnifier title="Voir le message"}</a><br/>
- <a href='{$platal->pl_self(1)}?mid={$m.id}&mdel=1'>{icon name=delete title="Spam !"}</a>
+ <a href='{$platal->pl_self(1)}?mid={$m.id}&mdel=1&token={xsrf_token}'>{icon name=delete title="Spam !"}</a>
</td>
</tr>
{/if}
<h1>Refuser l'inscription d'un utilisateur</h1>
<form method='post' action='{$platal->pl_self(1)}'>
+ {xsrf_token_field}
<table class='tinybicol' cellpadding='0' cellspacing='0'>
<tr>
<th class='titre'>refuser l'inscription de :</th>
</h1>
<form method='post' action='{$platal->pl_self(1)}'>
+ {xsrf_token_field}
<table class='bicol' cellpadding='2' cellspacing='0'>
<tr><th colspan='2'>Options de la liste {$details.addr}</th></tr>
<tr class='impair'>
</p>
<form method='post' action='{$platal->pl_self(1)}'>
+ {xsrf_token_field}
<table class='tinybicol' cellpadding='2' cellspacing='0'>
<tr><th>Adresses non modérées</th></tr>
<tr>
<td>
{if $options.accept_these_nonmembers|@count}
{foreach from=$options.accept_these_nonmembers item=addr}
- {$addr}<a href='{$platal->pl_self(1)}&atn_del={$addr}'>
+ {$addr}<a href='{$platal->pl_self(1)}&atn_del={$addr}&token={xsrf_token}'>
{icon name=cross title="retirer de la whitelist"}
</a><br />
{/foreach}
</h1>
<form method='post' action='{$platal->pl_self(1)}'>
+ {xsrf_token_field}
<table class='bicol' cellpadding='2' cellspacing='0'>
<tr><th colspan='2'>Options de la liste {$details.addr}</th></tr>
<tr class='impair'>