Class: LcpRuby::DevToolbarController
- Inherits:
-
ApplicationController
- Object
- ApplicationController
- LcpRuby::DevToolbarController
- Defined in:
- app/controllers/lcp_ruby/dev_toolbar_controller.rb
Constant Summary
Constants included from Controller::BearerAuthentication
Controller::BearerAuthentication::BASIC_PREFIX_LENGTH, Controller::BearerAuthentication::BEARER_PREFIX_LENGTH
Instance Method Summary collapse
Methods included from Controller::Authorization
Instance Method Details
#metadata ⇒ Object
6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 |
# File 'app/controllers/lcp_ruby/dev_toolbar_controller.rb', line 6 def return head(:not_found) unless DevToolbar.enabled? presenter_name = params[:presenter] page_name = params[:page] model_name = params[:model] record_id = params[:record_id] page_type = params[:page_type] loader = LcpRuby.loader result = { context: {}, tabs: {}, effective: nil } result[:context] = { page_type: page_type, record_id: record_id } # Model tab if model_name.present? model_def = loader.model_definitions[model_name] result[:tabs][:model] = build_tab(model_def) if model_def end # Presenter tab — may have multiple zones for composite pages if presenter_name.present? page_def = page_name.present? ? loader.page_definitions[page_name] : nil if page_def && !page_def.auto_generated? && page_def.zones.size > 1 zones = page_def.zones.select(&:presenter_zone?).map do |zone| pdef = loader.presenter_definitions[zone.presenter] next unless pdef build_tab(pdef).merge(zone_name: zone.name) end.compact result[:tabs][:presenter] = { zones: zones } else pdef = loader.presenter_definitions[presenter_name] result[:tabs][:presenter] = { zones: [ build_tab(pdef).merge(zone_name: "main") ] } if pdef end end # Page tab if page_name.present? page_def = loader.page_definitions[page_name] result[:tabs][:page] = build_tab(page_def) if page_def end # Permissions tab if model_name.present? perm_def = loader.(model_name) result[:tabs][:permissions] = build_tab(perm_def) if perm_def end # Workflow tab if model_name.present? wf_def = Workflow::Registry.workflow_for_model(model_name) if wf_def tab = build_tab(wf_def) builder_opts = { "show_transition_labels" => true, "show_roles" => true, "show_guards" => true, "collapse_universal" => true } builder = Workflow::MermaidBuilder.new(wf_def, options: builder_opts) tab[:mermaid_code], tab[:mermaid_code_dark] = builder.build_for_palettes(:light, :dark) result[:tabs][:workflow] = tab end end # View group tab if page_name.present? vg = loader.view_group_for_page(page_name) result[:tabs][:view_group] = build_tab(vg) if vg end # Effective permissions if model_name.present? evaluator = build_evaluator_for(model_name) result[:effective] = build_effective(evaluator, model_name, record_id) if evaluator end render json: result end |