ispCP - Board - Support
[Resuelto] Cambiar contraseña de cuentas de correo - Printable Version

+- ispCP - Board - Support (http://www.isp-control.net/forum)
+-- Forum: ispCP Omega International Area (/forum-22.html)
+--- Forum: Spanish Corner (/forum-29.html)
+--- Thread: [Resuelto] Cambiar contraseña de cuentas de correo (/thread-10704.html)



[Resuelto] Cambiar contraseña de cuentas de correo - parmando - 05-17-2010 08:59 AM

Hola, mi problema es que necesito que cada usuario pueda cambiar las contraseñas de las cuentas de correo desde su Webmail, que en este caso es squirelmail por supuesto. He visto algunos otros post aqui, y los he probado pero sin exito.

Hay algo que venga integrado o alguna solucion que me puedan recomendar?

Creo que esto deberia ser parte de ispCP desde un principio si no molesta la opinion.

Desde ya muchas gracias.


RE: Cambiar contraseña de cuentas de correo - kurgans - 05-17-2010 04:16 PM

Los howto de squire que saco shiizpa funcionan perfectamente ya que yo los he probado.
Y el que hay de roundcube tambien funciona sin problemas,

Algo no no has echo bien, revisa bien los pasos.

De que lo lleve ispcp incorporado yo discrepo algo y es mi opinion, ya que el panel ofrece acceso de cliente el que necesite cambiar su pass de correo que se lo comunique a la persona responsable de su empresa que tenga los datos de acceso al panel.


RE: Cambiar contraseña de cuentas de correo - parmando - 05-20-2010 01:09 AM

Hola, perdon por la demora, estaba con u implementacion y como siempre en esas epocas, sin tiempo.

Yo me base de entrada en esto:
http://isp-control.net/documentation/frequently_asked_questions:how_can_i_change_my_e-mail_password_via_webmail

y me tiraba un error como que no encontraba alguna clase de ADODB (requiere bajarse un paquete de sourcefoge de adodb). Sinceramente me fue mas facil reemplazar las funciones por las tipicas de PHP (mysql_connect, etc.) que buscarle la solucion. Es un muy buen trabajo el de shiizpa y me sirvió para que con solo modificaciones menores y el cambio de funciones de PHP trabaje muy bien.

Asi me quedo el codigo sin dependencias de adodb:

adodb.inc.php:
---- CORTAR AQUI ----
<?php
define('host','localhost');
define('user','root'); //enter user access to table ISPC
define('pass','aeiouaeiou'); //enter your password
define('database','ispcp');
$conn = mysql_connect(host, user, pass, database);
mysql_select_db(database, $conn);
?>
--------------------------------

change_password.php:
---- CORTAR AQUI ----
<?php
require_once '../../include/ispcp-lib.php';
require '../../include/adodb.inc.php'
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Cambiar contrase&ntilde;a del e-mail</title>
<meta name="robots" content="noindex,nofollow">
<link rel="stylesheet" type="text/css" href="/webmail/themes/css/omega.css">
<style type="text/css">
<!--
body, td, input, select, textarea {
font-family:Tahoma, Geneva, sans-serif;
font-size:9px;
}
input, textarea, select {
border:#7f9db9 1px solid;
padding:0px;
}
-->
</style>
</head>
<body bgcolor="#FFFFFF" text="#000000" link="#000000" vlink="#000000" alink="#000000">
<form action="" method="post" name="login_form">
<div id="container">
<h1>Cambiar contrase&ntilde;a del e-mail</h1>
<fieldset class="login">
<p class="login">
<table cellpadding="0" cellspacing="0" style="color:#CCC">
<tr>
<td align="left">&nbsp;<strong>E-mail:</strong></td>
<td><input type="text" name="user" style="width:130px;"/></td>
</tr>
<tr>
<td align="left">&nbsp;<strong>Password:</strong></td>
<td><input type="password" name="contrasena" style="width:130px;"/></td>
</tr>
<tr>
<td align="left">&nbsp;<strong>Nueva:</strong></td>
<td><input name="ncontrasena" type="password" style="width:130px;" maxlength="15"/></td>
</tr>
<tr>
<td align="left">&nbsp;<strong>Repetir nueva:</strong></td>
<td><input type="password" name="rcontrasena" style="width:130px;" maxlength="15"/></td>
</tr>
<tr>
<td colspan="2" align="left"><a href="/webmail">Ir al Webmail</a></td>
</tr>
<tr>
<td align="left"></td>
<td><input type="submit" name="cambiar" value="Change" /></td>
</tr>
</table>
</p>
</fieldset>
</div>
</form>
<?php
if(isset($_POST['cambiar'])=='Change'&&!empty($_POST['user'])&&!empty($_POST['contrasena'])&&!empty($_POST['ncontrasena'])&&!empty($_POST['rcontrasena']))
{
if( isset($_POST['user']) )
$Usuario= mysql_real_escape_string ($_POST['user']);

if( isset($_POST['contrasena']) )
$Contrasena=encrypt_db_password($_POST['contrasena']);
// echo $Contrasena;

$sql = "SELECT mail_id FROM mail_users WHERE mail_addr='$Usuario' and mail_pass='$Contrasena'";
$ret = mysql_query( $sql, $conn );
if( $ret === FALSE)
echo mysql_error();

$UsuarioExiste = mysql_num_rows( $ret );

if( $UsuarioExiste == 1 )
{
if($_POST['ncontrasena']!=$_POST['rcontrasena'])
echo '<p align="center" style="color:#F00">Las nuevas contrase&ntilde;as no coinciden.</p>';
elseif($_POST['ncontrasena']==$_POST['contrasena'])
echo '<p align="center" style="color:#F00">La nueva password es igual a la actual.</p>';
elseif(empty($_POST['ncontrasena']))
echo '<p align="center" style="color:#F00">Su nueva password no puede esta vacia.</p>';
elseif(strlen($_POST['ncontrasena']) < 6)
echo '<p align="center" style="color:#F00">Su nueva password es muy corta. Debe tener 6 caracteres como minimo.</p>';
elseif(strlen($_POST['ncontrasena']) > 15)
echo '<p align="center" style="color:#F00">Su nueva password es muy larga. No debe ser mas larga que 15 caracteres.</p>';
else
{
$row = mysql_fetch_assoc($ret);
$id = $row['mail_id'];
// echo "ID: $id";
$pass = encrypt_db_password($_POST['ncontrasena']);
// echo "Nueva pass: $pass";
$status = 'change';
$sql = "UPDATE mail_users SET mail_pass='$pass', status='$status' WHERE mail_id=$id ";
mysql_query( $sql, $conn );
//echo "Se produjo el error: " . mysql_error();

echo '<p align="center" style="color:#060">Contrase&ntilde;a cambiada correctamente.</p>';
send_request();
}
}
else echo '<p align="center" style="color:#F00">Atencion! Los datos ingresados no son correctos.</p>';
}
elseif(isset($_POST['cambiar'])=='Change')
{
echo '<p align="center" style="color:#F00">Complete los datos que faltan.</p>';
}
?>
</body>
</html>

-----------------------


En cuanto a incorporar el cambio de contraseña a ispcp, yo lo veo no desde el punto de vista de un Administrador de Sistemas sino de un administrador de ISP que le quiere dar un poco de flexibilidad a los usuarios, es decir, cada uno deberia poder cambiar su contrase;a sin llamar al ISP para solicitarle esto (y pasarle la password).