Annonce

  •  » Utilisation
  •  » [résolu] Page Profil : comment supprimer les champs "mot de passe" ?

#1 2009-01-23 13:06:35

essaion
Membre
2009-01-15
19

[résolu] Page Profil : comment supprimer les champs "mot de passe" ?

Bonjour à nouveau ;)

Nouveau besoin, nouvelle problématique : je cherche à supprimer, dans la page "Profil" (profile.php) les trois champs liés au mot de passe. L'idée est que le visiteur ne puisse pas modifier son mot de passe (je m'y prends peut-être mal, n'hésitez pas à signaler si c'est le cas).

Partant de choses qui fonctionnent, j'ai rédigé le plug-in suivant :

Code:

<?php
/*
Plugin Name: Cache Change Password
Version: 0.0.0.1
Description: Dans la page "Personnaliser", cache les champs permettant de redefinir le mot de passe de l'utilisateur.
Author URI: http://phpwebgallery.net/doc/doku.php/fr:personnalisation:branche_1.7:menubar
*/

add_event_handler('loc_begin_profile', 'personal_cache_password');

function personal_cache_password()
{
  // Recupere et enleve les trois champs de password
  $s = personal_remove_tpl_code('profile_content', '<!-- BEGIN not_admin -->', '<!-- END not_special_user -->');
}

/* Suppression d'une partie du code dans un template */
/* Code compris entre la chaine $str_begin et $str_end */
function personal_remove_tpl_code($tlp_handle, $str_begin, $str_end)
{
  global $template;
  $template->loadfile($tlp_handle);

  $p_beg = strpos($template->uncompiled_code[$tlp_handle], $str_begin);
  $p_end = strpos($template->uncompiled_code[$tlp_handle], $str_end) + strlen($str_end);
  $s = substr($template->uncompiled_code[$tlp_handle], $p_beg, $p_end - $p_beg);

  $template->uncompiled_code[$tlp_handle] = 
  substr_replace($template->uncompiled_code[$tlp_handle], '', $p_beg, $p_end - $p_beg);
 
  return $s;
}

?>

Problème : le seul résultat est un texte d'erreur au lieu de la page Profil : "Template->loadfile(): No file specified for handle profile_content"
Et là, j'ai beau chercher, je capte pas. Ça marche au poil pour menubar, mais je comprends pas pourquoi, dans template.php, "files[$handle]" semble vide.
Si l'un de vous a une idée sur le pourquoi, ou sur la façon de débugger ça (je débute en PHP ; j'ai beau avoir des bases - lointaines - en Java, shell et Basic, c'est un peu rude), je suis preneur !

Merci d'avance !


Précisions peut-être utile : PWG v.1.7.3, PWG_Stuffs installé (utilisé uniquement pour sa fonction "bloc personnel") et quelques autres plug-ins perso (tout petits : chacun gère une seule fonction : changement sur menubar / adaptation de la taille des vignettes / modification de la bannière sur la page d'administration).

Dernière modification par essaion (2009-01-23 23:19:03)

Hors ligne

#2 2009-01-23 13:17:59

ddtddt
Équipe Piwigo
Quetigny (21) - France
2007-07-27
16901

Re: [résolu] Page Profil : comment supprimer les champs "mot de passe" ?

Ne modifie pas le code php mais l'affichage dans le template

regarde également du coté de l'utilisateur générique je pense que c'est ce qui correspond à ton besoin


Vous aimez Piwigo alors n'hésitez pas à participer avec nous, plus d'infos sur la page "Contribuer à Piwigo". Si vous n'avez pas beaucoup de temps et que vous souhaitez nous soutenir vous pouvez aussi le faire par un don.

Hors ligne

#3 2009-01-23 13:20:21

P@t
Ex Equipe Piwigo
Nice
2007-06-13
5695

Re: [résolu] Page Profil : comment supprimer les champs "mot de passe" ?

C'est normal, le template n'est pas encore assigné lors de l'évènement loc_begin_profil. Il faut faire:

add_event_handler('loc_end_profile', 'personal_cache_password');

Mais comme dit ddtddt, il faut voir si l'utilisateur générique n'est pas la bonne solution...

Dernière modification par P@t (2009-01-23 13:21:44)


P@t

Hors ligne

#4 2009-01-23 13:41:01

nicolas
Former Piwigo Team
2004-12-30
1564

Re: [résolu] Page Profil : comment supprimer les champs "mot de passe" ?

Le fait de supprimer les liens ne suffira évidemment pas pour empêcher quelqu'un de changer son mot de passe. Il suffit de connaître l'url (profile.php) pour pouvoir le changer.


Donnez du peps à vos tags
Laissez vos visiteurs vous aidez à tagger vos images avec user_tags

Hors ligne

#5 2009-01-23 14:22:08

essaion
Membre
2009-01-15
19

Re: [résolu] Page Profil : comment supprimer les champs "mot de passe" ?

ddtddt > Je pensais que c'était justement ce que faisait mon plug-in : retirer du texte dans le template quand le trigger est lancé ?! Du coup, pas besoin de modifier le php...

P@t & ddtddt > Non, l'utilisateur générique ne semble pas la bonne solution, car il faudrait quand même que l'utilisateur saisisse un password pour être identifié (sauf erreur de ma part, ce n'est pas le cas avec Générique - d'après ce que j'ai compris de la doc ; je n'ai pas testé). EDIT : j'ai testé ; apparemment il faut bien saisir le mot de passe : bon point. En revanche, l'utilisateur ne peut plus personnaliser son affichage, ce qui n'est pas souhaitable.

nicolas > Bah non, justement. Le fait de modifier le template à la volée pour empêcher l'affichage de ces champs fait que l'utilisateur peut bien taper l'URL de profile.php, il ne verra quand même pas les champs (ou alors, j'ai rien compris, ce qui reste possible). Et même si c'était le cas, les utilisateurs supposés de la galerie n'ont pas le niveau technique (ce sont des clique-bouton, quoi).

P@t > Merci pour l'info ; j'ai corrigé mais la page de profil n'est pas modifiée... Le trigger "end" arriverait-il trop tard ?!


Merci de vos retours, tous ! Que pensez-vous de la situation ? Pas brillant, hein ? :)

Dernière modification par essaion (2009-01-23 14:55:10)

Hors ligne

#6 2009-01-23 14:53:15

ddtddt
Équipe Piwigo
Quetigny (21) - France
2007-07-27
16901

Re: [résolu] Page Profil : comment supprimer les champs "mot de passe" ?

L'utilisateur générique est un utilisateur qui se connecte avec un identifiant et un mot de passe mais qui n'a pas accès à la page personnalisation je pense que c'est ton besoin (sauf si tu veux leur permettre de changer de thème).

Vu que le moteur de template va changer lors de la sortie de la prochaine version, il est aussi simple, avec le plugin qui va bien, d'aller modifier le template et de supprimer les lignes qui affiche le changement de code.

J'avais lu un peut vite ton premier message ok c'est bien la midif du template


Vous aimez Piwigo alors n'hésitez pas à participer avec nous, plus d'infos sur la page "Contribuer à Piwigo". Si vous n'avez pas beaucoup de temps et que vous souhaitez nous soutenir vous pouvez aussi le faire par un don.

Hors ligne

#7 2009-01-23 14:57:25

essaion
Membre
2009-01-15
19

Re: [résolu] Page Profil : comment supprimer les champs "mot de passe" ?

ddtddt a écrit:

L'utilisateur générique est un utilisateur qui se connecte avec un identifiant et un mot de passe mais qui n'a pas accès à la page personnalisation je pense que c'est ton besoin (sauf si tu veux leur permettre de changer de thème).

Vu que le moteur de template va changer lors de la sortie de la prochaine version, il est aussi simple, avec le plugin qui va bien, d'aller modifier le template et de supprimer les lignes qui affiche le changement de code.

J'avais lu un peut vite ton premier message ok c'est bien la midif du template

Merci de ton retour !

Oui, il faudrait que les utilisateurs puissent modifier la façon dont la galerie s'affiche si la fantaisie leur vient. Le seul truc qu'il ne faut pas qu'ils puissent faire, c'est changer de mot de passe.

Supprimer les lignes qui affichent le code, c'est précisément ce que j'essaie de faire... et c'est aussi ce qui ne marche pas ;)
Merci pour ta confirmation que la démarche semble correcte (modification du template à la volée).

Un print "$s"; après l'extraction de la chaîne -//:---\spam qu'elle est bien extraite : j'ai bien trois lignes ({lang:Password}, {lang:new_password} et  {lang:Confirm Password} ) avec les champs de saisie qui s'affichent en haut de page. Du coup, je ne comprends vraiment pas pourquoi les champs persistent à s'afficher. Qu'est-ce que je rate ?

Dernière modification par essaion (2009-01-23 15:00:29)

Hors ligne

#8 2009-01-23 15:19:25

nicolas
Former Piwigo Team
2004-12-30
1564

Re: [résolu] Page Profil : comment supprimer les champs "mot de passe" ?

essaion a écrit:

nicolas > Bah non, justement. Le fait de modifier le template à la volée pour empêcher l'affichage de ces champs fait que l'utilisateur peut bien taper l'URL de profile.php, il ne verra quand même pas les champs (ou alors, j'ai rien compris, ce qui reste possible). Et même si c'était le cas, les utilisateurs supposés de la galerie n'ont pas le niveau technique (ce sont des clique-bouton, quoi).

Je ne connais pas le niveau de tes utilisateurs. Je te signale juste que modifier le template n'empêchera pas d'exécuter le code php (contenu dans le fichier profile.php) qui permet de changer son mot de passe. Il y a deux manières de faire pour arriver à cela:
- utiliser firefox et l'extension web developper pour aouter les champs que tu as enlevé
- recréer le formulaire dans une bêtee page html et le faire pointer vers l'url de ton site. (1)

Note:
(1) cela pose tout même un problème qu'il faudrait que l'on règle en mettant systèmatiquement un jeton dans tous les formulaires pour être sûr qu'ils ont été générés par le serveur!


Donnez du peps à vos tags
Laissez vos visiteurs vous aidez à tagger vos images avec user_tags

Hors ligne

#9 2009-01-23 15:21:59

ddtddt
Équipe Piwigo
Quetigny (21) - France
2007-07-27
16901

Re: [résolu] Page Profil : comment supprimer les champs "mot de passe" ?

Pour moi je ferais

Avec le plugin LocalFiles Editor

Onglet template -> yoga/profile_content.tpl

début de ligne 20 et 27 <!--
fin de ligne 25 et 38 -->

Inconvénient dans le profile des utilisateur en admin tu ne pourra plus changer les mot de passe (mais tu saura faire la manip inverse en cas de besoin


Vous aimez Piwigo alors n'hésitez pas à participer avec nous, plus d'infos sur la page "Contribuer à Piwigo". Si vous n'avez pas beaucoup de temps et que vous souhaitez nous soutenir vous pouvez aussi le faire par un don.

Hors ligne

#10 2009-01-23 15:24:56

ddtddt
Équipe Piwigo
Quetigny (21) - France
2007-07-27
16901

Re: [résolu] Page Profil : comment supprimer les champs "mot de passe" ?

nicolas a écrit:

Note:
(1) cela pose tout même un problème qu'il faudrait que l'on règle en mettant systèmatiquement un jeton dans tous les formulaires pour être sûr qu'ils ont été générés par le serveur!

Un fiche dans le Bugtracker :)


Vous aimez Piwigo alors n'hésitez pas à participer avec nous, plus d'infos sur la page "Contribuer à Piwigo". Si vous n'avez pas beaucoup de temps et que vous souhaitez nous soutenir vous pouvez aussi le faire par un don.

Hors ligne

#11 2009-01-23 15:49:37

essaion
Membre
2009-01-15
19

Re: [résolu] Page Profil : comment supprimer les champs "mot de passe" ?

nicolas > Je ne voulais pas sous-entendre qu'il était évident que les utilisateurs étaient des pousse-bouton. Cela dit, les manips que tu indiques sont assez vicieuses : je n'y aurais pas pensé tout seul, ça c'est sûr. Avec ton explication, je comprends mieux ce que tu voulais dire dans le post précédent : certes, la modification de password reste possible pour les initiés. Ce qui est peu probable. Et de toute façon, aucun n'a de rôle supérieur à "visiteur", donc rien de compromettant question sécurité (pour autant que je puisse dire).
Bien vu aussi pour le problème de sécurité qui en découle !

ddtddt > Hm, en fait, ce que tu suggères, c'est que je bourrine le template, sans passer par la case "plug-in". Pas besoin de LocalFilesEditor pour ça, en fait ;) (j'aime autant faire le truc tranquille sur un environnement de test avant de pousser ça en prod).

Hors ligne

#12 2009-01-23 15:49:44

P@t
Ex Equipe Piwigo
Nice
2007-06-13
5695

Re: [résolu] Page Profil : comment supprimer les champs "mot de passe" ?

essaion a écrit:

P@t > Merci pour l'info ; j'ai corrigé mais la page de profil n'est pas modifiée... Le trigger "end" arriverait-il trop tard ?!

En effet, j'ai répondu trop vite...
Pour la 2.0, il y a un trigger load_profile_in_template, qui n'existe malheureusement pas en 1.7.
Le mieux, c'est donc de modifier directement le template comme l'a dit ddtddt.
En 2.0, tu pourras créer un template extension, ce qui sera pratique pour faire les mises à jour de la galerie.

PS: LocalFiles Editor te permet aussi de modifier les fichiers template ;-)

Dernière modification par P@t (2009-01-23 15:50:18)


P@t

Hors ligne

#13 2009-01-23 15:55:52

VDigital
Former Piwigo Team
Montpellier (FR)
2005-05-04
15127

Re: [résolu] Page Profil : comment supprimer les champs "mot de passe" ?

ddtddt a écrit:

nicolas a écrit:

Note:
(1) cela pose tout même un problème qu'il faudrait que l'on règle en mettant systèmatiquement un jeton dans tous les formulaires pour être sûr qu'ils ont été générés par le serveur!

Un fiche dans le Bugtracker :)

On peut effectivement recréer les champs supprimés.

Mais quand même, changer son mot de passe... Cela reste bien son mot de passe et pas celui du copain, non?
Je ne peux changer mon mot de passe que si je suis connecté (Auto-connexion comprise, je sais).
Le risque est donc limité voire extrêmement limité il me semble.

Un vent de sagesse?


Vincent -« Plus vidéaste averti que photographe amateur... »
La galerie - Le blog   

Piwigo est une application libre de gestion de photos en ligne.

Hors ligne

#14 2009-01-23 15:56:23

VDigital
Former Piwigo Team
Montpellier (FR)
2005-05-04
15127

Re: [résolu] Page Profil : comment supprimer les champs "mot de passe" ?

P@t a écrit:

essaion a écrit:

P@t > Merci pour l'info ; j'ai corrigé mais la page de profil n'est pas modifiée... Le trigger "end" arriverait-il trop tard ?!

En effet, j'ai répondu trop vite...
Pour la 2.0, il y a un trigger load_profile_in_template, qui n'existe malheureusement pas en 1.7.
Le mieux, c'est donc de modifier directement le template comme l'a dit ddtddt.
En 2.0, tu pourras créer un template extension, ce qui sera pratique pour faire les mises à jour de la galerie.

PS: LocalFiles Editor te permet aussi de modifier les fichiers template ;-)

+1


Vincent -« Plus vidéaste averti que photographe amateur... »
La galerie - Le blog   

Piwigo est une application libre de gestion de photos en ligne.

Hors ligne

#15 2009-01-23 15:56:40

essaion
Membre
2009-01-15
19

Re: [résolu] Page Profil : comment supprimer les champs "mot de passe" ?

Merci à tous pour vos retours, rapides et lumineux.
Le problème est réglé en modifiant le template profile_content.tpl, selon la méthode fournie par ddtddt.

C'est pas super propre, mais au moins ça fonctionne :)
Problème résolu, merci la PWG Team !

Hors ligne

  •  » Utilisation
  •  » [résolu] Page Profil : comment supprimer les champs "mot de passe" ?

Pied de page des forums

Propulsé par FluxBB

github twitter newsletter Faire un don Piwigo.org © 2002-2024 · Contact