Rendre propriétaire l'utilisateur qui ajoute le fichier via WP Customer Area Front-Office Publishing
Lorsqu'un utilisateur ajoute un fichier via le Front-Office Publishing, il doit sélectionner un owner. Trois options s'offrent à nous actuellement :
- Laisser la possibilité à l'utilisateur de sélectionner lui-même le owner. Il peut alors sélectionner un groupe WordPress ou n'importe lequel utilisateur WordPress. Dans mon cas c'était inutile et inconcevable de laisser un utilisateur voir tous les autres utilisateurs de mon site WordPress
- Appliquer un owner par défaut (soit un groupe ou un utilisateur).
- Ne rien faire. Aucun owner par défaut et aucune possibilité de sélectionner le owner. Ça amène à une incapacité de continuer puisqu'il faut absolument sélectionner un owner... pratique.
/wp-content/themes/montheme/customer-area/templates/post-owner-fields-readonly.template.php :
<?php /**
* Template version: 3.0.0
* Template zone: admin|frontend
*/ ?>
<?php /** @var array $owners */ ?>
<?php /** @var string $field_prefix */ ?>
<?php /** @var string $field_group */ ?>
<?php
// For our theme, we want to add the current user as owner on top of other
// owners that could be set in the admin
// To do so, we have to keep track of the latest index of type 'usr'
$i_usr = 0;
?>
<?php foreach ($owners as $type => $ids) : ?>
<?php if (empty($ids)) continue; ?>
<?php foreach ($ids as $i => $owner_id) : ?>
<?php
if (empty($owner_id)) continue;
if($type === 'usr') $i_usr++;
?>
<input type="hidden" name="<?php echo $field_prefix . $type . '[' . $i . ']'; ?>" value="<?php echo $owner_id; ?>" />
<?php endforeach; ?>
<?php endforeach; ?>
<input type="hidden" name="<?php echo $field_prefix ?>usr[<?php echo $i_usr ?>]" value="<?php echo get_current_user_id(); ?>" />
<p class="alert alert-default">
<i class="fa fa-info-circle mr-xs"></i> <?php _e('You will automatically be set as owner.', 'cuar'); ?>
</p>
Toujours en gardant la fonctionnalité de base qui permet de sélectionner des owners par défaut (option 1 plus haut), l'utilisateur-ajouteur est toujours appliqué comme owner.
Seul défaut que vous remarquerez peut-être, c'est qu'il ne semble pas y avoir de protection/vérification sur les owners qu'on ajoute. Dans le sens où l'utilisateur-ajouteur ne devrait pas avoir la permission de sélectionner le owner. Mais en pratique, il a le droit.
Je n'ai pas vérifié, mais il semblerait que les auteurs ont appliqué la logique non-sécuritaire suivante:
Si (l'utilisateur peut sélectionner le owner):
-> afficher le sélecteur, du genre <select name="cuar_owners_usr[]"> où on peut sélectionner le user qu'on veut
Sinon
-> mettre un <input type="hidden" name="cuar_owners_usr[0]" value="2" />
C'est seulement l'affichage qui change. Le code derrière laisse, en tout temps, l'utilisateur-ajouteur mettre le owner qu'il souhaite. Ça me semblait important de le souligner. Dans mon utilisation, je dois dire que ça me simplifie la vie ;-)
Les nouveaux commentaires sont désactivés dans cette archive.