class UsersController < ApplicationController
  before_action :logged_in_user, only: [:edit, :update]
  before_action :correct_user, only: [:edit, :update]
  
  def show
    @user = User.find(params[:id])
  end

  def new
    @user = User.new
  end

  def create
    @user = User.new(user_params) 
    if @user.save
      log_in @user
      flash[:success] = "Welcome to the Sample App! #{@user.name}"
      redirect_to @user
    else
      render 'new'
    end
  end

  def edit
    
  end

  def update
    
    if @user.update(user_params)
      flash[:success] = "Profile updated"
      redirect_to @user
    else
      render 'edit'
    end
  end

  private 

    def user_params
      # Its mean, we add ONLY (permit) name, email, password, password_confirmation
      params.require(:user).permit(:name, :email, :password, :password_confirmation)
    end

    # Before filters
    # Confirm a logged-in user.
    def logged_in_user
      unless logged_in?
        flash[:danger] = "Please log in!"
        redirect_to login_url
      end
    end

    # Confirms the correct user.
    def correct_user
      @user = User.find(params[:id])
      redirect_to(root_url) unless current_user?(@user)
    end
end
