Problems creating a simple auth, please help

Hi, I am new to ruby/rails. learning fast but still getting stuck on key
places…
so I have a db and a column called email and crypt one is obviously the
email of the users and the other the password column.
so I have this controller for the main application controller:

protected
def login_required
session[:auth] ? yield : render(:template => ‘login/login’)
end

this login controller:


skip_filter :login_required

def logout(msg = “”)
reset_session
flash[:notice] = msg if msg.length
redirect_to ‘/’
end

def check
if not request.post?
logout(“Invalid request.”)
elsif session[:auth] = Login.authenticate(params[:email,
params[:crypt])
redirect_to :back
else
logout(“Your user name and password are invalid.”)
end
end


and this as model:

set_table_name “users” # this is because the table is not named login
but users I have another model called users for something else.

   validates_presence_of :email

   def self.authenticate(email, crypt)
   password = crypt
   if email
           salt = [Array.new(6){rand(256).chr}.join].pack("m").chomp
           expected_password = password.crypt(salt)
           if Users.crypt != expected_password
           email = nil
   end
   end
           email
   end

and here is my views:

<%= error_messages_for ‘login’ %>

Enter your email and password <% form_tag do %>

Email
<%= text_field_tag :email, params[:email] %>

Password
<%= password_field_tag :crypt, params[:crypt] %>

<%= submit_tag "Login" %> <% end %>

the issue: I see the form… that is easy :wink:
but I put in a real email and password and does not work…
when I put a wrong one it does not give me the result I expect…

I use the path and no matter were I go it will redirect me to the
login(this is good)
www.domain.org/login

Any help will be VERY appreciated.

Thanks

On 17 Mar 2008, at 17:28, ReK2 wrote:

Hi, I am new to ruby/rails. learning fast but still getting stuck on
key
places…
so I have a db and a column called email and crypt one is obviously
the
email of the users and the other the password column.
so I have this controller for the main application controller:

          salt = [Array.new(6) 

{rand(256).chr}.join].pack(“m”).chomp
expected_password = password.crypt(salt)
if Users.crypt != expected_password

Like I said the last time you asked, you can’t use a random salt like
that - you need to use the same salt as when you created the user
Users.crypt will try and call the crypt method on the Users class. I
suspect you actually want self.crypt (to get the value for that user).

Fred

Hi, sorry I must to have missed your other email…
but if that is the only issue then why is not doing anythign at all?
I mean it should “flash” me that the user/passwod was wrong… this is
why I suspect
there is something mayor that I am not doing right here…

Thanks for your response hopefully someone can help me with this.

ReK2
escribió:> Hi, I am new to ruby/rails. learning fast but still getting stuck on key

On 17 Mar 2008, at 18:23, rek2 wrote:

Hi, sorry I must to have missed your other email…
but if that is the only issue then why is not doing anythign at all?
I mean it should “flash” me that the user/passwod was wrong… this is
why I suspect
there is something mayor that I am not doing right here…

Yes: your form_tag doesn’t specify an action, so is just posting to
the login page, whereas you want it to post to the check action.

Fred

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs