views:

185

answers:

2

I use Authlogic with the Authlogic-openid addon (I gem installed ruby- openid and script/plugin install git://github.com/rails/open_id_authentication.git) and get two errors.

First when running functional test, I get an undefined method openid_identifier? message on a line in my new.html.erb file when running the UsersControllerTest. The line is:

<% if @user.openid_identifier? %> 

When running script/console I can access this method without any problem.

Second when testing the openid functionality and registering a new user to my application using openid and using my blogspot account for that I get the following in my log file:

Generated checkid_setup request to http://www.blogger.com/openid-server.g 
with assocication ... 
Redirected to http://www.blogger.com/openid-server.g?openid.assoc_handle=... 
NoMethodError (You have a nil object when you didn't expect it! 
The error occurred while evaluating nil.call): 
  app/controllers/users_controller.rb:44:in `create' 
  /usr/lib/ruby/1.8/webrick/httpserver.rb:104:in `service' 
  /usr/lib/ruby/1.8/webrick/httpserver.rb:65:in `run' 
  /usr/lib/ruby/1.8/webrick/server.rb:173:in `start_thread' 
  /usr/lib/ruby/1.8/webrick/server.rb:162:in `start' 
  /usr/lib/ruby/1.8/webrick/server.rb:162:in `start_thread' 
  /usr/lib/ruby/1.8/webrick/server.rb:95:in `start' 
  /usr/lib/ruby/1.8/webrick/server.rb:92:in `each' 
  /usr/lib/ruby/1.8/webrick/server.rb:92:in `start' 
  /usr/lib/ruby/1.8/webrick/server.rb:23:in `start' 
  /usr/lib/ruby/1.8/webrick/server.rb:82:in `start' 

The code in the users_controller is straight forward:

  def create 
    respond_to do |format| 
        @user.save do |result| 
                if result 
                flash[:notice] = t('Thanks for signing up!') 
                format.html { redirect_to :action => 'index' } 
                format.xml  { render :xml => @user, :status => :created, :location => @user } 
              else 
                format.html { render :action => "new" } 
                format.xml  { render :xml => @user.errors, :status => :unprocessable_entity } 
              end 
      end 
    end 
  end 

The line giving the error being @user.save do |result|...

I feel I'm missing something pretty basic but I have been staring at this for too long because I can't find what it is. I checked with the code on Railscasts episodes 160 and 170 and the bones GitHub project but found nothing.

Thanks for your help, usr

A: 

Are you sure that @user is set? Seems to me that the problem is that @user is nil.

psyho
Yes, it is I use declarative-authorization and the line filter_resource_accessis at the top of the users_controller.rb. Even if I add@user = User.new(params[:user])before the save I get the same error.I thought it might be the fact that I use blogger as openid provider, but if I use openid.org I still get the same error.
usr
A: 

The problem is the fact that the authlogic_oauth and authlogic_openid plugins were used at the same time. This means that the save method on user will be handled by the openid code instaed of the oauth code.

Maybe the authlogic_rpx library can combine the two methods succesfully, I need to test this still.

usr