Newer
Older
dmpopidor / app / controllers / api / v0 / guidances_controller.rb
module Api
  module V0
    class GuidancesController < Api::V0::BaseController
      before_action :authenticate

      swagger_controller :guidances, 'Guidances'

      swagger_api :show do
        summary 'Returns a single guidance item'
        notes   'Notes...'
        param :path, :id, :integer, :required, "Guidance Id"
        param :header, 'Authentication-Token', :string, :required, 'Authentication-Token'
        response :ok, "success", :Guidance
        response :unauthorized
        response :not_found
      end

      # TODO: impliment auth on show/index
      # for both, first validate that the user has the permission to use this api
      # then for show, display iff they have permissions for that resource
      # for index, compile the list of all groups they have permissions to view, then return

      def show
        # ensure use has auth for guidances api
        if has_auth("guidance")
          if Guidance.can_view?(@user, params[:id])
            respond_with get_resource
          else
            render json: I18n.t("api.bad_resource"), status: 401
          end
        else
          render I18n.t("api.no_auth_for_endpoint"), status: 401
        end
      end

      swagger_api :index do
        summary 'Returns a list of all viewable guidances'
        notes   'Notes...'
        param :header, 'Authentication-Token', :string, :required, 'Authentication-Token'
        response :unauthorized
      end

      def index
        if has_auth("guidance")
          @all_viewable_guidances = Guidance.all_viewable(@user)
          respond_with @all_viewable_guidances
        else
          render json I18n.t("api.no_auth_for_endpoint"), status: 401
        end
      end


      private
        def query_params
          params.permit(:id)
        end
    end
  end
end