diff options
Diffstat (limited to 'shardweb/lib/router.ex')
-rw-r--r-- | shardweb/lib/router.ex | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/shardweb/lib/router.ex b/shardweb/lib/router.ex new file mode 100644 index 0000000..43de0da --- /dev/null +++ b/shardweb/lib/router.ex @@ -0,0 +1,56 @@ +defmodule ShardWeb.Router do + use ShardWeb, :router + + pipeline :browser do + plug :accepts, ["html"] + plug :fetch_session + plug :fetch_flash + plug :protect_from_forgery + plug :put_secure_browser_headers + plug Plug.Parsers, parsers: [:urlencoded] + plug :check_pk + end + + pipeline :api do + plug :accepts, ["json"] + end + + scope "/", ShardWeb do + pipe_through :browser # Use the default browser stack + + get "/", PageController, :peer_list + post "/peer/add", PageController, :add_peer + get "/dashboard", PageController, :shard_list + + get "/people", IdentityController, :list + get "/identity", IdentityController, :self + post "/identity", IdentityController, :update + post "/identity/switch", IdentityController, :switch + post "/identity/create", IdentityController, :create + + get "/chat/:room", ChatController, :chat + get "/pm/:pk", ChatController, :privchat + end + + # Other scopes may use custom stacks. + # scope "/api", ShardWeb do + # pipe_through :api + # end + + def check_pk(conn, _kv) do + pk1 = get_session(conn, :pk) + {conn, pk} = if pk1 == nil || not Shard.Keys.have_sk? pk1 do + pk = Shard.Keys.get_any_identity + conn = put_session(conn, :pk, pk) + {conn, pk} + else + {conn, pk1} + end + nick = SApp.Identity.get_nick pk + conn + |> assign(:pk, pk) + |> assign(:nick, nick) + |> PhoenixGon.Controller.put_gon(pk: (pk|>Base.encode16)) + end + +end |