diff --git a/app/demo/etc/config.lisp b/app/demo/etc/config.lisp index df6ec88..2a8892d 100644 --- a/app/demo/etc/config.lisp +++ b/app/demo/etc/config.lisp @@ -19,3 +19,4 @@ ,(util:path-from-string (config:from-env :docroot "/var/www/html/"))))) (config:add-action '(:test :data) #'core:echo) (config:add-action '(:auth :login) #'core:echo) +(config:add-action '(:auth :show :form :login) #'auth:login-form) diff --git a/app/demo/main.lisp b/app/demo/main.lisp index b202714..0ccb669 100644 --- a/app/demo/main.lisp +++ b/app/demo/main.lisp @@ -2,7 +2,8 @@ (defpackage :scopes/app/demo (:use :common-lisp) - (:local-nicknames (:config :scopes/config) + (:local-nicknames (:auth :scopes-auth/web) + (:config :scopes/config) (:cs-hx :scopes/frontend/cs-hx) (:core :scopes/core) (:forge :scopes/forge) diff --git a/app/demo/scopes-demo.asd b/app/demo/scopes-demo.asd index 664916b..ab8608a 100644 --- a/app/demo/scopes-demo.asd +++ b/app/demo/scopes-demo.asd @@ -6,7 +6,7 @@ :version "0.0.1" :homepage "https://www.cyberconcepts.org" :description "" - :depends-on (:scopes) + :depends-on (:scopes :scopes-auth) :components ((:file "main")) :build-operation "program-op" :build-pathname "bin/demo" diff --git a/core/core.lisp b/core/core.lisp index 3bc8c1c..dc72449 100644 --- a/core/core.lisp +++ b/core/core.lisp @@ -59,12 +59,6 @@ (defvar *root* nil) -;;; check / fix: -(defvar *quit-queue* (lpq:make-queue :fixed-capacity 1)) -(defun quit-handler (sig) - (format t "~%quit-handler: got signal ~s~%" sig) - (lpq:push-queue sig *quit-queue*)) - (defclass base-context () ((actions :accessor actions :initform nil))) @@ -104,7 +98,6 @@ (defun setup-services (&optional (cfg config:*root*)) (setf *root* (make-instance 'root-service :config cfg)) - ;(setf (trivial-signal:signal-handler :int) #'quit-handler) (dolist (c (reverse (config:children cfg))) (add-service *root* c))) diff --git a/lib/auth/web.lisp b/lib/auth/web.lisp index 25bf71c..2ee1f2b 100644 --- a/lib/auth/web.lisp +++ b/lib/auth/web.lisp @@ -6,13 +6,20 @@ (:config :scopes/config) (:core :scopes/core) (:jwt :scopes/web/jwt) + (:message :scopes/core/message) (:server :scopes/web/server) (:shape :scopes/shape) (:util :scopes/util)) - (:export #:login)) + (:export #:login #:login-form)) (in-package :scopes-auth/web) +(defun login-form (ctx msg) + (let ((msg (message:create '(:html :render :form :login) + :data '(:fields (:login :password) :button "Login") + :sender (message:sender msg)))) + (core:echo ctx msg))) + (defun login (ctx msg) (let* ((prc (auth:login (shape:data msg)))) ;(jwt:create ...) diff --git a/scopes-core.asd b/scopes-core.asd index eb66653..58c4abe 100644 --- a/scopes-core.asd +++ b/scopes-core.asd @@ -8,7 +8,7 @@ :description "Core packages of the scopes project." :depends-on (:alexandria :cl-dotenv :com.inuoe.jzon :flexi-streams :ironclad :local-time :log4cl - :lparallel :qbase64 :serapeum :str :trivial-signal) + :lparallel :qbase64 :serapeum :str) :components ((:file "config" :depends-on ("util/util")) (:file "core/core" :depends-on ("core/message" "config" diff --git a/web/server.lisp b/web/server.lisp index 2318337..9185ad3 100644 --- a/web/server.lisp +++ b/web/server.lisp @@ -53,6 +53,7 @@ :address (address cfg) ;:server :woo :debug nil + :use-default-middleware nil :silent t)) (util:lgi (port cfg)) ctx)) @@ -71,9 +72,9 @@ #'(lambda () (message-handler ctx env))) (defun match (pattern path) - (dolist (e pattern) - (unless (string= e (pop path)) - (return-from match nil))) + (dolist (e pattern) + (unless (string= e (pop path)) + (return-from match nil))) t) (defun fileserver (ctx env &key doc-root)