diff options
author | Colin Okay <colin@cicadas.surf> | 2022-10-27 13:13:21 -0500 |
---|---|---|
committer | Colin Okay <colin@cicadas.surf> | 2022-10-27 13:13:21 -0500 |
commit | 75926d0ed50473efc106fa83231c862063d0f0c3 (patch) | |
tree | b0f2c20d47670868a7b8524c69a8ed499b64de3d | |
parent | fda05f8ce638987d332c8aff4043afa74e52523f (diff) |
Add: logging in with pw
-rw-r--r-- | login.lisp | 12 | ||||
-rw-r--r-- | model.lisp | 10 | ||||
-rw-r--r-- | new-account.lisp | 12 | ||||
-rw-r--r-- | session.lisp | 4 |
4 files changed, 26 insertions, 12 deletions
@@ -17,5 +17,15 @@ (:p () (:a (:link "/new-account" :content "Create an account"))))) (setf (place-holder name-input) "Name" - (place-holder pw-input) "Password"))) + (place-holder pw-input) "Password") + (set-on-click + btn + (thunk* + (let ((user + (login-user (value name-input) (value pw-input)))) + (if user + (let ((session (make-session user))) + (setf (session-key (window body)) (key session) + (url (location body)) "/home")) + (alert (window body) "Error logging in."))))))) @@ -88,11 +88,11 @@ (when (uses-remaining invite) (decf (uses-remaining invite)) (unless (plusp (uses-remaining invite)) - (bknr.datastore:delete-object invite)) - (let ((user (make-instance 'user :name username))) - (setf (user-pwhash user) - (hash-string pw (user-pwsalt user))) - user))))) + (bknr.datastore:delete-object invite))) + (let ((user (make-instance 'user :name username))) + (setf (user-pwhash user) + (hash-string pw (user-pwsalt user))) + user)))) (defun append-track (pl tr) (with-transaction () diff --git a/new-account.lisp b/new-account.lisp index 93cf122..b0ccae7 100644 --- a/new-account.lisp +++ b/new-account.lisp @@ -52,9 +52,9 @@ (set-on-click submit (thunk* - (if (loop for status in (list pw-confirm-status name-status invite-status) - always (string-equal "✔" (value status))) - (if (use-invite-with-code (value invite) (value name) (value pw)) - (setf (url (location body)) "/login") - (alert (window body) "An error occurred while making your account.")) - (alert (window body) "Plase double check your inputs.")))))) + (if (loop for status in (list pw-confirm-status name-status invite-status) + always (string-equal "✔" (text status))) + (if (use-invite-with-code (value invite) (value name) (value pw)) + (setf (url (location body)) "/login") + (alert (window body) "An error occurred while making your account.")) + (alert (window body) "Plase double check your inputs.")))))) diff --git a/session.lisp b/session.lisp index 0ad10c2..6d36bec 100644 --- a/session.lisp +++ b/session.lisp @@ -7,6 +7,10 @@ (defclass/bknr session (keyed) ((user :std (error "Sessions must be associated with users.")))) +(defun make-session (user) + (with-transaction () + (make-instance 'session :user user))) + ;;; SESSION PARAMETER KEYS (defparameter +session-key+ "vampire-session-key" |