Problema con restful_authentication

Hola colegas de la lista! les comento mi problema

estoy haciendo un sistemita que usa autentificacion y he instalado el
famoso
plugin restful_authentication y todo me funciona perfectamente… creo
mis
usuarios desde el controller user, inicio sesion, cierro sesion. En fin,
todo bien…
El problema es que el sistema que estoy haciendo tiene una parte de
suscripcion de usuarios donde el usuario llena un formulario donde le
pido:

  • nombre
  • apellido
  • nombre de la compañia
  • tipo de persona (persona natural o juridica)
  • Dirección de habitación
  • email o login
  • y para no extender mas el asunto le pido datos del pago de la
    suscripcion

entonces yo guardo toda esa información en una tabla llamada
suscripciones y
despues en el controller de suscripcione tomo el email y genero un
password
de 6 digitos ==> psswd = 100000 + rand(899999) y le envio un correo al
usuario donde le indico su login y su password
entonces yo incluyo el usurio directamente de la siguiente manera:

@user = User.new(:login => params[:suscripcione][:login],
:grupousuario_id
=>“6”, :crypted_password => psswd,:status => “A”, :denusu =>
params[:suscripcione][:nombre], :created_at => Time.now)
@user.save

El problema es que cuando voy a la base de datos no me guarda la clave
encriptada o no me genera la clave encriptada
revisé en el modelo de user.rb y existe un metodo encrypt(password,salt)
lo
use y me guarda el usuario con la clave encriptada pero cuando trato de
iniciar sesion con ese usuario me da error (nombre de usuario y
contraseña
no coinciden).

Entonces logicamente el password que se genera aleatoriamente cuando lo
encrypto no corresponde… no se que hacer!

Alguien me puede echar una mano?

muchas gracias

En principio, cuando creas el usuario no hace falta cifrar la
contraseña antes de guardarla, ya que en user.rb hay un

before_save :encrypt_password

que llama al método encrypt_password antes de hacer el save.

En la base de datos se guarda siempre la contraseña cifrada.

Lo que se hace durante el login es cifrar la contraseña que escribe el
usuario con la contraseña cifrada que está en la base de datos:

def authenticated?(password)
crypted_password == encrypt(password)
end

Si sigue sin funcionarte tal vez puedas poner alguna traza en el
método autenticated?

Salu2,

Lo que se hace durante el login es cifrar la contraseña que escribe el
usuario y compararla con la contraseña cifrada que está en la base de
datos:

2008/6/25 Javier Vidal P. [email protected]:

2008/6/25 Manuel P. [email protected]:

entonces yo incluyo el usurio directamente de la siguiente manera:

@user = User.new(:login => params[:suscripcione][:login], :grupousuario_id
=>“6”, :crypted_password => psswd,:status => “A”, :denusu =>
params[:suscripcione][:nombre], :created_at => Time.now)
@user.save

¿Puede ser que el problema esté en que haces :crypted_password =>
psswd en vez de :password => psswd?

Suerte.

On Wed, Jun 25, 2008 at 15:18, Manuel P.
[email protected] wrote:

Vale, :password => psswd.to_s debería arreglar ese problema.

Suerte.

hola javier! yo se que el hace un before_save :encrypt_password pero
resulta que no lo encripta la clave. no me esta funcionando

Y Daniel gracias por la sugerencia pero hice el cambio a :password =>
psswd
y me da el siguiente error:

NoMethodError in SuscripcionesController#create

private method `split’ called for 400014:Fixnum

2008/6/26 Daniel R. Troitiño [email protected]:

daniel y a todos los amigos de la lista… no me da error, me graba la
suscripcion pero cuando reviso la tabla de users no me creo el
usuario…

no se que esta pasando alli

El día 26 de junio de 2008 8:55, Daniel R. Troitiño <
[email protected]> escribió:

no se porque amigos pero ya me creo el usuario… reinicie mongrel y
todo
perfecto

muchas gracias

2008/6/26 Manuel P. [email protected]: