diff --git a/views/login.erb b/views/login.erb index fd64e04..ada5979 100644 --- a/views/login.erb +++ b/views/login.erb @@ -1,7 +1,9 @@
<%= @error %>
<% end %> + diff --git a/vote.rb b/vote.rb index c70ec7f..71f7f01 100644 --- a/vote.rb +++ b/vote.rb @@ -28,6 +28,8 @@ class User < ActiveRecord::Base has_many :ratings has_many :organizers has_many :votes, through: :organizers + validates :email, uniqueness: true + validates :email, format: URI::MailTo::EMAIL_REGEXP end class Organizer < ActiveRecord::Base @@ -81,9 +83,21 @@ get '/signup' do end post '/signup' do - @user = User.create(email: params[:email], - password: hash_password(params[:password])) - redirect '/' + @user = User.create(email: params[:email]) + @errors = [] + if params[:password].empty? + @errors << OpenStruct.new(:attribute => :password, :type => :blank) + else + @user.password = hash_password(params[:password]) + end + if @errors.empty? and @user.valid? + @user.save + session.clear + session[:user_id] = @user.id + redirect '/' + else + erb :signup + end end get '/login' do @@ -97,7 +111,7 @@ post '/login' do session[:user_id] = user.id redirect '/' else - @error = 'Username or password was incorrect' + @error = _("Incorrect email or password.") erb :login end end