diff options
Diffstat (limited to 'web/router.hoon')
-rw-r--r-- | web/router.hoon | 51 |
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] + -- |