auth.lisp
1 (in-package :ami) 2 3 4 (defmacro define-auth (&body options) 5 (let ((user-model-name (intern "USER" *package*))) 6 `(progn 7 (define-model ,user-model-name () 8 ((email :email :unique) 9 (password :password) 10 (session-token :text) 11 (csrf-token :text))) 12 13 (defun register (email password) 14 (let* ((hashed-pwd (bcrypt:make-password password)) 15 (encoded-pwd (bcrypt:encode hashed-pwd))))) 16 17 (defun login (email password) 18 (aif (ami::find-model ,user-model-name :email email) 19 (bcrypt:password= password 20 (user-password it)) 21 nil))))) 22