hi all, i have one issue after entering username and password on login popup and clicking login button the user is logged in but i have to refresh the url i have check the log but nothing is there,i have set the session key and secret in ‘session_store.rb’, i am running my local app on 127.0.0.1 ip on 3006 port
Without showing us the relevant code we have no hope of helping. We have no idea of how you are handling login or what code is executed when the login button is clicked.
Colin
i am using ruby 1.8.7 and rails version 2.3.11 with ruby gem 1.6.2 i am setting the key and secret value in session_store.rb with following code
ActionController::Base.session = {
:key => ‘_myapp’, :secret => ‘071a1167c4870bfff95a61835288f9fa9eb158298e1c5623e8d7223fa7a68c9d485b4e27a8e705c2485631bfc28f48b895c486536c8f53856ce3480f0d9ea8b’ #:domain => :all
}
def validate_user begin
login_details = params[:login_details]
user_name = login_details['username']
user_password = login_details['password']
user_typed=user_password
error_header = 'Please correct the following:'
error_header += '<ul>'
error_msgs = ''
if user_name == nil || user_name.strip.empty?
message = "Please Enter Your Email"
error_msgs += '<li>' + message + '</li>'
end
if user_password == nil || user_password.strip.empty?
message = "Please Enter Password"
error_msgs += '<li>' + message + '</li>'
end
if error_msgs != ''
headers['X-Instruction'] = "ERROR"
render :text => error_header + error_msgs
else
# Check whether the login details are valid
user = User.find(:first, :conditions => ["user_name = ? AND user_password = ?", user_name, user_password])
if user == nil
message = "Your Email/Password is invalid. Please try again"
render :text => message
else
#Save the user details in session
myapp_user = myappUser.new
myapp_user.user_id = user.user_id
myapp_user.first_name = user.first_name
myapp_user.last_name = user.last_name
myapp_user.email_id = user.email_id
if(user.user_id)
logged_user = myappPortalExpert.find(:first, :conditions => ["user_id = ? ", user.user_id])
if logged_user!=nil
myapp_user.first_time = 'no'
else
myapp_user.first_time = 'yes'
end
end
session['user'] = myapp_user
if(login_details['remember'])
cookies[:user_user_id] = { :value => (user.user_id).to_s, :expires => Time.now + 20160}
cookies[:user_last_name] = { :value => user.last_name, :expires => Time.now + 20160}
cookies[:user_name] = { :value => user_name, :expires => Time.now + 20160}
cookies[:user_password] = { :value => user_typed, :expires => Time.now + 20160}
elsif cookies
cookies[:user_name] = { :value => "", :expires => Time.now}
cookies[:user_password] = { :value => "", :expires => Time.now}
end
headers['X-Instruction'] = "OK"
if session['user'].first_time=="yes"
headers['X-Portal'] = "abc"
else
headers['X-Portal'] = "PORTAL"
end
if $header=='yes'
headers['X-Subm'] = "yes"
elsif $header=='no'
headers['X-Subm'] = "no"
end
render :nothing => true
end
end
rescue ActiveRecord::ActiveRecordError=>active_record_error
@error_num = "#DB100"
@error_message = "Active Record Error occured in validate_user method of login_controller"
# add logging code here
# add mail code here
mail_subject=@error_num+" "+@error_message
email = ErrorMailer.deliver_error_info(mail_subject)
@logger.error "Error:"+mail_subject+active_record_error
rescue_action_all(active_record_error)
rescue Timeout::Error=>e
@error_num = "#TM101"
@error_message = "Timeout exception occured in validate_user method of login_controller"
# add logging code here
mail_subject=@error_num+" "+@error_message
@logger.warn "Warning:"+mail_subject
retry
show_timeout(e)
rescue Errno::EBADF => e
@error_num = "#FD102"
@error_message = "Bad File Descriptor Exception occured in validate_user method of login_controller"
mail_subject=@error_num+" "+@error_message
email = ErrorMailer.deliver_error_info(mail_subject)
@logger.error "Error:"+mail_subject
rescue_action_all(e)
end
# Turn On documentation
I think you had better have a look at the Rails Guide on Debugging. That will show you how to use ruby-debug to break into your code to inspect data and follow the flow. Then you should be able to work out what is going wrong.
I would also say that code looks incredibly complex and should be refactored to make it simpler. Personally I would not even attempt to debug code as complex as this, but would refactor it into simpler chunks first, there is a good chance it will then work. Sending email and rendering inside a method called validate_user, for example, is ridiculous (IMHO).
Colin
hi colin, i debug the code(method) but method giving the right values.My problem is that as i said when user logs in it is done in that method but i have to refresh the url to take the user on to new page if it valid user.
I don't fully understand what you mean and as I said I have not looked in detail at the code, you say that it is following the correct flow, at the end does it instruct it to render or redirect to an appropriate page? If so does the log say that it is doing that correctly?
Colin