self.end_headers()
def getUser(self, uid, md5, vhost):
- res = mysql_fetchone ("""SELECT a.full_name, aa.alias, IF (a.is_admin, 'admin', NULL)
+ res = mysql_fetchone ("""SELECT a.full_name, IF(aa.alias IS NULL, a.email, CONCAT(aa.alias, '@%s')),
+ IF (a.is_admin, 'admin',
+ IF(FIND_IN_SET('lists', at.perms) OR FIND_IN_SET('lists', a.user_perms), 'lists', NULL))
FROM accounts AS a
- INNER JOIN aliases AS aa ON (a.uid = aa.uid AND aa.type = 'a_vie')
+ INNER JOIN account_types AS at ON (at.type = a.type)
+ LEFT JOIN aliases AS aa ON (a.uid = aa.uid AND aa.type = 'a_vie')
WHERE a.uid = '%s' AND a.password = '%s' AND a.state = 'active'
LIMIT 1""" \
- % (uid, md5))
+ % (PLATAL_DOMAIN, uid, md5))
if res:
name, forlife, perms = res
if vhost != PLATAL_DOMAIN:
- res = mysql_fetchone ("""SELECT m.uid
+ res = mysql_fetchone ("""SELECT m.uid, IF(m.perms = 'admin', 'admin', 'lists')
FROM group_members AS m
INNER JOIN groups AS g ON (m.asso_id = g.id)
- WHERE perms = 'admin' AND uid = '%s' AND mail_domain = '%s'""" \
+ WHERE uid = '%s' AND mail_domain = '%s'""" \
% (uid, vhost))
if res:
- perms= 'admin'
- userdesc = UserDesc(forlife+'@'+PLATAL_DOMAIN, name, None, 0)
+ _, perms = res
+ userdesc = UserDesc(forlife, name, None, 0)
return (userdesc, perms, vhost)
else:
return None
members = mlist.getRegularMemberKeys()
is_member = userdesc.address in members
is_owner = userdesc.address in mlist.owner
- if mlist.advertised or is_member or is_owner or (not front_page and perms == 'admin'):
+ if (mlist.advertised and perms in ('lists', 'admin')) or is_member or is_owner or (not front_page and perms == 'admin'):
is_pending = False
if not is_member and (mlist.subscribe_policy > 1):
is_pending = list_call_locked(is_subscription_pending, userdesc, perms, mlist, False)
function handlers()
{
return array(
- 'lists' => $this->make_hook('lists', AUTH_MDP, 'lists'),
- 'lists/ajax' => $this->make_hook('ajax', AUTH_MDP, 'lists', NO_AUTH),
+ 'lists' => $this->make_hook('lists', AUTH_MDP),
+ 'lists/ajax' => $this->make_hook('ajax', AUTH_MDP, 'user', NO_AUTH),
'lists/create' => $this->make_hook('create', AUTH_MDP, 'lists'),
- 'lists/members' => $this->make_hook('members', AUTH_COOKIE, 'lists'),
- 'lists/csv' => $this->make_hook('csv', AUTH_COOKIE, 'lists'),
- 'lists/annu' => $this->make_hook('annu', AUTH_COOKIE, 'lists'),
- 'lists/archives' => $this->make_hook('archives', AUTH_COOKIE, 'lists'),
- 'lists/archives/rss' => $this->make_hook('rss', AUTH_PUBLIC, 'lists', NO_HTTPS),
+ 'lists/members' => $this->make_hook('members', AUTH_COOKIE),
+ 'lists/csv' => $this->make_hook('csv', AUTH_COOKIE),
+ 'lists/annu' => $this->make_hook('annu', AUTH_COOKIE),
+ 'lists/archives' => $this->make_hook('archives', AUTH_COOKIE),
+ 'lists/archives/rss' => $this->make_hook('rss', AUTH_PUBLIC, 'user', NO_HTTPS),
- 'lists/moderate' => $this->make_hook('moderate', AUTH_MDP, 'lists'),
- 'lists/admin' => $this->make_hook('admin', AUTH_MDP, 'lists'),
- 'lists/options' => $this->make_hook('options', AUTH_MDP, 'lists'),
- 'lists/delete' => $this->make_hook('delete', AUTH_MDP, 'lists'),
+ 'lists/moderate' => $this->make_hook('moderate', AUTH_MDP),
+ 'lists/admin' => $this->make_hook('admin', AUTH_MDP),
+ 'lists/options' => $this->make_hook('options', AUTH_MDP),
+ 'lists/delete' => $this->make_hook('delete', AUTH_MDP),
- 'lists/soptions' => $this->make_hook('soptions', AUTH_MDP, 'lists'),
- 'lists/check' => $this->make_hook('check', AUTH_MDP, 'lists'),
+ 'lists/soptions' => $this->make_hook('soptions', AUTH_MDP),
+ 'lists/check' => $this->make_hook('check', AUTH_MDP),
'admin/lists' => $this->make_hook('admin_all', AUTH_MDP, 'admin'),
);
}
Listes de diffusion de Polytechnique.org
</h1>
+{if $owner|@count > 0 || $member|@count > 0 || ( hasPerm('lists') && $public|@count
+> 0)}
<h2>L'inscription à une liste de diffusion</h2>
<ul>
+ {if hasPerm('lists')}
<li>Pour demander ton inscription à une liste de diffusion, il suffit
de cliquer sur l'icône {icon name=add} située en fin de ligne.</li>
<li>Si la liste est à inscription modérée, l'icône {icon name=flag_orange title="en cours"}
apparaîtra tant que ton inscription n'aura pas été validée par un modérateur.</li>
+ {/if}
<li>Pour te désinscrire d'une liste dont tu es membre, il suffit de cliquer sur la croix
{icon name=cross title="désinscription"} située en fin de ligne.</li>
</ul>
<li><strong>modérée :</strong> l'envoi d'un email à la liste est alors filtré par des
modérateurs, eux seuls peuvent accepter un message envoyé à la liste.</li>
</ul>
+{else}
+<p>
+ Tu n'as actuellement accès à aucune liste de diffusion.
+</p>
+{/if}
+{if hasPerm('lists')}
<h1>Demander la création d'une liste de diffusion</h1>
<p>
Tu peux demander la création d'une liste de diffusion sur le thème de ton choix.
</a>
</p>
+{/if}
{if $owner|@count}
<h1>Listes dont tu es modérateur</h1>
<p class="smaller">Attention : lorsqu'une liste à laquelle tu es abonné est privée, l'icône {icon name=weather_cloudy} est affichée en début de ligne. Si tu t'en désinscris, il ne te sera pas possible de t'y abonner de nouveau sans l'action d'un modérateur.</p>
{/if}
+
+{if hasPerm('lists')}
<h1>Listes de diffusion publiques auxquelles tu peux t'inscrire</h1>
<p>
</tr>
</table>
</form>
+{/if}
{* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *}
{if $smarty.session.user->googleapps}
<div class="menu_item"><a href="http://gmail.polytechnique.org/">Emails Google Apps</a></div>
{/if}
-{if $smarty.session.user->checkPerms('lists')}
<div class="menu_item"><a href="lists">Listes de diffusion</a></div>
-{/if}
{if $smarty.session.user->checkPerms('payment')}
<div class="menu_item"><a href="payment">Télépaiements</a></div>
{/if}