jmueller17 / Aixada

Aixada helps self-managed consumption cooperatives to organize their flow of products, money, and information.
Other
33 stars 37 forks source link

Recuperación de contraseña en login #272

Closed Monicafgz closed 4 years ago

Monicafgz commented 4 years ago

Hola! Somos una cooperativa de consumo local arrancando con la implementación del programa. Tenemos la duda de cómo recuperar la contraseña para el login de un usuario, en la interfaz no vemos esa opción... Muchas gracias!

jmueller17 commented 4 years ago

Hola, no hay un mechanismo de recuperación. El admin puede crear usuarios y cambiar la contraseña.

jorix commented 4 years ago

@Monicafgz Para el administrador es cómodo usa el botón reestablecer contraseña (en la ficha del miembro), ya que automáticamente se genera una nueva contraseña y se envía por email al usuario.

Monicafgz commented 4 years ago

Gracias por vuestra ayuda. No encontramos ese botón de reestablecer contraseña en la ficha del usuario...se ha de configurar alguna variable en el archivo config.php para que aparezca?

Gracias!

jorix commented 4 years ago

No encontramos ese botón de reestablecer contraseña

@Monicafgz Debes sellecionar el rol de "Comision de informatica"
e ir a la opción Gestionar->UF&Miembros image

Entonces te aparece a la izquierda del botón de guardar en la ficha de cualquier miembro image

Monicafgz commented 4 years ago

Xavier, ya nos ha funcionado! Muchas gracias por la ayuda y rápida respuesta,

Mónica

Monicafgz commented 4 years ago

Hola! Resulta que al restablecer contraseña, el miembro de la cooperativa no recibe el mail...puede ser un problema relacionado con el 'issue #258'? Gracias!

jorix commented 4 years ago

...relacionado con el 'issue #258'?

@Monicafgz El problema en #258 era que el SMTP con el host pangea no funcionaba, y se pasó a comentar las líneas de del SMTP en el config.php. pero siempre teniendo configurado:
public $internet_connection = true;

Os funciona el envío de correos?
(pedidos a proveedores o incidencias a UF)

Si los envíos os funcionan, el restablecimiento debería también funcionar.
Mirad:

Monicafgz commented 4 years ago

Hola, Hemos hecho las comprobaciones que comentas e incluso hemos hecho la prueba de restablecer contraseña con otro usuario y sigue sin recibirse mail. Por otro lado el mail de pedidos a proveedores sí que es recibido por el usuario responsable de ese proveedor.

Por lo que hemos estado investigando...el tema tendría que ver con estas líneas de código del fichero config.php?

/**

Si este fuera el caso el restablecimiento de pwd lo recibiría el admin y no el usuario?

Gracias! Mónica

jorix commented 4 years ago

Hola @Monicafgz

Si este fuera el caso el restablecimiento de pwd lo recibiría el admin y no el usuario?

No, el $admin_email solo se usa cómo Reply-To por defecto; en todo caso tenéis que poner una cuenta válida para las mirar las respuestas, cuando las haya, a los mensajes enviados desde vuestro Aixada.

Pues no sé ... podéis hacer una prueba forzando public $ email_SMTP_host = 'debug' en config.php, con ello en lugar de enviar los mensajes Aixada guarda un archivo en local_config/debug_mail/mail_Y-m-d_H-i-s.html con las cabeceras y el contenido del mensaje. Así, a veces, se puede determinar qué hay de problemático en el encabezado del mensaje que hace que este no llegue al destinatario. La prueba que os sugiero es poner el SMTP a debug a config.php, restablecer una contraseña y volver a dejar como antes el config.php, e ir a mirar si se ha creado un archivo mail_*.html... y explicar lo ocurrido...

Monicafgz commented 4 years ago

@jorix gracias por tu respuesta, al forzar public $ email_SMTP_host = 'debug' en config.php y restablecer contraseña en la app nos aparece una ventana emergente con el siguiente contenido:

Warning: file_put_contents(/srv/www/lavinagreta.org/www/public/comandes//local_config/debug_mail/mail_2020-07-06_16-57-24.html): failed to open stream: No such file or directory in /srv/www/lavinagreta.org/www/public/comandes/php/utilities/general.php on line 517 La nova contrasenya és: ***** Ha fallat l'enviament del email!

No obstante si voy a la carpeta local_config/debug_mail no aparece ningún fichero html

**en config.php tenemos configurado para usar SMTP a través de la librería swiftmailer con las líneas correspondientes comentadas. No sé si para usar swiftmailer comentando las líneas indicadas es suficiente.es necesario configurar algo más...

jorix commented 4 years ago

on line 517

Previamente, si no existe la carpeta /debug_mail/, se debe crear, (o ese me parece al mirar el código)
(que pase por aquí indica que sí que está intentando mandar un email)

No obstante si voy a la carpeta local_config/debug_mail no aparece ningún fichero html

¿Ya existe la carpeta /debug_mail/?
(en el código veo que no la crea si no existe, seria bueno que lo hiciera pero se omitió)

Monicafgz commented 4 years ago

@jorix sí la carpeta /debug_mail/ existe

jorix commented 4 years ago

@Monicafgz En mi no me fallaba pero ahora veo que hay algo incorrecto en la línea 507 de php\utilities\generel.php
Puedes probar de quitar una la / que sobra delante de local_config y dejarlo como:

__ROOT__ . 'local_config/debug_mail/mail_' . date("Y-m-d_H-i-s") . '.html',

Monicafgz commented 4 years ago

@jorix he modificado la linea 507 pero sigue sin crear el archivo html en carpeta debug_mail. El mensaje que envia es el siguiente: Warning: file_put_contents(/srv/www/lavinagreta.org/www/public/comandes/local_config/debug_mail/mail_2020-07-10_15-05-40.html): failed to open stream: Permission denied in /srv/www/lavinagreta.org/www/public/comandes/php/utilities/general.php on line 517 La nova contrasenya és: *** Ha fallat l'enviament del email!

jorix commented 4 years ago

... Permission denied in ...

Parece que el usuario que ejecuta el php no tiene derechos a la carpeta local_config/debug_mail, he revisado y esta capeta ya viene de master (en su momento no me acordé)
Es un problema de autorizaciones que debéis solucionar, os pueden fallar otras cosas (que ahora yo recuerde): Gestionar->Admin->Copia seguridad BD, Botón "Importar productos" de Gestionar->Productos, Informes->Evolución de ..., install.php (al actualizar) ...


Pero podemos probar de ver lo que nos interesa poniendo esto: (en vez de las líneas 506 a 519)

    echo "
        To: {$to}<br>
        From: {$from}<br>
        Reply-To: {$reply_to}<br>
        Options:<pre style='margin: 0 0 0 3em'>" .
            var_export($options, true) . "</pre>
        <h1 style=\"background-color:#bbb;padding:3px\">{$subject}</h1>
        {$messageHTML}
        </body></html>";
    return true;

y al restablecer una contraseña nos aparecerá algo así: image

jorix commented 4 years ago

ATENCIÓN: He editado el comentario anterior, antes decía ...de las líneas 507 a..., lo correcto es 506 y he añadido un return true;

Monicafgz commented 4 years ago

@jorix he realizado los cambios que comentas y el mensaje recibido al restablecer contraseña es el siguiente: image

Una vez más gracias por tu ayuda!

jorix commented 4 years ago

Ah! Pero teneis puesto admin@admin.com como correo en $admin_email.
No, esto no es correcto. Vuestros correos pueden interpretarse como correo SPAM, el dominio de esta dirección de correo debe ser el del SMTP declarado, ejemplo:

  public $admin_email = "someone@mycoope.org";
  public $email_SMTP_host = 'mail.mycoope.org';

Revisad a ver si los correos de reestablecer contraseña están en SPAM


Para evitar problemas de ser clasificados como SPAM también es interesante activar $email_safe_replyTo:
(fuerza que siempre se use $admin_email cómo reply_to, esto no afecta al restablecimiento dado que ya usa el $admin_email)

  /**
   * Set true to prevent false locks as SPAM when sending mails.
   * 
   * NOTE: Aixada puts in 'reply-to' the 'to' or 'cc' of mails, but some hosting
   *       filters interpret this as a possible malicious attempt to send SPAM.
   * Comment by a hosting technical support:
   *      "Usually spammers use this technique to send spam. You should
   *       avoid using freemail service provider addresses
   *       in header 'from' or 'reply-to' address."
   */
  public $email_safe_replyTo = true;
Monicafgz commented 4 years ago

... Permission denied in ...

Parece que el usuario que ejecuta el php no tiene derechos a la carpeta local_config/debug_mail, he revisado y esta capeta ya viene de master (en su momento no me acordé) Es un problema de autorizaciones que debéis solucionar, os pueden fallar otras cosas (que ahora yo recuerde): Gestionar->Admin->Copia seguridad BD, Botón "Importar productos" de Gestionar->Productos, Informes->Evolución de ..., install.php (al actualizar) ...

Para solucionar este tema estamos hablando con nuestro host, y por seguridad solo nos dan permisos en aquellas carpetas que indiquemos, por lo que nos sería útil saber cuales son las carpetas donde el programa necesitará autorización de escritura...es posible? Gracias!

jorix commented 4 years ago

...sería útil saber cuales son las carpetas...

Aixada escribe en:

Monicafgz commented 4 years ago

@jorix estamos hablando con nuestro servicio de hosting para configurar correctamente las variables y en breve te informamos de cómo van las pruebas. Hasta ahora hemos comprobado que los correos no se reciben tampoco como SPAM, Muchas gracias por la ayuda!

jorix commented 4 years ago

... no se reciben tampoco como SPAM

Una vez nuestro hosting decidió de incrementar filtro anti-SPAM, y dejó de enviar los emails, ni salían. Lo mejor es configurar en Aixada un SMTP de forma bien pulcra (con el public $email_safe_replyTo = true;)

Monicafgz commented 4 years ago

@jorix hemos hablado con nuestro servicio de hosting para configurar correctamente las variables y ya se envian mails de restablecimiento de contraseña, GRacias!