Report abuse


			
class UsersController < ApplicationController
  before_filter :login_required, :except => [:create, :new]
  # GET /users
  # GET /users.xml
  def index
    @users = User.find(:all)

    respond_to do |format|
      format.html # index.html.erb
      format.xml  { render :xml => @users }
    end
  end

  # GET /users/1
  # GET /users/1.xml
  def show
    @user = User.find(params[:id])

    respond_to do |format|
      format.html # show.html.erb
      format.xml  { render :xml => @user }
    end
  end

  # render new.rhtml
  def new
    @user = User.new
    @user.addresses.build
    @user.phones.build
  end

  # GET /users/1/edit
  def edit
    if (current_user.id == params[:id].to_i || current_user.admin?)
      @user = User.find(params[:id])
    else
      flash[:notice] = "You are only allowed to edit your own profile.  This attempt has been logged."
      redirect_back_or_default(spaces_path(:available => 'true'))
    end
  end

  def create
    cookies.delete :auth_token
    # protects against session fixation attacks, wreaks havoc with 
    # request forgery protection.
    # uncomment at your own risk
    # reset_session
    @user = User.new(params[:user])
    @user.save
    if @user.errors.empty?
      self.current_user = @user
      redirect_back_or_default(spaces_path(:available => 'true'))
      flash[:notice] = "Thanks for signing up!"
    else
      render :action => 'new'
    end
  end

  # PUT /users/1
  # PUT /users/1.xml
  def update
    params[:user][:existing_address_attributes] ||= {}
    params[:user][:existing_phone_attributes] ||= {}
    @user = User.find(params[:id])

    respond_to do |format|
      if @user.update_attributes(params[:user])
        flash[:notice] = 'User was successfully updated.'
        format.html { redirect_to(@user) }
        format.xml  { head :ok }
      else
        format.html { render :action => "edit" }
        format.xml  { render :xml => @user.errors, :status => :unprocessable_entity }
      end
    end
  end

  # DELETE /users/1
  # DELETE /users/1.xml
  def destroy
    @user = User.find(params[:id])
    @user.destroy

    respond_to do |format|
      format.html { redirect_to(users_url) }
      format.xml  { head :ok }
    end
  end
end