diff options
author | colin <colin@cicadas.surf> | 2024-06-19 10:49:07 -0700 |
---|---|---|
committer | colin <colin@cicadas.surf> | 2024-06-19 10:49:07 -0700 |
commit | 9dbf54efdf2a62565333e58d63bcbfb804ab9442 (patch) | |
tree | 502189d0d6f46fae9d980da3e26b6f70954d0b5d | |
parent | 6e131b7c9c57c8cdf67ed59feafc6c8b56919e8f (diff) |
-rw-r--r-- | site/invites.lisp | 42 | ||||
-rw-r--r-- | site/login.lisp | 39 |
2 files changed, 42 insertions, 39 deletions
diff --git a/site/invites.lisp b/site/invites.lisp index b463a4d..dc1f31c 100644 --- a/site/invites.lisp +++ b/site/invites.lisp @@ -9,6 +9,44 @@ (make-instance 'invite :maker user :uses-remaining 1)) (wknd:endpoint-redirect 'home.html))) -(defun invite-validp (invite) +(defun invite-valid-p (invite) (let ((uses (uses-remaining invite))) - (or (< 0 uses) (null uses)))) + (or (plusp uses) (null uses)))) + + +(wknd:defendpoint create-new-account + :post :to "new-account" + :parameters + (username string) + (password string) + (password2 string) + (invite-code string) + :properties + (invite invite) + :authenticate (and + (equal password password2) + (setf invite (object-with-key invite-code))) + :authorize (invite-validp invite) + :handle (progn + (db:with-transaction () + (when (uses-remaining invite) + (decf (uses-remaining invite)) + (when (zerop (uses-remaining invite)) + (db:delete-object invite))) + (let ((user (make-instance 'user :name username))) + (setf (user-pwhash user) (hash-string password (user-pwsalt user))))) + (wknd:endpoint-redirect 'login.html))) + +(wknd:defendpoint new-account.html + :get :route "new-account" + :returns "text/html" + :handle (new-account-page)) + +(defun new-account-page () + (page (:title "V A M P I R E ~ JOIN") + (:form :method "POST" :action (wknd:route-to 'create-new-account) + (:input :placeholder "Invite Code" :name "invite-code")(:br) + (:input :placeholder "Username" :name "username")(:br) + (:input :placeholder "Password" :name "password" :type "password")(:br) + (:input :placeholder "Repeat Password" :name "password2" :type "password")(:br) + (:button :type "submit" "Become Undead")))) diff --git a/site/login.lisp b/site/login.lisp index 04bf643..3f7e8fa 100644 --- a/site/login.lisp +++ b/site/login.lisp @@ -23,38 +23,10 @@ session := (db:with-transaction () (make-instance 'session :user found-user)) (wknd:set-cookie +session-cookie+ :value (key session)))) -(wknd:defendpoint new-account.html - :get :route "new-account" - :returns "text/html" - :handle (new-account-page)) - -(wknd:defendpoint create-new-account - :post :to "new-account" - :parameters - (username string) - (password string) - (password2 string) - (invite-code string) - :properties - (invite invite) - :authenticate (and - (equal password password2) - (setf invite (object-with-key invite-code))) - :authorize (invite-validp invite) - :handle (progn - (db:with-transaction () - (when (uses-remaining invite) - (decf (uses-remaining invite)) - (when (zerop (uses-remaining invite)) - (db:delete-object invite))) - (let ((user (make-instance 'user :name username))) - (setf (user-pwhash user) (hash-string password (user-pwsalt user))))) - (wknd:endpoint-redirect 'login.html))) - (defun login-page () (page (:title "V A M P I R E ~ LOGIN") (:div (:h1 "I vant to suck your blood") - (:form :method "POST" :action "/login" + (:form :method "POST" :action (wknd:route-to 'login-user) (:input :placeholder "Name" :name "name") (:br) (:input :placeholder "Password" :type "password" :name "password") @@ -63,13 +35,6 @@ (:a :href (wknd:route-to 'new-account.html) "Become Undead")))) -(defun new-account-page () - (page (:title "V A M P I R E ~ JOIN") - (:form :method "POST" :action "/new-account" - (:input :placeholder "Invite Code" :name "invite-code")(:br) - (:input :placeholder "Username" :name "username")(:br) - (:input :placeholder "Password" :name "password" :type "password")(:br) - (:input :placeholder "Repeat Password" :name "password2" :type "password")(:br) - (:button :type "submit" "Become Undead")))) + |