CMSgov/dpc-app

View on GitHub
dpc-portal/app/controllers/client_tokens_controller.rb

Summary

Maintainability
A
25 mins
Test Coverage
# frozen_string_literal: true

# Hanles client token requests
class ClientTokensController < ApplicationController
  before_action :authenticate_user!
  before_action :load_organization
  before_action :require_can_access
  before_action :tos_accepted

  def new
    render Page::ClientToken::NewTokenComponent.new(@organization)
  end

  def create
    manager = ClientTokenManager.new(@organization.dpc_api_organization_id)
    if params_present? && manager.create_client_token(label: params[:label])
      @client_token = manager.client_token
      render(Page::ClientToken::ShowTokenComponent.new(@organization, @client_token))
    else
      return render_error 'Label required.' unless params_present?

      render_error 'Client token could not be created.'
    end
  end

  def destroy
    manager = ClientTokenManager.new(@organization.dpc_api_organization_id)
    if manager.delete_client_token(id: params[:id])
      flash[:notice] = 'Client token successfully deleted.'
    else
      flash[:alert] = 'Client token could not be deleted.'
    end
    redirect_to organization_path(@organization)
  end

  private

  def params_present?
    params[:label].present?
  end

  def render_error(msg)
    flash.now.alert = msg
    render Page::ClientToken::NewTokenComponent.new(@organization)
  end
end