Problemas en la Implementación de la Recuperación de Contraseña

Issue #27 new
Former user created an issue

Buenas Tardes Estoy tratando de implementar la recuperación de la contraseña es decir que me envía la misma al correo registrado en el campo email de la tabla cruge_user pero el mismo me da el error siguiente:

CException: CrugeMailer and its behaviors do not have a method or closure named "sendPasswordTo".

A que se deberá esto Muchas gracias por tu atención Feliz Día

Comments (8)

  1. Elio Peña

    La Versión de Yii es la 1.1.12. Lo otro es como implemento lo de enviar el correo de Recuperación de contraseña

  2. Cristian Salazar repo owner

    Amigo Elio, por favor sigueme con cuidado estos pasos que te contare aqui.

    Causa de Problema:

    Primero necesito que sepas que este issue no representa un error de cruge como tal sino un problema de instalación local causado porque seguramente estas usando una versión paralela de CrugeMailer en vez de la versión interna que Cruge trae consigo.

    Aqui te cuento como resolverlo:

    1. instala una versión de cruge oficial. sigue sus pasos de instalación, para efectos de que veas el comportamiento original usa la versión de crugemailer que el sistema cruge provee por defecto. (esta ubicada en tuapp/protected/modules/cruge/extensions/crugemailer)

    2. verifica bien que: en config/main en la sección de components se ponga la clase correcta para el componente crugemailer: la que te indica el wiki, que es la interna de cruge.

    3. si necesitas especializar el envio de correos, por ejemplo, para usar otro metodo de email distinto al básico mail(), entonces, deberás hacer una edición de la clase CrugeMailerBase ubicada en protected/modules/cruge/extensions/crugemailerbase.php

    el sitio en donde deberás especializar será: https://bitbucket.org/christiansalazarh/cruge/src/78e252395f3a422ebc0f0beca2225df01def9ba3/extensions/crugemailer/CrugeMailerBase.php?at=master#cl-66

    Lo que te esta sucediendo es que estas utilizando seguramente una versión paralela de crugemailer y no la interna de cruge, por eso te pido el config que tienes puesto, para saber cual es la ruta de la clase de crugemailer que estas usando. Si usas la interna de cruge no tendrás problemas. Si tu problema está en que en tu versión paralela de crugemailer tienes otro mecanismo de envío de correos entonces te sugiero que esa especialización la hagas como te cuento mas atras en este mismo comentario.

  3. Elio Peña

    <?php

    // uncomment the following to define a path alias // Yii::setPathOfAlias('local','path/to/local-folder');

    // This is the main Web application configuration. Any writable // CWebApplication properties can be configured here. return array( 'basePath'=>dirname(FILE).DIRECTORY_SEPARATOR.'..', 'name'=>'Escuela de Nutricion', 'language'=>'es',?

    // preloading 'log' component
    'preload'=>array('log'),
    
    // autoloading model and component classes
    'import'=>array(
        'application.models.*',
        'application.components.*',
        'application.modules.cruge.components.*',
        'application.modules.cruge.extensions.crugemailer.*',
    ),
    
    'modules'=>array(
        // uncomment the following to enable the Gii tool
        /*
        'gii'=>array(
            'class'=>'system.gii.GiiModule',
            'password'=>'Enter Your Password Here',
            // If removed, Gii defaults to localhost only. Edit carefully to taste.
            'ipFilters'=>array('127.0.0.1','::1'),
        ),
        */
        'cruge'=>array(
                'tableprefix'=>'cruge_',
    
                // para que utilice a protected.modules.cruge.models.auth.CrugeAuthDefault.php
                //
                // en vez de 'default' pon 'authdemo' para que utilice el demo de autenticacion alterna
                // para saber mas lee documentacion de la clase modules/cruge/models/auth/AlternateAuthDemo.php
                //
                'availableAuthMethods'=>array('default'),
    
                'availableAuthModes'=>array('username','email'),
                'baseUrl'=>'http://coco.com/',
    
                 // NO OLVIDES PONER EN FALSE TRAS INSTALAR
                 'debug'=>true,
                 'rbacSetupEnabled'=>true,
                 'allowUserAlways'=>true,
    
                // MIENTRAS INSTALAS..PONLO EN: false
                // lee mas abajo respecto a 'Encriptando las claves'
                //
                'useEncryptedPassword' => false,
    
                // Algoritmo de la función hash que deseas usar
                // Los valores admitidos están en: http://www.php.net/manual/en/function.hash-algos.php
                'hash' => 'md5',
    
                // a donde enviar al usuario tras iniciar sesion, cerrar sesion o al expirar la sesion.
                //
                // esto va a forzar a Yii::app()->user->returnUrl cambiando el comportamiento estandar de Yii
                // en los casos en que se usa CAccessControl como controlador
                //
                // ejemplo:
                //      'afterLoginUrl'=>array('/site/welcome'),  ( !!! no olvidar el slash inicial / )
                //      'afterLogoutUrl'=>array('/site/page','view'=>'about'),
                //
                'afterLoginUrl'=>null,
                'afterLogoutUrl'=>null,
                'afterSessionExpiredUrl'=>null,
    
                // manejo del layout con cruge.
                //
                'loginLayout'=>'//layouts/column2',
                'registrationLayout'=>'//layouts/column2',
                'activateAccountLayout'=>'//layouts/column2',
                'editProfileLayout'=>'//layouts/column2',
                // en la siguiente puedes especificar el valor "ui" o "column2" para que use el layout
                // de fabrica, es basico pero funcional.  si pones otro valor considera que cruge
                // requerirá de un portlet para desplegar un menu con las opciones de administrador.
                //
                'generalUserManagementLayout'=>'ui',
            ),
    
    
    ),
    
    // application components
    'components'=>array(
        'user'=>array(
                'allowAutoLogin'=>true,
                'class' => 'application.modules.cruge.components.CrugeWebUser',
                'loginUrl' => array('/cruge/ui/login'),
            ),
            'authManager' => array(
                'class' => 'application.modules.cruge.components.CrugeAuthManager',
            ),
            'crugemailer'=>array(
                'class' => 'application.modules.cruge.components.CrugeMailer',
                'mailfrom' => 'eliope@gmail.com',
                'subjectprefix' => 'Prueba',
                'debug' => true,
            ),
            'format' => array(
                'datetimeFormat'=>"d M, Y h:m:s a",
            ),
        // uncomment the following to enable URLs in path-format
        /*
        'urlManager'=>array(
            'urlFormat'=>'path',
            'rules'=>array(
                '<controller:\w+>/<id:\d+>'=>'<controller>/view',
                '<controller:\w+>/<action:\w+>/<id:\d+>'=>'<controller>/<action>',
                '<controller:\w+>/<action:\w+>'=>'<controller>/<action>',
            ),
        ),
        */
        'db'=>array(
            'connectionString' => 'sqlite:'.dirname(__FILE__).'/../data/testdrive.db',
        ),
        // uncomment the following to use a MySQL database
    
        'db'=>array(
            'connectionString' => 'mysql:host=localhost;dbname=end_ucv',
            'emulatePrepare' => true,
            'username' => 'root',
            'password' => '',
            'charset' => 'utf8',
        ),
    
        'errorHandler'=>array(
            // use 'site/error' action to display errors
            'errorAction'=>'site/error',
        ),
        'log'=>array(
            'class'=>'CLogRouter',
            'routes'=>array(
                array(
                    'class'=>'CFileLogRoute',
                    'levels'=>'error, warning',
                ),
                // uncomment the following to show log messages on web pages
                /*
                array(
                    'class'=>'CWebLogRoute',
                ),
                */
            ),
        ),
    ),
    
    // application-level parameters that can be accessed
    // using Yii::app()->params['paramName']
    'params'=>array(
        // this is used in contact page
        'adminEmail'=>'webmaster@example.com',
    ),
    

    );

    Este es el main de la ruta app/protected/config/main.php

  4. Cristian Salazar repo owner

    hola Elio, bueno de ese config me interesaba conocer: 'class' => 'application.modules.cruge.components.CrugeMailer', lo que me dice que esta siendo usada la version interna de crugemailer, pero, ha sido modificada o ha recibido cambios manuales ? y el problema como va. esto no debería fallar, este bug no me aparece en ninguna instalación ni siquiera de las primeras. Has probado instalar de cero una aplicacion nueva para verificar ?

  5. Elio Peña

    Ya he probado instalando de nuevo en otra aplicación limpia siguiendo los paso indicados. Me gestiona los usuarios pero cuando quiero recuperar la contraseña no me lo permite. El problema aun permanece

  6. Cristian Salazar repo owner

    disculpas por el tiempo transcurrido, no recibi la alerta de bitbucket.

    en esa app nueva, podrias refinarme el problema para saber exactamente que es lo que no sucede como debe ?

    estas usando una version de cruge oficial, o un fork ?

  7. Log in to comment