Implement hidden permission in profile editor
authorNicolas Iooss <nicolas.iooss_git@polytechnique.org>
Sun, 1 Jun 2014 19:39:16 +0000 (21:39 +0200)
committerNicolas Iooss <nicolas.iooss_git@polytechnique.org>
Sun, 1 Jun 2014 19:39:16 +0000 (21:39 +0200)
Accounts with "directory_hidden" permission (ie. people allowed to read
and update almost every information in the directory) need to be allowed
to read attributes flagged "private" (because the order of the
visibility flags is public < ax < private < hidden).

While at it, explicitly allow admin accout to read hidden values too.

templates/profile/adresses.address.tpl
templates/profile/deco.tpl
templates/profile/general.hobby.tpl
templates/profile/general.networking.tpl
templates/profile/jobs.job.tpl
templates/profile/phone.tpl

index 69dd6d0..223629b 100644 (file)
 
 {assign var=prefname value="addresses[$i]"}
 {assign var=prefid value="addresses_$i"}
-{if !hasPerm('directory_private') && ($address.pub eq 'private') && !$new}
-{assign var=hiddenaddr value=true}
+{if $isMe || hasPerm('admin') || $new}
+  {assign var=hiddenaddr value=false}
+{elseif hasPerm('directory_hidden') || (($address.pub neq 'hidden') && ($address.pub neq 'private'))}
+  {assign var=hiddenaddr value=false}
+{elseif hasPerm('directory_private') && ($address.pub neq 'hidden')}
+  {assign var=hiddenaddr value=false}
 {else}
-{assign var=hiddenaddr value=false}
+  {assign var=hiddenaddr value=true}
 {/if}
 
 <table class="bicol" style="display: none; margin-bottom: 1em" id="{$prefid}_grayed">
index 234ba70..e12b5ad 100644 (file)
 {*                                                                        *}
 {**************************************************************************}
 
-{if !hasPerm('directory_private') && ($medals_pub eq 'private') && ($medals|@count neq 0)}
-{assign var=hidden_medal value=true}
+{if $isMe || hasPerm('admin') || ($medals|@count eq 0)}
+  {assign var=hidden_medal value=false}
+{elseif hasPerm('directory_hidden') || (($medals_pub neq 'hidden') && ($medals_pub neq 'private'))}
+  {assign var=hidden_medal value=false}
+{elseif hasPerm('directory_private') && ($medals_pub neq 'hidden')}
+  {assign var=hidden_medal value=false}
 {else}
-{assign var=hidden_medal value=false}
+  {assign var=hidden_medal value=true}
 {/if}
 <table class="bicol">
   <tr>
index e573404..c7d68d0 100644 (file)
 {*                                                                        *}
 {**************************************************************************}
 
-{if !hasPerm('directory_private') && ($hobby.pub eq 'private') && !empty($hobby.text|smarty:nodefaults)}
-{assign var=hiddenhobby value=true}
+{if $isMe || hasPerm('admin') || empty($hobby.text|smarty:nodefaults)}
+  {assign var=hiddenhobby value=false}
+{elseif hasPerm('directory_hidden') || (($hobby.pub neq 'hidden') && ($hobby.pub neq 'private'))}
+  {assign var=hiddenhobby value=false}
+{elseif hasPerm('directory_private') && ($hobby.pub neq 'hidden')}
+  {assign var=hiddenhobby value=false}
 {else}
-{assign var=hiddenhobby value=false}
+  {assign var=hiddenhobby value=true}
 {/if}
 
 <tr id="hobby_{$i}">
index aa3cd40..3e07904 100644 (file)
 {*                                                                        *}
 {**************************************************************************}
 
-{if !hasPerm('directory_private') && ($nw.pub eq 'private') && !empty($nw.address|smarty:nodefaults)}
-{assign var=hiddennw value=true}
+{if $isMe || hasPerm('admin') || empty($nw.address|smarty:nodefaults)}
+  {assign var=hiddennw value=false}
+{elseif hasPerm('directory_hidden') || (($nw.pub neq 'hidden') && ($nw.pub neq 'private'))}
+  {assign var=hiddennw value=false}
+{elseif hasPerm('directory_private') && ($nw.pub neq 'hidden')}
+  {assign var=hiddennw value=false}
 {else}
-{assign var=hiddennw value=false}
+  {assign var=hiddennw value=true}
 {/if}
 
 <tr id="networking_{$i}">
index e83ecf5..8cd4199 100644 (file)
 {assign var=sector_text value="sector_text_"|cat:$i}
 {assign var=sector value="sector_"|cat:$i}
 {assign var=entreprise value="entreprise_"|cat:$i}
-{if !hasPerm('directory_private') && ($job.pub eq 'private') && !$new}
-{assign var=hiddenjob value=true}
+{if $isMe || hasPerm('admin')}
+  {assign var=hiddenjob value=false}
+  {assign var=hiddenaddr value=false}
+  {assign var=hiddenemail value=false}
 {else}
-{assign var=hiddenjob value=false}
-{/if}
-{if !hasPerm('directory_private') && ($job.w_address.pub eq 'private') && !empty($job.w_address.text|smarty:nodefaults)}
-{assign var=hiddenaddr value=true}
-{else}
-{assign var=hiddenaddr value=false}
-{/if}
-{if !hasPerm('directory_private') && ($job.w_email_pub eq 'private') && !empty($job.w_email|smarty:nodefaults)}
-{assign var=hiddenemail value=true}
-{else}
-{assign var=hiddenemail value=false}
+  {if hasPerm('directory_hidden') || ( ($job.pub neq 'hidden') && ($job.pub neq 'private')) || $new}
+    {assign var=hiddenjob value=false}
+  {elseif hasPerm('directory_private') && ($job.pub neq 'hidden')}
+    {assign var=hiddenjob value=false}
+  {else}
+    {assign var=hiddenjob value=true}
+  {/if}
+  {if hasPerm('directory_hidden') || ( ($job.w_address.pub neq 'hidden') && ($job.w_address.pub neq 'private')) || empty($job.w_address.text|smarty:nodefaults)}
+    {assign var=hiddenaddr value=false}
+  {elseif hasPerm('directory_private') && ($job.w_address.pub neq 'hidden')}
+    {assign var=hiddenaddr value=false}
+  {else}
+    {assign var=hiddenaddr value=true}
+  {/if}
+  {if hasPerm('directory_hidden') || ( ($job.w_email_pub neq 'hidden') && ($job.w_email_pub neq 'private')) || empty($job.w_email|smarty:nodefaults)}
+    {assign var=hiddenemail value=false}
+  {elseif hasPerm('directory_private') && ($job.w_email_pub neq 'hidden')}
+    {assign var=hiddenemail value=false}
+  {else}
+    {assign var=hiddenemail value=true}
+  {/if}
 {/if}
 <div id="{$jobid}">
   <input type="hidden" name="{$jobpref}[removed]" value="0" />
index 4d9adb6..7fb869a 100644 (file)
 
 {assign var=telpref value="`$prefname`[`$telid`]"}
 {assign var=id value="`$prefid`_`$telid`"}
-{if !hasPerm('directory_private') && ($tel.pub eq 'private') && !empty($tel.display|smarty:nodefaults)}
-{assign var=hiddentel value=true}
+{if $isMe || hasPerm('admin') || empty($tel.display|smarty:nodefaults)}
+  {assign var=hiddentel value=false}
+{elseif hasPerm('directory_hidden') || (($tel.pub neq 'hidden') && ($tel.pub neq 'private'))}
+  {assign var=hiddentel value=false}
+{elseif hasPerm('directory_private') && ($tel.pub neq 'hidden')}
+  {assign var=hiddentel value=false}
 {else}
-{assign var=hiddentel value=false}
+  {assign var=hiddentel value=true}
 {/if}
 <div class="titre" style="float: left; width: 2.5em">N°{$telid+1}</div>
 <div style="float: left;">