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 -~----------~----~----~----~------~----~------~--~---