I am trying to make a barebones login system based on this example
(which in turn is just standard RoR login) but when I enter a user name
and password, it says the login is unsuccessful every time. I am not
sure where I am going wrong. Here is all relevent information
CREATE TABLE `users` (
`id` int(6) unsigned NOT NULL auto_increment,
`login` varchar(20) NOT NULL default '''',
`password` varchar(30) NOT NULL default '''',
`name` varchar(30) NOT NULL default '''',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
CREATE TABLE ''stuff'' (
''id'' int(6) unsigned NOT NULL auto_increment,
...
''user_id'' int(6) NOT NULL default ''0'',
...
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
Stuff--------------------------
class StuffController < ApplicationController
scaffold :stuff
before_filter :login_required, :only => [:create, :edit, :new]
def create
@stuff= Stuff.new(params[:todo])
@stuff.user = @session[:user]
if @stuff.save
flash[:notice] = ''Event was successfully created.''
redirect_to :action => ''list''
else
render :action => ''new''
end
end
...
def edit
@stuff= Stuff.find(params[:id])
if @stuff.user != @session[:user]
flash[:notice] = ''You cannot edit an article you didn\''t
upload.''
redirect_to :action => ''show'', :id => @stuff
end
...
end
end
class Todo < ActiveRecord::Base
validates_presence_of :user
belongs_to :user
end
User------------------------------------
require ''digest/sha1''
# this model expects a certain database layout and its based on the
name/login pattern.
class User < ActiveRecord::Base
def self.authenticate(login, pass)
find_first(["login = ? AND password = ?", login, sha1(pass)])
end
def change_password(pass)
update_attribute "password", self.class.sha1(pass)
end
protected
def self.sha1(pass)
Digest::SHA1.hexdigest(pass)
end
before_create :crypt_password
def crypt_password
write_attribute("password", self.class.sha1(password))
end
validates_length_of :login, :within => 3..40
validates_length_of :password, :within => 5..40
validates_presence_of :login, :password, :password_confirmation
validates_uniqueness_of :login, :on => :create
validates_confirmation_of :password, :on => :create
end
class UserController < ApplicationController
model :user
layout ''scaffold''
def login
case @request.method
when :post
if @session[''user''] =
User.authenticate(@params[''user_login''],
@params[''user_password''])
flash[''notice''] = "Login successful"
redirect_back_or_default :action => "welcome"
else
@login = @params[''user_login'']
@message = "Login unsuccessful"
end
end
end
def signup
case @request.method
when :post
@user = User.new(@params[''user''])
if @user.save
@session[''user''] = User.authenticate(@user.login,
@params[''user''][''password''])
flash[''notice''] = "Signup successful"
redirect_back_or_default :action => "welcome"
end
when :get
@user = User.new
end
end
def delete
if @params[''id'']
@user = User.find(@params[''id''])
@user.destroy
end
redirect_back_or_default :action => "welcome"
end
def logout
@session[''user''] = nil
end
def welcome
end
end
--
Posted via http://www.ruby-forum.com/.
Use the LoginEngine available at http://rails-engines.org/login_engine. --- Neil <nmatatal@uci.edu> wrote:> I am trying to make a barebones login system based on this example > (which in turn is just standard RoR login) but when I enter a user name > and password, it says the login is unsuccessful every time. I am not > sure where I am going wrong. Here is all relevent information > > > CREATE TABLE `users` ( > `id` int(6) unsigned NOT NULL auto_increment, > `login` varchar(20) NOT NULL default '''', > `password` varchar(30) NOT NULL default '''', > `name` varchar(30) NOT NULL default '''', > PRIMARY KEY (`id`) > ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; > > CREATE TABLE ''stuff'' ( > ''id'' int(6) unsigned NOT NULL auto_increment, > ... > ''user_id'' int(6) NOT NULL default ''0'', > ... > ) ENGINE=MyISAM DEFAULT CHARSET=latin1; > > > Stuff-------------------------- > class StuffController < ApplicationController > > scaffold :stuff > before_filter :login_required, :only => [:create, :edit, :new] > > def create > @stuff= Stuff.new(params[:todo]) > @stuff.user = @session[:user] > if @stuff.save > flash[:notice] = ''Event was successfully created.'' > redirect_to :action => ''list'' > else > render :action => ''new'' > end > end > > ... > > def edit > @stuff= Stuff.find(params[:id]) > if @stuff.user != @session[:user] > flash[:notice] = ''You cannot edit an article you didn\''t upload.'' > redirect_to :action => ''show'', :id => @stuff > end > > ... > end > end > > class Todo < ActiveRecord::Base > validates_presence_of :user > belongs_to :user > end > > User------------------------------------ > require ''digest/sha1'' > > # this model expects a certain database layout and its based on the > name/login pattern. > class User < ActiveRecord::Base > > def self.authenticate(login, pass) > find_first(["login = ? AND password = ?", login, sha1(pass)]) > end > > def change_password(pass) > update_attribute "password", self.class.sha1(pass) > end > > protected > > def self.sha1(pass) > Digest::SHA1.hexdigest(pass) > end > > before_create :crypt_password > > def crypt_password > write_attribute("password", self.class.sha1(password)) > end > > validates_length_of :login, :within => 3..40 > validates_length_of :password, :within => 5..40 > validates_presence_of :login, :password, :password_confirmation > validates_uniqueness_of :login, :on => :create > validates_confirmation_of :password, :on => :create > end > > class UserController < ApplicationController > model :user > layout ''scaffold'' > > def login > case @request.method > when :post > if @session[''user''] = User.authenticate(@params[''user_login''], > @params[''user_password'']) > > flash[''notice''] = "Login successful" > redirect_back_or_default :action => "welcome" > else > @login = @params[''user_login''] > @message = "Login unsuccessful" > end > end > end > > def signup > case @request.method > when :post > @user = User.new(@params[''user'']) > > if @user.save > @session[''user''] = User.authenticate(@user.login, > @params[''user''][''password'']) > flash[''notice''] = "Signup successful" > redirect_back_or_default :action => "welcome" > end > when :get > @user = User.new > end > end > > def delete > if @params[''id''] > @user = User.find(@params[''id'']) > @user.destroy > end > redirect_back_or_default :action => "welcome" > end > > def logout > @session[''user''] = nil > end > > def welcome > end > > end > > -- > Posted via http://www.ruby-forum.com/. > _______________________________________________ > Rails mailing list > Rails@lists.rubyonrails.org > http://lists.rubyonrails.org/mailman/listinfo/rails >http://www.ProblemSolvingSkill.net Hone your problem-solving skills