Skip to content

Commit

Permalink
Add router with session cookie
Browse files Browse the repository at this point in the history
  • Loading branch information
leo-laudouard-easymile committed Nov 9, 2023
1 parent f3fff4e commit 35d2bb3
Show file tree
Hide file tree
Showing 4 changed files with 64 additions and 17 deletions.
38 changes: 38 additions & 0 deletions lib/router.ex
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
defmodule Testo.Router do
use Plug.Router

plug(:match)

plug(
Plug.Session,
store: :cookie,
key: "session_keyyyyyyyyyyyyyyyyyyyysession_keyyyyyyyyyyyyyyyyyyyyyyyy",
signing_salt: "signing_salt",
encryption_salt: "encryption_salt",
key_length: 64
)

plug(:put_secret_key_base)
plug(:fetch_connection_session)
plug(:dispatch)

defp put_secret_key_base(conn, _) do
put_in(conn.secret_key_base, "secret_key_base_secret_key_base_secret_key_base_secret_key_base_secret_key_base_secret_key_base_")
end

defp fetch_connection_session(conn, _) do
fetch_session(conn)
end

get "/testo" do

conn
|> put_session(:flash, {:toto, :titi})
|> put_resp_header("location", "/elsewhere")
|> resp(302, "You are being redirected.")
end
get "/elsewhere" do
{:toto, :titi} = get_session(conn, :flash)
send_resp(conn, 200, "")
end
end
27 changes: 12 additions & 15 deletions lib/testo.ex
Original file line number Diff line number Diff line change
@@ -1,18 +1,15 @@
defmodule Testo do
@moduledoc """
Documentation for `Testo`.
"""

@doc """
Hello world.
## Examples
iex> Testo.hello()
:world
"""
def hello do
:world
use Application

def start(_type, _args) do
# List all child processes to be supervised
children = [
{Plug.Cowboy, scheme: :http, plug: Testo.Router, port: 4040}
]

# See https://hexdocs.pm/elixir/Supervisor.html
# for other strategies and supported options
opts = [strategy: :one_for_one, name: MyApp.Supervisor]
Supervisor.start_link(children, opts)
end
end
5 changes: 3 additions & 2 deletions mix.exs
Original file line number Diff line number Diff line change
Expand Up @@ -14,15 +14,16 @@ defmodule Testo.MixProject do
# Run "mix help compile.app" to learn about applications.
def application do
[
mod: {Testo, []},
extra_applications: [:logger]
]
end

# Run "mix help deps" to learn about dependencies.
defp deps do
[
# {:dep_from_hexpm, "~> 0.3.0"},
# {:dep_from_git, git: "https://github.com/elixir-lang/my_dep.git", tag: "0.1.0"}
{:plug, "~> 1.15"},
{:plug_cowboy, "~> 2.0"}
]
end
end
11 changes: 11 additions & 0 deletions mix.lock
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
%{
"cowboy": {:hex, :cowboy, "2.10.0", "ff9ffeff91dae4ae270dd975642997afe2a1179d94b1887863e43f681a203e26", [:make, :rebar3], [{:cowlib, "2.12.1", [hex: :cowlib, repo: "hexpm", optional: false]}, {:ranch, "1.8.0", [hex: :ranch, repo: "hexpm", optional: false]}], "hexpm", "3afdccb7183cc6f143cb14d3cf51fa00e53db9ec80cdcd525482f5e99bc41d6b"},
"cowboy_telemetry": {:hex, :cowboy_telemetry, "0.4.0", "f239f68b588efa7707abce16a84d0d2acf3a0f50571f8bb7f56a15865aae820c", [:rebar3], [{:cowboy, "~> 2.7", [hex: :cowboy, repo: "hexpm", optional: false]}, {:telemetry, "~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "7d98bac1ee4565d31b62d59f8823dfd8356a169e7fcbb83831b8a5397404c9de"},
"cowlib": {:hex, :cowlib, "2.12.1", "a9fa9a625f1d2025fe6b462cb865881329b5caff8f1854d1cbc9f9533f00e1e1", [:make, :rebar3], [], "hexpm", "163b73f6367a7341b33c794c4e88e7dbfe6498ac42dcd69ef44c5bc5507c8db0"},
"mime": {:hex, :mime, "2.0.5", "dc34c8efd439abe6ae0343edbb8556f4d63f178594894720607772a041b04b02", [:mix], [], "hexpm", "da0d64a365c45bc9935cc5c8a7fc5e49a0e0f9932a761c55d6c52b142780a05c"},
"plug": {:hex, :plug, "1.15.1", "b7efd81c1a1286f13efb3f769de343236bd8b7d23b4a9f40d3002fc39ad8f74c", [:mix], [{:mime, "~> 1.0 or ~> 2.0", [hex: :mime, repo: "hexpm", optional: false]}, {:plug_crypto, "~> 1.1.1 or ~> 1.2 or ~> 2.0", [hex: :plug_crypto, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4.3 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "459497bd94d041d98d948054ec6c0b76feacd28eec38b219ca04c0de13c79d30"},
"plug_cowboy": {:hex, :plug_cowboy, "2.6.1", "9a3bbfceeb65eff5f39dab529e5cd79137ac36e913c02067dba3963a26efe9b2", [:mix], [{:cowboy, "~> 2.7", [hex: :cowboy, repo: "hexpm", optional: false]}, {:cowboy_telemetry, "~> 0.3", [hex: :cowboy_telemetry, repo: "hexpm", optional: false]}, {:plug, "~> 1.14", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "de36e1a21f451a18b790f37765db198075c25875c64834bcc82d90b309eb6613"},
"plug_crypto": {:hex, :plug_crypto, "2.0.0", "77515cc10af06645abbfb5e6ad7a3e9714f805ae118fa1a70205f80d2d70fe73", [:mix], [], "hexpm", "53695bae57cc4e54566d993eb01074e4d894b65a3766f1c43e2c61a1b0f45ea9"},
"ranch": {:hex, :ranch, "1.8.0", "8c7a100a139fd57f17327b6413e4167ac559fbc04ca7448e9be9057311597a1d", [:make, :rebar3], [], "hexpm", "49fbcfd3682fab1f5d109351b61257676da1a2fdbe295904176d5e521a2ddfe5"},
"telemetry": {:hex, :telemetry, "1.2.1", "68fdfe8d8f05a8428483a97d7aab2f268aaff24b49e0f599faa091f1d4e7f61c", [:rebar3], [], "hexpm", "dad9ce9d8effc621708f99eac538ef1cbe05d6a874dd741de2e689c47feafed5"},
}

0 comments on commit 35d2bb3

Please sign in to comment.