Benutzer soll nur Passwort ändern können

Mehr
31 Dez. 2014 12:07 #40074 von bwebdesign
Benutzer soll nur Passwort ändern können wurde erstellt von bwebdesign
Hallo liebe Community

Ich habe folgendes Problem:

Ich möchte, dass ein registrierter Benutzer nur sein Passwort ändern kann und nicht auch die Mailadresse. Warum dies?

Ich benutze Kandanda mit Joomla 3.3.6 als Vereinsverwaltung und dort sind bei den Mitgliedern die Mailadressen hinterlegt und zugleich mit einem Joomlabenutzer verknüpft. Es gibt im Frontend auch einen Link für registrierte Benutzer um ihre Daten in Kandanda (Adresse, Geburtsdatum, usw) zu ändern. Dort können die Mitglieder auch Ihre Mailadresse ändern. Diese wird dann automatisch auch im Joomlabenutzer selbst geändert.

Wenn ein Benutzer aber seine Mailadresse über das Standard Joomlaprofil ändert, wird dies nicht in Kandanda übernommen. :woohoo:

Nun muss ich aber den Link zum ändern des Standard Joomlaprofils trotzdem nützen, damit der Benutzer ja sein Passwort ändern kann, und dann wird Ihm ja aber auch immer das Emailfeld angezeigt, was ich aber nicht möchte.

Am liebsten wäre es mir, wenn es einen Link geben würde, der nur das ändern des Passwortes ermöglichen würde. Aber soweit ich weiss, bietet Joomla dies nicht.

Kennt jemand ein Plugin, dass diese Funktion ermöglicht?
Ich habe bisher noch nichts gefunden oder nach dem falschen gesucht ???

Als einzige Lösung habe ich bisher das anpassen der Datei components/com_users/models/forms/Profile.xml gefunden. Dort die nicht gewünschten Felder auf "hidden" setzen. Finde dies nicht ganz so ein elegante Lösung, das ich es nicht als Override hinkriege.

Besten Dank für eure Inputs und einen guten Rutsch ins neue Jahr :D ;D :)

Erfolg hat, wer andere Erfolgreich macht.

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Mehr
31 Dez. 2014 15:43 #40075 von Tribal6
Salü
Ich kenne diese Erweiterung zwar nicht, bin aber der Meinung dass dieses synchronisieren der Mailadressen Sache der Erweiterung selbst ist. Joomla verwaltet ja schon diese User-Mailadressen, und mit der Installation dieser Erweiterung werden die Mailadressen unnötigerweise an einer zweiten Stelle verwaltet. Ergo sollte auch diese Erweiterung dafür sorgen, dass diese Adressen auch ordentlich nachgetragen werden, und zwar in beide Richtungen. Die Verknüpfung der Postadresse mit der J-User-Id würde da ja schon reichen.

Es sind da ja anscheinend schon einige Versionen rausgekommen. Bist du sicher, das dies nicht irgendwie glöst ist, und du hast irgendwo bei den Einstellungen was übersehen? Ich bin mir sicher, das dieses Problem bei nahezu allen Anwendern der Software besteht (und somit ev. schon gelöst ist). Falls nicht, dann ist das schlicht ein Denk-/Designfehler der Software selbst. Und du hast ja bezahlt dafür. Hast du den Entwickler diesbezüglich schon angeschrieben?

Sowieso: Benutzerangaben an zwei versch. Stellen ändern zu können (oder sogar müssen) verwirrt die meisten Benutzer nur unnötig, meiner Meinung nach.

Als Lösung das J-User-Formular, resp. dessen XML-File zu ändern halte ich eher für suboptimal. Bei jedem Update musste dann wieder kontrollieren gehen. Besser wäre da ev. ein Template-Override dieser Ansicht. Falls möglich. Oder natürlich mit einem kleinen User-Plugin das beim Event 'onUserAfterSave' die Mailadressen updatet.

Ich würde an deiner Stelle mal den Entwickler diesbezüglich anschreiben. Und in der Zwischenzeit eine Lösung via Override erstellen.

Prösterchen
Roger

Tue das, was du kannst, mit dem was du hast, da wo du bist.

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Mehr
31 Dez. 2014 17:03 #40076 von bwebdesign
bwebdesign antwortete auf Benutzer soll nur Passwort ändern können
Hallo Roger

Vielen Dank für deine Antwort.
Es stimmt, dass die Emailadresse aktuell zweimal in der Datenbank besteht. Weil der Entwickler dies bisher nicht eingebaut hat, dass Kandanda die Emailadresse von Joomla nimmt. Kann ich einerseits verstehen, andernseits auch nicht.
Wenn ich mit dieser Erweiterung nur die Mitglieder eines Vereins, dessen Buchhaltung verwalten und diverse Briefe erzeugen möchte , dann bestehen auch keine weiteren Joomla Benutzer und es muss daher ein eigenes Emailfeld für jedes Mitglied geben.

Wenn ich aber ein Vereinsmitglied mit einem Joomla-User verknüpfen möchte, dann wäre es sicherlich viel besser, die Emailadresse vom Joomlaprofil zu nehmen. Darum hat ein anderer Kandanda Nutzer ein Plugin geschrieben, welches die geänderte Emailadresse von Kandanda automatisch in dem verknüpften Joomla-User überschreibt. Sprich einen Einbahnweg gibt es zumindest schon mal.

Wie Du auch gesagt hast, soll der Benutzer seine Daten nur an einem Ort ändern können, dies kann er theoretisch auch (ausser Passwort), wenn er seine Daten über sein Kandanda Profil ändert, was er auf meiner Seite auch kann.

Nun muss er nur das Passwort über einen anderen Link ändern.

Sprich ein Vereinsmitglied hat drei Menülinks zur Verfügung:
1. Eine Liste aller Vereinsmitglieder inkl. der gesamten Adresse usw.
2. Sein eigenes Profil zum bearbeiten
3. Eine Seite um sein Passwort zu ändern

Ich finde dies ist für ein Vereinsmitglied nicht zu viel verlangt.

Sicherlich werde ich den Entwickler erneut darauf ansprechen, damit er dies in Zukünftigen Versionen einbaut. Die Komponente sonst finde ich bisher sehr gut für unseren Verein.

Was mir bisher eben noch nicht gelungen ist, ist diese XML Datei via override zu benutzen, vielleicht hätte da nochmals jemand einen Tipp.

Ansonsten geht's hald vorübergehend nur via Core Anpassung in dieser einen Datei. Ich werde auf jeden fall weitersuchen. ;)

Gruss Thomas

Erfolg hat, wer andere Erfolgreich macht.

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Mehr
02 Jan. 2015 12:04 #40081 von Tribal6
Statt einem Override der ganzen View ginge ja natürlich auch das 'ausblenden' der Elemente per CSS. Beispielsweise mit
Code:
#jform_email1-lbl,#jform_email1,#jform_email2-lbl,#jform_email2 { display: none; }

lässt du die beiden E-Mail Felder samt Label im Registrierungsformular verschwinden.

Praktikabel ist das aber allerdings logischerweise nur, wenn für die Registrierung neuer Mitglieder nicht das Frontend benutzt wird. Und das kann natürlich auch umgangen werden, von findigen Spassvögeln die den Quelltext der Seite ändern. Wobei das verm. eher selten vorkommen sollte :silly:

Ansonsten braucht's einen Override, um mittels PHP zwischen registrieren und bearbeiten unterscheiden zu können.

Tue das, was du kannst, mit dem was du hast, da wo du bist.

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Mehr
18 Jan. 2015 16:51 #40157 von bwebdesign
bwebdesign antwortete auf Benutzer soll nur Passwort ändern können
Hallo Roger

Ich habe das ganze nun wie folgt lösen können:

Habe in meinem Template ein Override für folgende Datei (profile->edit.php) erstellt, und dort in Zeile 44 folgenden Code zusätzlich eingeben.
Code:
<?php $this->form->setFieldAttribute('name','readonly',true); $this->form->setFieldAttribute('email1','readonly',true); $this->form->setFieldAttribute('email2','readonly',true); ?>

So werden die Felder ausgeblendet und der Zweck ist für mich erfüllt. ;D

Gruss Thomas

Erfolg hat, wer andere Erfolgreich macht.
Folgende Benutzer bedankten sich: miribar

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Mehr
04 Sep. 2016 14:08 - 04 Sep. 2016 14:18 #43432 von Cloud
Hallo nochmal - entschuldigt das Wiederaufgreifen des Themas - aber ich sitzte gerade vor der gleichen Problematik und bekomme es einfach nicht hin ??? .

Ich benutze 3.6.2 ohne Kandanda.

Die edit.php sieht bei mir folgendermaßen aus:
Code:
<?php /** * @package Joomla.Site * @subpackage com_users * * @copyright Copyright (C) 2005 - 2016 Open Source Matters, Inc. All rights reserved. * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; JHtml::_('behavior.keepalive'); JHtml::_('behavior.formvalidator'); JHtml::_('formbehavior.chosen', 'select'); // Load user_profile plugin language $lang = JFactory::getLanguage(); $lang->load('plg_user_profile', JPATH_ADMINISTRATOR); ?> <div class="profile-edit<?php echo $this->pageclass_sfx?>"> <?php if ($this->params->get('show_page_heading')) : ?> <div class="page-header"> <h1><?php echo $this->escape($this->params->get('page_heading')); ?></h1> </div> <?php endif; ?> <script type="text/javascript"> Joomla.twoFactorMethodChange = function(e) { var selectedPane = 'com_users_twofactor_' + jQuery('#jform_twofactor_method').val(); jQuery.each(jQuery('#com_users_twofactor_forms_container>div'), function(i, el) { if (el.id != selectedPane) { jQuery('#' + el.id).hide(0); } else { jQuery('#' + el.id).show(0); } }); } </script> <form id="member-profile" action="<?php echo JRoute::_('index.php?option=com_users&task=profile.save'); ?>" method="post" class="form-validate form-horizontal well" enctype="multipart/form-data"> <?php // Iterate through the form fieldsets and display each one. ?> <?php foreach ($this->form->getFieldsets() as $group => $fieldset) : ?> <?php $fields = $this->form->getFieldset($group); ?> <?php if (count($fields)) : ?> <fieldset> <?php // If the fieldset has a label set, display it as the legend. ?> <?php if (isset($fieldset->label)) : ?> <legend> <?php echo JText::_($fieldset->label); ?> </legend> <?php endif;?> <?php // Iterate through the fields in the set and display them. ?> <?php foreach ($fields as $field) : ?> <?php // If the field is hidden, just display the input. ?> <?php if ($field->hidden) : ?> <?php echo $field->input; ?> <?php else : ?> <div class="control-group"> <div class="control-label"> <?php echo $field->label; ?> <?php if (!$field->required && $field->type != 'Spacer') : ?> <span class="optional"><?php echo JText::_('COM_USERS_OPTIONAL'); ?></span> <?php endif; ?> </div> <div class="controls"> <?php if ($field->fieldname == 'password1') : ?> <?php // Disables autocomplete ?> <input type="password" style="display:none"> <?php endif; ?> <?php echo $field->input; ?> </div> </div> <?php endif;?> <?php endforeach;?> </fieldset> <?php endif;?> <?php endforeach;?> <?php if (count($this->twofactormethods) > 1) : ?> <fieldset> <legend><?php echo JText::_('COM_USERS_PROFILE_TWO_FACTOR_AUTH'); ?></legend> <div class="control-group"> <div class="control-label"> <label id="jform_twofactor_method-lbl" for="jform_twofactor_method" class="hasTooltip" title="<?php echo '<strong>' . JText::_('COM_USERS_PROFILE_TWOFACTOR_LABEL') . '</strong><br />' . JText::_('COM_USERS_PROFILE_TWOFACTOR_DESC'); ?>"> <?php echo JText::_('COM_USERS_PROFILE_TWOFACTOR_LABEL'); ?> </label> </div> <div class="controls"> <?php echo JHtml::_('select.genericlist', $this->twofactormethods, 'jform[twofactor][method]', array('onchange' => 'Joomla.twoFactorMethodChange()'), 'value', 'text', $this->otpConfig->method, 'jform_twofactor_method', false); ?> </div> </div> <div id="com_users_twofactor_forms_container"> <?php foreach($this->twofactorform as $form) : ?> <?php $style = $form['method'] == $this->otpConfig->method ? 'display: block' : 'display: none'; ?> <div id="com_users_twofactor_<?php echo $form['method']; ?>" style="<?php echo $style; ?>"> <?php echo $form['form']; ?> </div> <?php endforeach; ?> </div> </fieldset> <fieldset> <legend> <?php echo JText::_('COM_USERS_PROFILE_OTEPS'); ?> </legend> <div class="alert alert-info"> <?php echo JText::_('COM_USERS_PROFILE_OTEPS_DESC'); ?> </div> <?php if (empty($this->otpConfig->otep)) : ?> <div class="alert alert-warning"> <?php echo JText::_('COM_USERS_PROFILE_OTEPS_WAIT_DESC'); ?> </div> <?php else : ?> <?php foreach ($this->otpConfig->otep as $otep) : ?> <span class="span3"> <?php echo substr($otep, 0, 4); ?>-<?php echo substr($otep, 4, 4); ?>-<?php echo substr($otep, 8, 4); ?>-<?php echo substr($otep, 12, 4); ?> </span> <?php endforeach; ?> <div class="clearfix"></div> <?php endif; ?> </fieldset> <?php endif; ?> <div class="control-group"> <div class="controls"> <button type="submit" class="btn btn-primary validate"><span><?php echo JText::_('JSUBMIT'); ?></span></button> <a class="btn" href="<?php echo JRoute::_('index.php?option=com_users&view=profile'); ?>" title="<?php echo JText::_('JCANCEL'); ?>"><?php echo JText::_('JCANCEL'); ?></a> <input type="hidden" name="option" value="com_users" /> <input type="hidden" name="task" value="profile.save" /> </div> </div> <?php echo JHtml::_('form.token'); ?> </form> </div>

Das Einsetzen des Codes funktioniert hier nicht wie gewünscht. Ich bin leider kein Fortgeschrittener php-Kenner. Velleicht kann aber jemand helfen? Es soll NUR das Passwort änderbar sein.

Vielen Dank!
Hannes

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Mehr
05 Sep. 2016 09:50 #43435 von pascale
Hallo Cloud
Bei mir funktioniert es.
Override erstellen von /root/components/com_users/views/profile/tmpl/edit.php
Evt. gibts schon ein Override von deinem Tempatehersteller? Da musst du schauen.
Dann File bearbeiten im html Ordner von einem Template.

Ich habe bei Zeile 45 folgende Zeilen eingefügt:
<?php
$this->form->setFieldAttribute('email1','readonly',true);
?>

Dann kann man das Email nicht mehr bearbeiten.

Sonst vielleicht mit einer Extention lösen? extensions.joomla.org/category/clients-a...ties/user-management
Evt. diese: extensions.joomla.org/extensions/extensi...ent/user-staticemail
ich habe aber damit keine Erfahrung

Grüsse, Pascale

Joomla! Webdesign: www.your-webdesign.ch

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Mehr
13 März 2017 13:31 #44465 von miribar
Super, Ihr habt mir mit diesem Thread sehr geholfen!

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Moderatoren: pascaleChris Hoefligeradiheutschi.chTribal6RePaoDragonlord
Powered by Kunena Forum

Joomla! Verband Schweiz - Mitglied werden