Cześć, mam problem z logowaniem.
Używam authlogic i wg. mnie ma wszystko dobrze ustawione: / szyfruje też e-mail, ale bez tego też się nie zmienia./
[code=“Ruby”]user.rb
acts_as_authentic do |c|
c.login_field = :email_h
end[/code]
[code=“Ruby”] user_session.rb
generalize_credentials_error_messages I18n.t('authlogic.error_messages.login_credentials_invalid')
def to_key
new_record? ? nil : [ self.send(self.class.primary_key) ]
end[/code]
[code=“Ruby”]user_sessions_controller
def create
tmpmail = params[:user_session][:email_h]
params[:user_session][:email_h] = encrypt_email(params[:user_session][:email_h])
@user_session = UserSession.new(params[:user_session])
if @user_session.save
flash[:notice] = t('login.donelogin')
redirect_to root_path, :format => params[:format]
else
@user_session.email_h = tmpmail
render :action => 'new', :format => params[:format]
end
end[/code]
Wszystkie kombinacje poza emailem i złym hasłem działają -tj. mogę podać złego emaila, brak hasła, poprawne email i hasło(normalnie się loguje).
Wysypuje się na
app/controllers/user_sessions_controller.rb:22:in `create'
czyli
if @user_session.save
Teoretycznie bład:
[quote]You have a nil object when you didn’t expect it!
You might have expected an instance of Array.
The error occurred while evaluating nil.+[/quote]
Ale mam obiekt, robię zrzut do loga bezpośrednio przed wywołaniem tej metody:
logger.debug "@user_session: #{@user_session.inspect}\n\n"
if @user_session.save
to dostaje w konsoli [quote]@user_session: #<UserSession: {:email_h=>“d5e86424b486756b0c22f42f84d8f131”, :password=>""}>[/quote]
Mi się już skończyły pomysły, macie jakiś?