RoundCube 0.1 Stable Jelszómódosító panel készítése
Az első RoundCube 0.1 Stable Release megjelenése alkalmából aktualizáltam a RoundCube 0.1 RC2 Jelszómódosítás c. tutorialomat:
Ebben a segédletben némi forráskód módosítással képessé tesszük a RoundCube 0.1 Stable webmail kliensünket, hogy rajta keresztül ügyfeleink/felhasználóink megváltoztathassák levelezéshez használt jelszavukat. A segédletben hMailServer az SMTP/IMAP server, de gyakorlatilag minden olyan mail szerverrel működhet, amely mysql adatbázisban tárolja a felhasználók jelszavát. Különbség csak az 3. pontban az SQL UPDATE résznél lesz..
1.Telepítsük fel a hMailServer-t és a Roundcube-ot és hozzuk őket működőképes állapotba.
2. A feltelepített RoundCube mappájában hajtsuk végre a következő módosításokat kedvenc text editorunk segítségével az alábbi fájlokon:
index.php 369. sor után beilleszteni:
if (($_action=='passwd') or ($_action=='save-passwd'))
include('program/steps/settings/passwd.inc');
program/steps/settings/func.inc 255. sor-tól módosítsuk így:
$OUTPUT->add_handlers(array( 'userprefs' => 'rcmail_user_prefs_form', 'identitieslist' => 'rcmail_identities_list', 'itentitieslist' => 'rcmail_identities_list', // keep this for backward compatibility 'userpasswd'=>'rcmail_passwd_form' ));
program/steps/settings/passwd.inc: letöltés
skins/default/templates/passwd.html: letöltés
skins/default/includes/settingstabs.html tartalmát cseréljük erre: letöltés
program/js/app.js módosításai:
285. sor: módosítás:
case 'settings':
this.enable_command('preferences', 'identities', 'save', 'folders', 'passwd', true);
297. if (this.gui_objects.identitieslist) sor ELÉ:
if (this.env.action=='passwd' || this.env.action=='save-passwd')
{
var input_curpasswd = rcube_find_object('_curpasswd');
var input_newpasswd = rcube_find_object('_newpasswd');
var input_confpasswd = rcube_find_object('_confpasswd');
if (input_curpasswd && input_curpasswd.value=='')
input_curpasswd.focus();
else if (input_confpasswd)
input_confpasswd.focus();
this.enable_command('save-passwd', true);
}
984. sor környéke (az előző módosításoktól függ): case ‘delete-folder’: ……… break; után:
case 'passwd':
this.goto_url('passwd');
break;
case 'save-passwd':
var input_curpasswd = rcube_find_object('_curpasswd');
var input_newpasswd = rcube_find_object('_newpasswd');
var input_confpasswd = rcube_find_object('_confpasswd');
if ((input_newpasswd && input_newpasswd.value=='') && (input_confpasswd && input_confpasswd.value=='') || (input_curpasswd && input_curpasswd.value==''))
{
alert(this.get_label('nopassword'));
input_curpasswd.value='';
input_newpasswd.value='';
input_confpasswd.value='';
input_curpasswd.focus();
}
else if ((input_newpasswd && input_confpasswd) && ( input_newpasswd.value != input_confpasswd.value))
{
alert(this.get_label('passwordinconsistency'));
input_newpasswd.value='';
input_confpasswd.value='';
input_newpasswd.focus();
}
else
this.gui_objects.editform.submit();
break;
program/localization/hu/labels.inc (feltéve ha a config fájlban a nyelvet már átállítottuk magyarra..)
A default nyelvet a main.inc.php-ben lehet beállítani:
$rcmail_config['locale_string'] = 'hu';
Érdemes a többi usereink által igényelt nyelvekhez is elkészíteni a fordításokat és a program/localization/[nyelv]/ mappákban módosítgatni őket.
$labels['changepasswd'] = 'Jelszó változtatás'; $labels['curpasswd'] = 'Jelszó'; $labels['newpasswd'] = 'Új jelszó'; $labels['confpasswd'] = 'Új jelszó megerősítése';
program/localization/hu/messages.inc (ugyan az a szituáció mint a labels.inc esetében)
$messages['nopassword'] = "Írj be egy új jelszót!"; $messages['passwordinconsistency'] = "Az új jelszó és megerősítése nem egyezik.";
3. Miután felkészítettük a felületet, gondoskodjunk az adatbázis beli módosításokról.
Fontos, hogy a roundcube-hoz használt mysql user-nek legyen írási joga is a levelezőszerver adatbázisához.
A létrehozott program/steps/settings/passwd.inc fájlban módosítsuk az SQL UPDATE-et a levelezőszerver adatbázisszerkezetének függényében. A létrehozott fájlban a külső adatbázisból működő hMailServeré van.
$sql_query = " UPDATE hmailserver.hm_accounts SET accountpassword= md5(\"$newpasswd\") WHERE accountaddress = \"" . $_SESSION['username'] . "\" AND accountpassword = md5(\"$curpasswd\")" ;
