class Lato::AuthenticationController

def find_user

def find_user
  @user = User.find_by(id: params[:id])
  respond_to_with_not_found unless @user
end

def lock_recover_password_if_disabled

def lock_recover_password_if_disabled
  return unless Lato.config.auth_disable_recover_password
  respond_to_with_not_found 
end

def lock_signup_if_disabled

def lock_signup_if_disabled
  return unless Lato.config.auth_disable_signup
  respond_to_with_not_found 
end

def recover_password

def recover_password
  @user = Lato::User.new
end

def recover_password_action

def recover_password_action
  @user = Lato::User.new
  respond_to do |format|
    if @user.request_recover_password(params.require(:user).permit(:email))
      format.html { redirect_to lato.authentication_update_password_path(id: @user.id) }
      format.json { render json: @user }
    else
      format.html { render :recover_password, status: :unprocessable_entity }
      format.json { render json: @user.errors, status: :unprocessable_entity }
    end
  end
end

def signin

def signin
  @user = Lato::User.new
end

def signin_action

def signin_action
  @user = Lato::User.new
  respond_to do |format|
    if @user.signin(params.require(:user).permit(:email, :password))
      session_create(@user.id)
      format.html { redirect_to lato.root_path }
      format.json { render json: @user }
    else
      format.html { render :signin, status: :unprocessable_entity }
      format.json { render json: @user.errors, status: :unprocessable_entity }
    end
  end
end

def signout; end

def signout; end

def signout_action

def signout_action
  session_destroy
  respond_to do |format|
    format.html { redirect_to lato.root_path }
    format.json { render json: {} }
  end
end

def signup

def signup
  @user = Lato::User.new
end

def signup_action

def signup_action
  @user = Lato::User.new(params.require(:user).permit(:first_name, :last_name, :email, :password, :password_confirmation, :accepted_privacy_policy_version, :accepted_terms_and_conditions_version))
  respond_to do |format|
    if @user.save
      session_create(@user.id)
      format.html { redirect_to lato.root_path }
      format.json { render json: @user }
    else
      format.html { render :signup, status: :unprocessable_entity }
      format.json { render json: @user.errors, status: :unprocessable_entity }
    end
  end
end

def update_password; end

def update_password; end

def update_password_action

def update_password_action
  respond_to do |format|
    if @user.update_password(params.require(:user).permit(:code, :password, :password_confirmation))
      format.html { redirect_to lato.authentication_signin_path, notice: I18n.t('lato.authentication_controller.update_password_action_notice') }
      format.json { render json: @user }
    else
      format.html { render :update_password, status: :unprocessable_entity }
      format.json { render json: @user.errors, status: :unprocessable_entity }
    end
  end
end

def verify_email

def verify_email
  @code = params[:code]
end

def verify_email_action

def verify_email_action
  respond_to do |format|
    if @user.verify_email(params.require(:user).permit(:code))
      format.html { redirect_to lato.root_path, notice: I18n.t('lato.authentication_controller.verify_email_action_notice') }
      format.json { render json: @user }
    else
      format.html { render :verify_email, status: :unprocessable_entity }
      format.json { render json: @user.errors, status: :unprocessable_entity }
    end
  end
end