Sha256: a70430e6fe69776ecfa9236fbd81b25fba74cd56948d4bf67f645cdd0ef06ec4

Contents?: true

Size: 1.59 KB

Versions: 4

Compression:

Stored size: 1.59 KB

Contents

# -*- encoding : utf-8 -*-
class AccountController < WagnController

  def signin
    @card = Card.new
    if params[:login]
      handle { password_authentication params[:login], params[:password] }
    else
      show :signin_and_forgot_password
    end
  end

  def signout
    self.current_account_id = nil
    flash[:notice] = "Successfully signed out"
    redirect_to Card.path_setting('/')  # previous_location here can cause infinite loop.  ##  Really?  Shouldn't.  -efm
  end

  def forgot_password
    @card = Card.new
    if email = params[:email]
      handle { reset_password Account[ email.downcase ] }
    else
      show :forgot_password 
    end
  end

  protected

  def reset_password account
    error = case
      when account.nil?      ;  "Unrecognized email."
      when !account.active?  ;  "That account is not active."
      end
    
    if error
      @card.errors.add :account, error
      false
    else
      account.send_account_info(
        :subject => "Password Reset",
        :message => "You have been given a new temporary password. Please update your password once you've signed in."
      )
    end
  end

  def password_authentication(login, password)
    if self.current_account_id = Account.authenticate( params[:login], params[:password] )
      flash[:notice] = "Successfully signed in"
    else
      usr=Account[ params[:login].strip.downcase ]
      @card.errors.add :signin, case
        when usr.nil?     ; "Unrecognized email."
        when usr.blocked? ; "Sorry, that account is blocked."
        else              ; "Wrong password"
        end
      false
    end
  end

end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
wagn-1.12.13 app/controllers/account_controller.rb
wagn-1.12.12 app/controllers/account_controller.rb
wagn-1.12.11 app/controllers/account_controller.rb
wagn-1.12.10 app/controllers/account_controller.rb