aboutsummaryrefslogtreecommitdiff
path: root/shardweb/lib/router.ex
diff options
context:
space:
mode:
Diffstat (limited to 'shardweb/lib/router.ex')
-rw-r--r--shardweb/lib/router.ex56
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