Interdire la modification de son profil (frontend)

Réduire
X
 
  • Filtrer
  • Heure
  • Afficher
Tout effacer
nouveaux messages

  • [Problème] Interdire la modification de son profil (frontend)

    Bonjour,

    Sauf erreur, lorsqu'un utilisateur est connecté sur un site Joomla 4 (en frontend), il peut accéder à son profil utilisateur avec le lien suivant.

    index.php?option=com_users&view=profile

    Est-il possible d'interdire cet accès pour éviter qu'un utilisateur puisse modifier ses infos (nom / identifiant / mot de passe / e-mail) ?

    Ce serait utile, par exemple dans le cas d'un accès partagé entre plusieurs utilisateurs. Mais si possible sans passer par un composant comme Community Builder.

    Merci par avance ...
    SuperVespa avec quelques dizaines de sites Joomla 5 et encore quelques sites J4, J3 et même encore J1.5 (ben oui).

  • #2
    Hello.

    Effectivement rien n'est prévu pour bloquer la mise à jour de ses éléments dans la configuration des droits des utilisateurs.
    C'est peut-être une suggestion à faire pour une prochaine version, d'avoir un droit "modifier ses éléments" comme dans com_content par exemple.

    Ce que tu peux faire c'est faire un override des vues :
    • com_user > profile > default.php : pour supprimer le bouton de mise à jour du profil (ligne 27 à 35)
    • com_user > profile > edit.php : en supprimant tout et en laissant qu'un "die" afin d’éviter que quelqu'un connaissant l'url puisse faire des maj.
    A savoir que ces modifs te bloqueront aussi en temps que SU en front.
    Mais si c'est un problème c'est gérable avec un peu + de code.

    Pour l'instant je ne vois pas d'autre formule.
    Dernière édition par roland_d_alsace à 04/07/2023, 18h50
    A tous les utilisateurs de Joomla du très Grand Est de la France et du Jura suisse
    Rejoignez le Joomla Users Groupe Alsace...
    roland_d_alsace va-t-il devenir roland_du_grand_est ?

    Commentaire


    • #3
      Merci pour ta réponse !

      Effectivement, une option dans les réglages «Utilisateurs» me semble indispensable. Qui peut s'occuper de demander l'intégration de cette fonction ?
      SuperVespa avec quelques dizaines de sites Joomla 5 et encore quelques sites J4, J3 et même encore J1.5 (ben oui).

      Commentaire


      • #4
        Bonjour
        Envoyé par SuperVespa Voir le message
        Merci pour ta réponse !
        Effectivement, une option dans les réglages «Utilisateurs» me semble indispensable. Qui peut s'occuper de demander l'intégration de cette fonction ?
        Bon toi ;-)

        Après honnêtement ne t'attends pas forcément a ce qu'elle soit pris en compte. L'intérêt est uniquement pour une fraction des utilsiateurs de joomla
        Sous joomla3 (et pas joomla 4), j'avais trouvé une extension qui faisait cela mais je ne me souviens plus le nom.
        Voir si une extension de membre comme CB ne ferait pas cela? si c'est vraiment incontournable.

        Faciliter l'adoption du meilleur du Libre auprès du grand public https://clibre.eu/ - Connaissez-vous des communicants ... pour promouvoir joomla ? https://forum.joomla.fr/forum/th%C3%...mouvoir-joomla

        Commentaire


        • #5
          Bonjour,

          Si l'affichage du profil est inutile, pourquoi ne pas l'interdire mettant le menu profil uniquement pour l'accès spécial.

          L'autre solution peut être d'ajouter un peu de javascript dans le user.js ou custom.js de votre template.

          Dans le cas de cassiopeia, le user.js est dans le répertoire media/templates/site/cassiopeia/js (créez le fichier user.js s'il n'est pas déjà là)

          Pour désactiver le nom et l'email, le code suivant est suffisant :

          Code:
          // com-users-profile__edit-form  : frontend editing user profile
          document.addEventListener('DOMContentLoaded', function() {
            aform = document.querySelector('.com-users-profile__edit-form');
            if (aform == null) {return;} // not on this form => exit
            document.querySelector('#jform_name').disabled = "disabled"; // name
            document.querySelector('#jform_email1').disabled = "disabled"; // email
          })​
          Pour les mots de passe, il faut ajouter les champs #jform_password1 et #jform_password2.

          Pascal
          If anything can go wrong, it will...If I can help, I will ..https://conseilgouz.com

          Commentaire


          • #6
            Après quelques essais, disabled ne fonctionne pas : les champs sont bien bloqués, mais, à la sauvegarde, cela ne passe pas.

            Donc, il faut mettre les zones souhaitées en mode readonly. Le user.js devient donc :

            Code:
            // com-users-profile__edit-form  : frontend editing user profile
            document.addEventListener('DOMContentLoaded', function() {
              aform = document.querySelector('.com-users-profile__edit-form');
              if (aform == null) {return;} // not on this form => exit
              aform.querySelector('#jform_name').required = ""; // name
              aform.querySelector('#jform_name').readOnly = true; // name
              aform.querySelector('#jform_username').readOnly = true; // username
              aform.querySelector('#jform_email1').readOnly = true; // email
            // hide password fields
              pass = aform.querySelector('#jform_password1');
              pass.parentElement.parentElement.parentElement.parentElement.style.display = "none";
              pass = aform.querySelector('#jform_password2');
              pass.parentElement.parentElement.parentElement.parentElement.style.display = "none";
            })​
            Note : j'ai caché les mots de passe puisqu'il n'y a pas d'affichage.

            Pascal
            If anything can go wrong, it will...If I can help, I will ..https://conseilgouz.com

            Commentaire

            Annonce

            Réduire
            Aucune annonce pour le moment.

            Partenaire de l'association

            Réduire

            Hébergeur Web PlanetHoster
            Travaille ...
            X