summaryrefslogtreecommitdiff
path: root/web/router.hoon
diff options
context:
space:
mode:
Diffstat (limited to 'web/router.hoon')
-rw-r--r--web/router.hoon51
1 files changed, 44 insertions, 7 deletions
diff --git a/web/router.hoon b/web/router.hoon
index fdb6c43..f5fc388 100644
--- a/web/router.hoon
+++ b/web/router.hoon
@@ -1,9 +1,11 @@
/- sur=zodiac
/+ server, metamask, sr=sortug
-/= login-page /web/index
+/= login-page /web/login
+/= index-page /web/index
+/= sigil-html /web/sigil/sigil
|_ [=bowl:gall eyre-id=@ta req=inbound-request:eyre state=versioned-state:sur]
-
++* metalib ~(. metamask [sessions.state bowl])
++ session-timeout ~d300
++ session-cookie-string
|= [session=@uv extend=?]
@@ -81,21 +83,56 @@
[cookie headers.response-header.simple-payload]
%+ give-simple-payload:app:server eyre-id simple-payload
+++ validate-coki
+ =/ coki (get-header:http 'cookie' header-list.request.req)
+ ?~ coki ~
+ (validate-coki:metalib u.coki)
+++ login-ajax
+ =/ referer (get-header:http 'referer' header-list.request.req)
+ ~& referer=referer
+ ?~ referer .n
+ =/ parsed=(unit purl:eyre) (rush u.referer link:parsing:sr)
+ ?~ parsed .n
+ =/ =path q.q.u.parsed
+ ~& login-ajax=path
+ ?= [%zodiac %login ~] path
++ route
- =/ metalib ~(. metamask [sessions.state bowl])
=/ rl (parse-request-line:server url.request.req)
=/ sitepath=path /[(head site.rl)]
=/ pat=(pole knot) site.rl
- ?+ pat ebail
+ ?: ?=([%zodiac %login ~] pat) serve-login-page
+ ?: login-ajax (serve-unauthed pat)
+ =/ muser validate-coki
+ ?~ muser redirect-to-login
+ =. src.bowl u.muser
+ ?+ pat ebail
+ [%zodiac %logout *] (logout:metalib eyre-id (need (get-header:http 'cookie' header-list.request.req)))
+ [%zodiac ~] serve-root
+ :: [site=@t *] (send-response (handle-get-request header-list.request.req rl))
+ ==
+++ serve-unauthed |= pat=(pole knot)
+?+ pat ebail
[%zodiac %metamask rest=*] (serve-metamask-challenge:metalib eyre-id)
[%zodiac %auth rest=*] (process-metamask-auth:metalib eyre-id body.request.req)
- [%zodiac ~] (send-response (manx-payload (login-page bowl)))
- :: [site=@t *] (send-response (handle-get-request header-list.request.req rl))
- ==
+ [%zodiac %sigil point=@ ~] (serve-sigil point.pat)
+==
+++ redirect-to-login
+ (send-response (redirect:gen:server '/zodiac/login'))
+++ serve-root
+ (send-response (manx-payload (index-page bowl)))
+::
+++ serve-login-page (send-response (manx-payload (login-page bowl)))
+++ serve-sigil |= param=@t
+ =/ sip (slaw:parsing:sr %ud param)
+ ?~ sip ebail
+ =/ sigil-div (sigil-html u.sip)
+ (send-response (manx-payload sigil-div))
+
++ eyre-binding-card
|= =path
~& > adding-binding=[path dap.bowl]
[%pass /eyre/connect %arvo %e %connect [~ path] dap.bowl]
+
--