Packages

phoenix_kit

1.7.88
1.7.208 1.7.207 1.7.206 1.7.205 1.7.204 1.7.203 1.7.202 1.7.201 1.7.200 1.7.199 1.7.198 1.7.197 1.7.196 1.7.194 1.7.193 1.7.192 1.7.191 1.7.190 1.7.189 1.7.187 1.7.186 1.7.185 1.7.184 1.7.183 1.7.182 1.7.181 1.7.180 1.7.179 1.7.178 1.7.177 1.7.176 1.7.175 1.7.174 1.7.173 1.7.172 1.7.171 1.7.170 1.7.169 1.7.168 1.7.167 1.7.166 1.7.165 1.7.164 1.7.162 1.7.161 1.7.160 1.7.159 1.7.157 1.7.156 1.7.155 1.7.154 1.7.153 1.7.152 1.7.151 1.7.150 1.7.149 1.7.146 1.7.145 1.7.144 1.7.143 1.7.138 1.7.133 1.7.132 1.7.131 1.7.130 1.7.128 1.7.126 1.7.125 1.7.121 1.7.120 1.7.119 1.7.118 1.7.117 1.7.116 1.7.115 1.7.114 1.7.113 1.7.112 1.7.111 1.7.110 1.7.109 1.7.108 1.7.107 1.7.106 1.7.105 1.7.104 1.7.103 1.7.102 1.7.101 1.7.100 1.7.99 1.7.98 1.7.97 1.7.96 1.7.95 1.7.94 1.7.93 1.7.92 1.7.91 1.7.90 1.7.89 1.7.88 1.7.87 1.7.86 1.7.85 1.7.84 1.7.83 1.7.82 1.7.81 1.7.80 1.7.79 1.7.78 1.7.77 1.7.76 1.7.75 1.7.74 1.7.71 1.7.70 1.7.69 1.7.66 1.7.65 1.7.64 1.7.63 1.7.62 1.7.61 1.7.59 1.7.58 1.7.57 1.7.56 1.7.55 1.7.54 1.7.53 1.7.52 1.7.51 1.7.49 1.7.44 1.7.43 1.7.42 1.7.41 1.7.39 1.7.38 1.7.37 1.7.36 1.7.34 1.7.33 1.7.31 1.7.30 1.7.29 1.7.28 1.7.27 1.7.26 1.7.25 1.7.24 1.7.23 1.7.22 1.7.21 1.7.20 1.7.19 1.7.18 1.7.17 1.7.16 1.7.15 1.7.14 1.7.13 1.7.12 1.7.11 1.7.10 1.7.9 1.7.8 1.7.7 1.7.6 1.7.5 1.7.4 1.7.3 1.7.2 1.7.1 1.7.0 1.6.20 1.6.19 1.6.18 1.6.17 1.6.16 1.6.15 1.6.14 1.6.13 1.6.12 1.6.11 1.6.10 1.6.9 1.6.8 1.6.7 1.6.6 1.6.5 1.6.4 1.6.3 1.5.2 1.5.1 1.5.0 1.4.9 1.4.8 1.4.7 1.4.6 1.4.5 1.4.4 1.4.3 1.4.2 1.4.1 1.4.0 1.3.2 1.3.1 1.3.0 1.2.10 1.2.9 1.2.8 1.2.7 1.2.5 1.2.4 1.2.2 1.2.1 1.2.0 1.1.0 1.0.0

A foundation for building Elixir Phoenix apps — SaaS, social networks, ERP systems, marketplaces, and more

Current section

Files

Jump to
phoenix_kit lib phoenix_kit install browser_pipeline_integration.ex
Raw

lib/phoenix_kit/install/browser_pipeline_integration.ex

defmodule PhoenixKit.Install.BrowserPipelineIntegration do
use PhoenixKit.Install.IgniterCompat
@moduledoc """
Handles automatic integration of PhoenixKit plugs into the browser pipeline.
This module provides functionality to:
- Add PhoenixKitWeb.Plugs.Integration to the :browser pipeline automatically
- Handle cases where the plug already exists (idempotent)
- Provide clear error messages if browser pipeline is not found
## Extensibility
The Integration plug acts as a single entry point for all PhoenixKit plugs.
New features can be added to the Integration plug without modifying the
parent application's pipeline.
"""
alias Igniter.Libs.Phoenix, as: IgniterPhoenix
alias Igniter.Project.Module, as: IgniterModule
@doc """
Adds the PhoenixKit Integration plug to the :browser pipeline in the Phoenix router.
This plug coordinates all PhoenixKit features that need to run in the browser pipeline,
including maintenance mode, and any future features.
## Parameters
- `igniter` - The igniter context
## Returns
Updated igniter with integration plug added or warning if router/pipeline not found.
"""
def add_integration_to_browser_pipeline(igniter) do
case IgniterPhoenix.select_router(igniter) do
{igniter, nil} ->
# No router found, add warning
Igniter.add_warning(
igniter,
"""
Could not find router to add PhoenixKit Integration plug.
Please add the following line to your :browser pipeline manually:
plug PhoenixKitWeb.Plugs.Integration
"""
)
{igniter, router_module} ->
# Check if plug already exists before adding
if plug_already_exists?(igniter, router_module) do
igniter
else
# Use Igniter's built-in append_to_pipeline function
IgniterPhoenix.append_to_pipeline(
igniter,
:browser,
"plug PhoenixKitWeb.Plugs.Integration",
router: router_module
)
end
end
end
# Check if Integration plug already exists in the router
defp plug_already_exists?(igniter, router_module) do
case IgniterModule.find_module(igniter, router_module) do
{:ok, {_igniter, source, _zipper}} ->
content = Rewrite.Source.get(source, :content)
String.contains?(content, "PhoenixKitWeb.Plugs.Integration")
{:error, _igniter} ->
false
end
end
end