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:
<div class="depot-form">
<%= error_messages_for ''login'' %>
<fieldset>
<legend>Enter your email and password</legend>
<% form_tag do %>
<p>
<label for="email">Email</label><br/>
<%= text_field_tag :email, params[:email] %>
</p>
<p>
<label for="crypt">Password</label><br/>
<%= password_field_tag :crypt, params[:crypt] %>
</p>
<%= submit_tag "Login" %>
<% end %>
</fieldset>
</div>
the issue: I see the form.. that is easy ;-)
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
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Ruby on Rails: Talk" group.
To post to this group, send email to
rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
To unsubscribe from this group, send email to
rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---
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_passwordLike 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 --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
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 > 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: > > <div class="depot-form"> > > <%= error_messages_for ''login'' %> > > <fieldset> > <legend>Enter your email and password</legend> > <% form_tag do %> > <p> > <label for="email">Email</label><br/> > <%= text_field_tag :email, params[:email] %> > </p> > > <p> > <label for="crypt">Password</label><br/> > <%= password_field_tag :crypt, params[:crypt] %> > </p> > <%= submit_tag "Login" %> > <% end %> > </fieldset> > </div> > > > the issue: I see the form.. that is easy ;-) > 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 > > > >--~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe@googlegroups.com For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
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 --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---