/ src / auth.lisp
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