how to perform change password functionality?

Dear all,

Iam in process of creation an admin panel, i have used

def sign_in

   if request.get?

      flash.now[ :notice ] = 'Please enter your username and password'

   elsif request.post? and params[ :admin ]

      session[ :admin_id ] = nil

      @admin = Admin.authenticate(params[:admin][:email],                                   params[:admin][:password])

      if @admin

        session[ :admin_id ] = @admin.id         session[ :admin ] = @admin.name

        redirect_to :action => "list"

      else

        flash.now[ :error ] = 'The username or password entered is incorrect'

      end

    end

  end

  def add

     if request.post? and params[ :admin ]

      @admin = Admin.new( params[ :admin ])

      @admin.name = params[ :admin ][ :name ]

      @admin.email = params[ :admin ][ :email ]

      admin_password = Digest::SHA1.hexdigest("--#{Time.now.to_s}--#{@admin.name}--")[0,6]

      @admin.password = Base64.encode64(admin_password)

      if @admin.save

        @admin = Admin.find(@admin.id)

        #calls the sent_order method         Adminpassword.deliver_sent(@admin)

        # if so...         redirect_to :action => 'list'

      end

    else

      # render an empty admin instance       @admin = Admin.new

    end

  end

my add and sign in functions are working well, and while iam using change password method i was not able to perform the operation.

Could any one suggest on using change password option for my above controller, i have tried the method with following code,

def change_password

    if request.get?

      # if so ...       @admin = Admin.new

    # was this action invoked by a post request?     elsif request.post?

      admin = session[ :admin]

      admin.update_attributes(:password => params[:new_password])

      #@admin.password = params[ :old_password ]

      #@admin.update_attributes( :new_password )

      if admin.save

           flash[:notice] = 'Password changed successfully'            redirect_to :controller => 'admin', :action => 'list'

                      end

    else

      flash.now[:notice] = 'Please enter the required parameters'

    end

  end

Thanks in advance

Regards, Jose martin