HGRC Quarry Fossil Service
Simple tools for lasting software

Infrastructure as a Service / Nemoptera

A solid foundation to fork, tweak, and enhance.

Public | Owner: Infrastructure as a Service | Default branch: trunk | Last update: 2026-11-08 16:13

Artifact 9781f4bc4ff61357bd1ce87d7e7745b18591bf7cfd5bd3b8e8105e207d5df502:


(defmodule nemoptera_login
  (export all))

(defun show (req)
  (cond
    ((not (nemoptera_setup:installed?)) (nemoptera_http:redirect "/setup"))
    ((nemoptera_public:logged-in? req) (nemoptera_http:redirect "/admin"))
    ('true (nemoptera_http:html 200 (page "")))))

(defun save (req)
  (if (nemoptera_setup:installed?)
      (case (nemoptera_auth:login (nemoptera_http:param req "username")
                                 (nemoptera_http:param req "password"))
        (`#(ok ,value) (nemoptera_http:redirect-cookie req "/admin" value (nemoptera_auth:ttl-seconds)))
        (`#(error ,message) (nemoptera_http:html 401 (page message))))
      (nemoptera_http:redirect "/setup")))

(defun logout (req)
  (nemoptera_http:redirect-cookie req "/" "" 0))

(defun page (message)
  (nemoptera_ui:render "Login" 'login 'public 'false
                      (list "<h1 class=\"page\">Login</h1>"
                            "<p>Sign in to administer this site. Repository login stays inside each Fossil repository.</p>"
                            (if (=:= "" message) "" (list "<p class=\"error\">" (nemoptera_ui:escape message) "</p>"))
                            "<form method=\"post\" action=\"/login\">"
                            "<label for=\"username\">Username</label>"
                            "<input id=\"username\" name=\"username\" type=\"text\" autocomplete=\"username\" required>"
                            "<label for=\"password\">Password</label>"
                            "<input id=\"password\" name=\"password\" type=\"password\" autocomplete=\"current-password\" required>"
                            "<p class=\"actions\"><button type=\"submit\">Login</button></p>"
                            "</form>")))

Clone

You can clone this repository with the following command:

fossil clone https://hgrc.dev/IaaS/Nemoptera Nemoptera.fossil

Contribute

The best way to contribute is through e-mail. See the project documentation for more details.