Assine RSS

RSS Feed (xml)

22 de set de 2010

RoundCube Webmail + Postfix + Mysql - implementação da função alterar senha

Como necessidade para uma funcionalidade a qual o webmail não oferece suporte tive que recorrer ao google onde encontrei o blog de "Henrique Bueno" e um post do mesmo falando sobre a mesma necessidade e fornecendo o script em PHP que fora criado para tal. Fiz algumas alterações e implementei a funcionalidade no Roundcube Webmail, e para isso precisei alterar o seguinte arquivo (do skin default):
  • /var/www/webmail/skins/default/includes/settingstabs.html
Nesse arquivo inclui a seguinte linha: <span id="settingstabidentities" class="tablink"><A HREF="javascript:void(0)"onclick="window.open('verifica.php','Trocar Senha','width=360,height=199')"><roundcube:button type="link" label="chwpasswd" title="chwpasswd" class="tablink" />Trocar Senha</span></a>
 

Na raiz da pasta do webmail eu criei o arquivo verifica.php que é chamado no link adicionado acima no aquivo settingstabs.html o conteudo do arquivo é:
<?php
// Script para o usuario alterar a senha
// da sua conta de e-mail.
// Baseado em Postfix + MySQL + RoundCube
// Utiliza dados da session RoundCube Webmail para forçar utilização do usuario logado no sistema
//
// alterada por Luiz Fernando (magskull@hotmail.com) 20100922 09:39:14
// http://www.magskull.com
//
// desenvolvido by Henrique Bueno (henriquebueno@gmail.com) 20090401
// http://hbueno.eti.br
/////////////////////////////////////////////////////////////////
//recupera os dados da session criada ambiente RoundCube Webmail
require_once 'program/include/iniset.php';
$RCMAIL = rcmail::get_instance();
$email_usuario= $_SESSION['username'];
if ($email_usuario == '') {
echo "<SCRIPT LANGUAGE='JavaScript' TYPE='text/javascript'>alert ('Não foi possivel executar essa operação!');window.close();</SCRIPT>";
}
// conexao MySQL
$my_srv="localhost"; // servidor MySQL
$my_user="usuariomysql"; // usuario do banco
$my_pw="senhamysql"; // senha
$my_db="mail"; // nome do banco
echo "
<html>
<title>Altera senha</title>
<head>
<style type='text/css'>
a:link {text-decoration: none; color:#4A708B; }
a:visited {text-decoration: none; color: #4A708B;}
a:hover {text-decoration: underline; color: #4A708B;}
input {
font: 12px verdana, arial, helvetica, sans-serif;
border:1px solid #D3D3D3;
color: #4A708B;
}
#tabela {
font: 100% sans-serif;
background-color: #ffffff;
empty-cells: show;
border-spacing: 5px 5px;
border:#D3D3D3 1px solid;
}
</style>
</head>
<form method='post' action='verifica.php'>
<font face=arial size=2 color='#818388'>
<center>
<table id=tabela>
<tr><td></td><td>
<font face=arial size=5 color='#656c78'><b> Alterar senha </b></font>
</td></tr>
<tr>
<td align=right><font face=arial size=2 color='#818388'>E-mail: </font></td>
<td><input type='text' name='login' disabled=true value='" . $email_usuario . "' size='30'></td>
</tr><tr>
<td><font face=arial size=2 color='#818388'>Nova senha: </font></td>
<td><input type='password' name='pw1' size='15'></td>
</tr><tr>
<td><font face=arial size=2 color='#818388'>Nova senha: </font></td>
<td><input type='password' name='pw2' size='15'><font face=arial size=2 color='#818388'> (confirmacao)</font></td>
</tr><tr>
<td></td><td align=right><input type='submit' value='alterar senha' name=botao></td>
</tr><tr><td></td>
<td align=center><font face=arial size=1 color='#818388''> <A HREF='javascript:void(0)' onclick='window.close()'>Fechar janela</a></font></td></tr>
</form>
</table></center>
</html>";
if ($_POST[botao]){
mysql_connect($my_srv,$my_user,$my_pw);
mysql_select_db($my_db);
if (! trim($_POST[pw1])){
echo "<SCRIPT LANGUAGE='JavaScript' TYPE='text/javascript'>alert ('Preencha com uma senha!')</SCRIPT>";
exit;
}
if ($_POST[pw1] != $_POST[pw2]){
echo "<SCRIPT LANGUAGE='JavaScript' TYPE='text/javascript'>alert ('As novas senhas devem ser iguais!')</SCRIPT>";
exit;
}
$SQL = "update users set password = encrypt('$_POST[pw1]') WHERE email = '$email_usuario'";
$result_id = @mysql_query($SQL) or die("Erro no banco de dados!");
echo "<SCRIPT LANGUAGE='JavaScript' TYPE='text/javascript'>alert ('Senha alterada com sucesso!');window.close();</SCRIPT>";
}
?>

Download dos arquivos: alterarsenha_roundcube.zip - 2KB
Fonte: Henrique Bueno

4 comentários:

Um papai que chora... disse...

Prezado Mags,

coloquei seu script adaptado para rodar no meu round, mas acontece que da erro no banco de dados MAS O BANCO USER E SENHA ESTÃO CORRETOS" o que fazer colega??

Agradeço se puder responder, pois vc mesmo sabe como é dificil fornecer email ja com a senha gerada por nós, rsss

Abraços

Mamona

alipio@isa7.com.br

Magskull disse...

Caro mamona, verifique se a estrutura de suas pastas são compativeis com as utilizadas com as minhas.

Segue estrutura:
Campo - Tipo - Collation - Atributos - Nulo - Padrão
email - varchar(80) - latin1_swedish_ci - - Não - -
password - varchar(20) - latin1_swedish_ci - - Não - -
quota - bigint(20) - - - Sim - 104857600

Antenor Valentim disse...

Olá magskull,

Eu coloquei o seu scritp no roundcube e no firefox e chrome funcionou normalmente, por no Internet Explorer não funcionou da erro de javascript....
Você pode me ajudar?

Magskull disse...

Antenor, não existe nenhuma restrição quanto a navegador, envie o texto do erro se possivel, isso ajudaria a entender o problema.