Add OpenID trusted management is admin/user/.
[platal.git] / templates / admin / user.tpl
1 {**************************************************************************}
2 {*                                                                        *}
3 {*  Copyright (C) 2003-2009 Polytechnique.org                             *}
4 {*  http://opensource.polytechnique.org/                                  *}
5 {*                                                                        *}
6 {*  This program is free software; you can redistribute it and/or modify  *}
7 {*  it under the terms of the GNU General Public License as published by  *}
8 {*  the Free Software Foundation; either version 2 of the License, or     *}
9 {*  (at your option) any later version.                                   *}
10 {*                                                                        *}
11 {*  This program is distributed in the hope that it will be useful,       *}
12 {*  but WITHOUT ANY WARRANTY; without even the implied warranty of        *}
13 {*  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *}
14 {*  GNU General Public License for more details.                          *}
15 {*                                                                        *}
16 {*  You should have received a copy of the GNU General Public License     *}
17 {*  along with this program; if not, write to the Free Software           *}
18 {*  Foundation, Inc.,                                                     *}
19 {*  59 Temple Place, Suite 330, Boston, MA  02111-1307  USA               *}
20 {*                                                                        *}
21 {**************************************************************************}
22
23
24 {if $smarty.post.u_kill_conf}
25 <form method="post" action="admin/user">
26   {xsrf_token_field}
27   <div class="center">
28     <input type="hidden" name="user_id" value="{$smarty.request.user_id}" />
29     Confirmer la suppression de l'utilisateur {$smarty.request.user_id} ({$mr.prenom} {$mr.nom} - X{$mr.promo})&nbsp;&nbsp;
30     <input type="submit" name="u_kill" value="continuer" />
31   </div>
32 </form>
33 {elseif $user}
34 {literal}
35
36 <script type="text/javascript">
37 //<![CDATA[
38 function doEditUser() {
39   document.forms.auth.hashpass.value = hash_encrypt(document.forms.edit.password.value);
40   document.forms.auth.password.value = "";
41   document.forms.auth.submit();
42 }
43
44 function del_alias(alias) {
45   document.forms.alias.del_alias.value = alias;
46   document.forms.alias.submit();
47 }
48
49 function del_profile(pid) {
50   document.forms.profiles.del_profile.value = pid;
51   document.forms.profiles.submit();
52 }
53
54 function del_fwd(fwd) {
55   document.forms.fwds.del_fwd.value = fwd;
56   document.forms.fwds.submit();
57 }
58
59 function del_openid(id) {
60   document.forms.openid.del_openid.value = id;
61   document.forms.openid.submit();
62 }
63
64 function act_fwd(fwd, activate) {
65   if (activate)
66     document.forms.fwds.activate_fwd.value = fwd;
67   else
68     document.forms.fwds.deactivate_fwd.value = fwd;
69   document.forms.fwds.submit();
70 }
71 function clean_fwd(fwd) {
72   document.forms.fwds.clean_fwd.value = fwd;
73   document.forms.fwds.submit();
74 }
75 function ban_write()
76 {
77     document.forms.bans.write_perm.value = "!xorg.*";
78 }
79 function ban_read()
80 {
81     document.forms.bans.read_perm.value = "!xorg.*";
82 }
83
84 $(document).ready(function() {
85   $('#tabs > ul').tabs();
86   $('.ui-tabs-nav li').width('24%')
87     .click(function() { $(this).children('a').click() });
88 });
89
90 // ]]>
91 </script>
92 {/literal}
93
94 <div id="tabs">
95   <ul style="margin-top: 0">
96     <li><a href="{$platal->pl_self()}#account"><span >Compte de {$user->login()}</span></a></li>
97     <li><a href="{$platal->pl_self()}#emails"><span>Emails</span></a></li>
98     <li><a href="{$platal->pl_self()}#authext"><span>OpenID</span></a></li>
99     <li><a href="{$platal->pl_self()}#forums"><span>Forums</span></a></li>
100   </ul>
101 </div>
102
103 <div id="account">
104 <form id="auth" method="post" action="admin/user/{$user->login()}#account">
105   {xsrf_token_field}
106   <h1>Informations sur le compte</h1>
107   <p class="smaller">
108     Dernière connexion le <strong>{$lastlogin|date_format:"%d %B %Y, %T"}</strong>
109     depuis <strong>{$host}</strong>.
110   </p>
111
112   <table class="bicol">
113     <tr>
114       <th colspan="2">
115         <div style="float: right; text-align: right">
116           Inscrit le {$user->registration_date|date_format}
117         </div>
118         <div style="float: left; text-align: left">
119           {icon name=user_gray} {$mr.hruid} (uid {$user->id()})
120         </div>
121         <input type="hidden" name="uid" value="{$user->id()}" />
122       </th>
123     </tr>
124     <tr>
125       <td class="titre">Nom complet</td>
126       <td><input type="text" name="full_name" maxlength="255" value="{$user->fullName()}" /></td>
127     </tr>
128     <tr>
129       <td class="titre">Nom affiché</td>
130       <td><input type="text" name="display_name" maxlength="255" value="{$user->displayName()}" /></td>
131     </tr>
132     <tr>
133       <td class="titre">Sexe</td>
134       <td>
135         <label>femme <input type="radio" name="sex" value="female" {if $user->isFemale()}checked="checked"{/if} /></label>
136         <label><input type="radio" name="sex" value="male" {if !$user->isFemale()}checked="checked"{/if} /> homme</label>
137       </td>
138     </tr>
139     <tr class="impair">
140       <td class="titre">Mot de passe</td>
141       <td>
142         <div style="float: left">
143           <input type="text" name="newpass_clair" size="10" maxlength="256" value="********" />
144           <input type="hidden" name="hashpass" value="" />
145         </div>
146         <div style="float: left; margin-top: 5px;">
147           {checkpasswd prompt="newpass_clair" submit="dummy_none"}
148         </div>
149       </td>
150     </tr>
151     <tr class="impair">
152       <td class="titre">Mot de passe SMTP</td>
153       <td>
154         <div style="float: left">
155           <input type="password" name="weak_password" size="10" maxlength="256" value="" />
156           {if $user->weak_access}
157           <input type="submit" name="disable_weak_access" value="Supprimer" />
158           {/if}
159         </div>
160       </td>
161     </tr>
162     <tr class="impair">
163       <td class="titre">Accès RSS</td>
164       <td>
165         <label>
166           <input type="checkbox" name="token_access" {if $user->token_access}checked="checked"{/if} value="1" />
167           activer l'accès
168         </label>
169       </td>
170     </tr>
171     <tr class="impair">
172       <td class="titre">Skin</td>
173       <td>
174         <select name="skin">
175           <option value="" {if !$user->skin}selected="selected"{/if}>Aucune (défaut du système)</option>
176           {iterate from=$skins item=skin}
177           <option value="{$skin.id}" {if $user->skin eq $skin.id}selected="selected"{/if}>{$skin.name}</option>
178           {/iterate}
179         </select>
180       </td>
181     </tr>
182     <tr class="pair">
183       <td class="titre">Etat du compte</td>
184       <td>
185         <select name="state">
186           <option value="pending" {if $user->state eq 'pending'}selected="selected"{/if}>pending (Non-inscrit)</option>
187           <option value="active" {if $user->state eq 'active'}selected="selected"{/if}>active (Inscrit, peut se logguer)</option>
188           <option value="disabled" {if $user->state eq 'disabled'}selected="selected"{/if}>disabled (Inscrit, accès interdit)</option>
189         </select><br />
190         <label>
191           <input type="checkbox" name="is_admin" value="1" {if $user->is_admin}checked="checked"{/if} />
192           administrateur du site
193         </label>
194       </td>
195     </tr>
196     <tr class="pair">
197       <td class="titre">Type de compte</td>
198       <td>
199         <select name="type">
200           {iterate from=$account_types item=type}
201           <option value="{$type.type}" {if $user->type eq $type.type}selected="selected"{/if}>{$type.type} ({$type.perms})</option>
202           {/iterate}
203         </select>
204         <a href="admin/account/types">{icon name=wrench title=Gérer} gérer</a>
205       </td>
206     </tr>
207     <tr class="pair">
208       <td class="titre">
209         Surveillance
210       </td>
211       <td>
212         <label><input type="checkbox" name="watch" {if $user->watch}checked="checked"{/if} value="1" />
213         Surveiller l'activité de ce compte</label><br />
214         <span class="smaller">Cette option permet d'avoir des logs complets de l'activité
215         du compte via le logger, et d'être alerté lors des connexions de l'utilisateur.</span>
216       </td>
217     </tr>
218     <tr class="pair">
219       <td class="titre">
220         Commentaire
221       </td>
222       <td>
223         <input type="text" name="comment" size="40" maxlength="64" value="{$user->comment}" />
224       </td>
225     </tr>
226     <tr class="impair">
227       <td colspan="2" class="center">
228         {* TODO: on 'update_account', update the hashpass field before sending the form. *}
229         <input type="submit" name="update_account" value="Mettre à jour" />
230         <input type="submit" name="su_account" value="Prendre l'identité" />
231         <input type="submit" name="log_account" value="Consulter les logs" />
232       </td>
233     </tr>
234   </table>
235 </form>
236
237 <h1>Fiches associées au compte</h1>
238
239 <form id="profiles" method="post" action="admin/user/{$user->login()}#account">
240   {xsrf_token_field}
241   <table class="bicol">
242     <tr>
243       <th></th>
244       <th>Identifiant de la fiche</th>
245       <th></th>
246     </tr>
247     {iterate from=$profiles item=profile}
248     <tr>
249       <td><input type="radio" name="owner" value="{$profile.pid}" {if $profile.owner}checked="checked"{/if}
250                  onclick="this.form.submit()" /></td>
251       <td>{$profile.hrpid}</td>
252       <td class="right">
253         <a href="profile/edit/{$profile.hrpid}">{icon name=user_edit}</a>
254         <a href="profile/{$profile.hrpid}" class="popup2">{icon name=user_suit}</a>
255         <a href="javascript:del_profile({$profile.pid})">{icon name=cross}</a>
256       </td>
257     </tr>
258     {/iterate}
259     <tr>
260       <td>
261         <input type="radio" name="owner" value="0" onclick="this.form.submit()" />
262       </td>
263       <td>None</td>
264       <td></td>
265     </tr>
266     <tr class="pair">
267       <td colspan="3">
268         <input type="hidden" name="del_profile" value="" />
269         <input type="text" maxlength="64" name="new_profile" />
270         <input type="submit" name="add_profile" value="Ajouter" />
271       </td>
272     </tr>
273   </table>
274 </form>
275
276 </div>
277
278 <!--
279   <h1>Informations sur la fiche</h1>
280   <table cellspacing="0" cellpadding="2" class="tinybicol">
281     <tr>
282       <th colspan="2">
283         <div style="float: right; text-align: right">
284           Matricule = {$mr.matricule}<br />
285           Matricule AX = {$mr.matricule_ax}
286         </div>
287         <div style="float: left; text-align: left">
288           UID = {$mr.user_id}<br />
289           Inscription = {$mr.date_ins|date_format}
290         </div>
291         <input type="hidden" name="user_id" value="{$mr.user_id}" />
292       </th>
293     </tr>
294     <tr class="pair">
295       <td class="titre">
296         Nom
297       </td>
298       <td>
299         <input type="text" name="nomN" size="20" maxlength="255" value="{$mr.nom}" />
300       </td>
301     </tr>
302     <tr class="pair">
303       <td class="titre">
304         Nom d'usage
305       </td>
306       <td>
307         <input type="text" name="nomusageN" size="20" maxlength="255" value="{$mr.nom_usage}" />
308       </td>
309     </tr>
310     <tr class="pair">
311       <td class="titre">
312         Prénom
313       </td>
314       <td>
315         <input type="text" name="prenomN" size="20" maxlength="30" value="{$mr.prenom}" />
316       </td>
317     </tr>
318     <tr class="pair">
319       <td class="titre">
320         Sexe
321       </td>
322       <td>
323         <label>femme <input type="radio" name="sexeN" {if $mr.sexe}checked="checked"{/if} value='1'/></label>
324         <label><input type="radio" name="sexeN" {if !$mr.sexe}checked="checked"{/if} value='0'/> homme</label>
325       </td>
326     </tr>
327     <tr class="pair">
328       <td class="titre">
329         Droits
330       </td>
331       <td>
332         <select name="permsN">
333           <option value="user" {if $mr.perms eq "user"}selected="selected"{/if}>user</option>
334           <option value="admin" {if $mr.perms eq "admin"}selected="selected"{/if}>admin</option>
335           <option value="pending" {if $mr.perms eq "pending"}selected="selected"{/if}>pending</option>
336           <option value="disabled" {if $mr.perms eq "disabled"}selected="selected"{/if}>disabled</option>
337         </select>
338       </td>
339     </tr>
340     {if $mr.perms neq 'pending'}
341     <tr class="pair">
342       <td class="titre">
343         {if $mr.naiss_err}<span class="erreur">{/if}
344         Date de naissance
345         {if $mr.naiss_err}</span>{/if}
346       </td>
347       <td>
348         <input type="text" name="naissanceN" size="12" maxlength="10" value="{$mr.naissance}" />
349         {if $mr.naissance_ini neq '0000-00-00' && $mr.naissance neq $mr.naissance_ini}
350           <span class="erreur smaller">({icon name=error}Date de naissance connue&nbsp;: {$mr.naissance_ini})</span>
351         {elseif $mr.naiss_err}
352           <span class="erreur smaller">({icon name=error}Date de naissance incohérente)</span>
353         {/if}
354       </td>
355     </tr>
356     {/if}
357     <tr class="pair">
358       <td class="titre">
359         Date de décès
360       </td>
361       <td>
362         <input type="text" name="decesN" size="12" maxlength="10" value="{$mr.deces}" />
363       </td>
364     </tr>
365     <tr class="pair">
366       <td class="titre">
367         Promo
368       </td>
369       <td>
370         <input type="text" name="promoN" size="4" maxlength="4" value="{$mr.promo}" />
371       </td>
372     </tr>
373     {if $mr.perms eq 'pending'}
374     <tr class="center">
375       <td colspan="2">
376         <input type="hidden" name="naissanceN" value="{$mr.naissance}" />
377         <input onclick="doEditUser(); return true;" type="submit" name="u_edit" value="UPDATE" />
378       </td>
379     </tr>
380     {else}
381     <tr class="center">
382       <td>
383         <a href="profile/{$mr.hruid}" class="popup2">[Voir fiche]</a>
384       </td>
385       <td>
386         <input onclick="doEditUser(); return true;" type="submit" name="u_edit" value="UPDATE" />
387       </td>
388     </tr>
389     <tr class="center">
390       <td>
391         <a href="admin/trombino/{$mr.user_id}">[Trombino]</a>
392       </td>
393       <td>
394         <input type="submit" name="u_kill_conf" value="Désinscrire" />
395       </td>
396     </tr>
397     {/if}
398   </table>
399 </form>
400 {if $mr.perms neq 'pending'}
401 <p>
402 Ne pas utiliser [Désinscrire] si le but est d'exclure la personne.
403 Pour ceci changer ses permissions en 'disabled'.
404 </p>
405 -->
406
407 <div id="emails">
408 <h1>Gestion de l'adresse X.org</h1>
409
410 <form id="alias" method="post" action="admin/user/{$user->login()}#emails">
411   {xsrf_token_field}
412   <table class="bicol" cellpadding="2" cellspacing="0">
413     <tr>
414       <th class="alias" colspan="3">
415         Alias email de l'utilisateur
416       </th>
417     </tr>
418     {iterate from=$aliases item=a}
419     <tr class="{cycle values="impair,pair"}">
420       <td>
421         <input type="radio" name='best' {if $a.best}checked="checked"{/if} value='{$a.alias}' onclick="this.form.submit()" />
422       </td>
423       <td>
424         {if $a.for_life}<strong>{$a.alias}</strong>{else}{$a.alias}{/if}
425         {if $a.expire}<span class='erreur'>(expire le {$a.expire|date_format})</span>{/if}
426       </td>
427       {if $a.for_life}
428       <td>garanti à vie*</td>
429       {else}
430       <td class="action">
431         <a href="javascript:del_alias('{$a.alias}')">{icon name=cross}</a>
432       </td>
433       {/if}
434     </tr>
435     {/iterate}
436     <tr class="{cycle values="impair,pair"}">
437       <td colspan="2" class="detail">
438         <input type="text" name="email" size="29" maxlength="60" value="" />
439       </td>
440       <td class="action">
441         <input type="hidden" name="user_id" value="{$mr.user_id}" />
442         <input type="hidden" name="del_alias" value="" />
443         <input type="submit" name="add_alias" value="Ajouter" />
444       </td>
445     </tr>
446     <tr class="{cycle values="impair,pair"}">
447       <td colspan="3" class="desc">
448         <strong>* à ne modifier qu'avec l'accord express de l'utilisateur !!!</strong>
449       </td>
450     </tr>
451   </table>
452 </form>
453
454 <br />
455
456 <form id="fwds" method="post" action="admin/user/{$user->login()}#emails">
457   {xsrf_token_field}
458   <table class="bicol" cellpadding="2" cellspacing="0">
459     <tr>
460       <th colspan="4">
461         Redirections
462       </th>
463     </tr>
464     {assign var=actives value=false}
465     {assign var=disabled value=false}
466     {foreach item=mail from=$emails}
467     {cycle assign=class values="impair,pair"}
468     <tr class="{$class}">
469       {if $mail->active && $mail->has_disable()}
470         {assign var=actives value=true}
471       {elseif $mail->disabled && $mail->has_disable()}
472         {assign var=disabled value=true}
473       {/if}
474       <td class="titre">
475         {if $mail->active}active{elseif $mail->disabled}suspendue{/if}
476       </td>
477       <td>
478         <span class="smaller">
479           {if !$mail->disabled}
480           <a href="javascript:act_fwd('{$mail->email}',{if $mail->active}false{else}true{/if})">
481             {if $mail->active}des{elseif $mail->broken}ré{/if}activer
482           </a>
483           {/if}
484         </span>
485       </td>
486       <td>
487         {if $mail->broken}<span style="color: #f00">{/if}
488         {if $mail->email == 'googleapps'}<a href="admin/googleapps/user/{$user->login()}">{/if}
489         {$mail->display_email}
490         {if $mail->email == 'googleapps'}</a>{/if}
491         {if $mail->broken}<em> (en panne)</em></span>{/if}
492       </td>
493       <td class="action">
494         {if $mail->is_removable()}
495         <a href="javascript:del_fwd('{$mail->email}')">{icon name=cross}</a>
496         {/if}
497       </td>
498     </tr>
499     {if $mail->panne && $mail->panne neq "0000-00-00"}
500     <tr class="{$class}">
501       <td colspan="3" class="smaller" style="color: #f00">
502         {icon name=error title="Panne"}
503         Panne de {$mail->display_email} le {$mail->panne|date_format}
504         {if $mail->panne neq $mail->last}confirmée le {$mail->last|date_format}{/if}
505       </td>
506       <td class="action">
507         <a href="javascript:clean_fwd('{$mail->email}')">effacer les pannes</a>
508       </td>
509     </tr>
510     {/if}
511     {/foreach}
512     {cycle assign=class values="impair,pair"}
513     <tr class="{$class}">
514       <td class="titre" colspan="2">
515         Ajouter une adresse
516       </td>
517       <td>
518         <input type="text" name="email" size="29" maxlength="60" value="" />
519       </td>
520       <td class="action">
521         <input type="hidden" name="user_id" value="{$mr.user_id}" />
522         <input type="hidden" name="del_fwd" value="" />
523         <input type="hidden" name="clean_fwd" value="" />
524         <input type="hidden" name="activate_fwd" value="" />
525         <input type="hidden" name="deactivate_fwd" value="" />
526         <input type="submit" name="add_fwd" value="Ajouter" />
527       </td>
528     </tr>
529     <tr class="{$class}">
530       <td colspan="4" class="center">
531         {if $actives}
532         <input type="submit" name="disable_fwd" value="Désactiver la redirection des emails" />
533         {/if}
534         {if $disabled}
535         <input type="submit" name="enable_fwd" value="Réactiver la redirection des emails" />
536         {/if}
537       </td>
538     </tr>
539   </table>
540 </form>
541
542 {javascript name="ajax"}
543 {test_email hruid=$user->login()}
544
545 <h1>Autres adresses de l'utilisateur</h1>
546
547 <table class="bicol">
548   <th>Virtual aliases auquel l'utilisateur appartient</th>
549   {foreach from=$virtuals item=virtual}
550   <tr class="{cycle values="impair,pair"}">
551     <td>{$virtual}</td>
552   </tr>
553   {/foreach}
554 </table>
555 </div>
556
557 <div id="authext">
558 <h1>Gestion des autorisations d'authentification externe</h1>
559
560 <form id="openid" method="post" action="admin/user/{$user->login()}#authext">
561   {xsrf_token_field}
562   <table class="bicol">
563     <tr>
564       <th colspan="2">Sites de confiance</th>
565     </tr>
566     {iterate from=$openid item=site}
567     <tr class="{cycle values="pair,impair"}">
568       <td><a href="{$site.url}">{$site.url}</a></td>
569       <td><a href="javascript:del_openid({$site.id})">{icon name=cross}</a></td>
570     </tr>
571     {/iterate}
572   </table>
573   <div><input type="hidden" name="del_openid"/></div>
574 </form>
575 </div>
576
577 <div id="forums">
578 <h1>Gestion de l'accès au forums</h1>
579
580 <form id="bans" method="post" action="admin/user/{$user->login()}#forums">
581   {xsrf_token_field}
582   <table class="bicol">
583     <tr>
584       <th colspan="4">
585         Permissions sur les forums
586       </th>
587     </tr>
588     <tr class="impair">
589       <td class="titre">
590         Poster
591       </td>
592       <td>
593         <input type="text" name="write_perm" size="32" maxlength="255" value="{$bans.write_perm}" />
594       </td>
595       <td class="action">
596         <a href="javascript:ban_write()">Bannir</a>
597       </td>
598     </tr>
599     <tr class="pair">
600       <td class="titre">
601         Lire
602       </td>
603       <td>
604         <input type="text" name="read_perm" size="32" maxlength="255" value="{$bans.read_perm}" />
605       </td>
606       <td class="action">
607         <a href="javascript:ban_read()">Bannir</a>
608       </td>
609     </tr>
610     <tr class="impair">
611       <td class="titre">
612         Commentaire
613       </td>
614       <td colspan="2">
615         <input type="text" name="comment" size="40" maxlength="255" value="{$bans.comment}" />
616       </td>
617     </tr>
618     <tr class="center">
619       <td colspan="3">
620         <input type="hidden" name="user_id" value="{$mr.user_id}" />
621         <input type="submit" name="b_edit" value="Modifier" />
622       </td>
623     </tr>
624   </table>
625 </form>
626 </div>
627
628
629 {/if}
630 {/if}
631
632 {* vim:set et sw=2 sts=2 sws=2 enc=utf-8: *}