# frozen_string_literal: true

module Admin
  class RolesController < ApplicationController
    before_action :admin!
    load_and_authorize_resource
    respond_to :html
    responders :flash

    def index
      @roles = Role.all.order(:name).paginate(page: params[:page])
      respond_with @roles
    end

    def new
      @role = Role.new
      respond_with @role
    end

    def edit
      respond_with @role
    end

    def create
      @role = Role.create(role_params)
      respond_with @role, location: admin_roles_path
    end

    def update
      @role.update(role_params)
      respond_with @role, location: admin_roles_path
    end

    def destroy
      @role.destroy
      respond_with @role, location: admin_roles_path, notice: "Role was successfully deleted"
    end

    private

    def admin!
      authorize! :manage, :all
    end

    def role_params
      params.require(:role).permit(:description, :name, :members, :slug)
    end
  end
end
