From 68d30b9c81c4e099e0111fe0bbb33715dd572e8c Mon Sep 17 00:00:00 2001 From: Grant Shangreaux Date: Sun, 23 Jun 2024 16:42:34 -0500 Subject: [109] Add: logout action and some session endpoint refactor --- site/session.lisp | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 site/session.lisp (limited to 'site/session.lisp') diff --git a/site/session.lisp b/site/session.lisp new file mode 100644 index 0000000..342d6d0 --- /dev/null +++ b/site/session.lisp @@ -0,0 +1,32 @@ +(in-package #:vampire) + +(wknd:defendpoint session.create + :post :to "login" + :parameters + (name string) + (password string) + :properties + (user user) + :authenticate (authenticate-user-login name password) + :handle (wknd:endpoint-redirect 'home.html)) + +(defun authenticate-user-login (name password) + (do> + found-user :when= (user-with-name name) + (print found-user) + :when (equal (user-pwhash found-user) + (hash-string password (user-pwsalt found-user))) + session := (db:with-transaction () (make-instance 'session :user found-user)) + (print session) + (wknd:set-cookie +session-cookie+ :value (key session)))) + +(wknd:defendpoint session.destroy + :using user-known + :post :to "logout" + :handle (do> + session := (object-with-key (wknd:get-cookie +session-cookie+)) + (db:delete-object session) + (wknd:set-cookie +session-cookie+ :value nil) + (wknd:endpoint-redirect 'login.html))) + + -- cgit v1.2.3