[Initial admin/auth code clinton@unknownlamer.org**20081209044306] hunk ./beesknees.asd 12 - (:file "applications" :depends-on ("packages")) + (:file "authentication" :depends-on ("packages")) + (:file "applications" :depends-on ("packages" "authentication")) hunk ./beesknees.asd 17 + (:file "web-admin" :depends-on ("packages" "web-common")) hunk ./src/applications.lisp 12 +(defclass bee-admin-application (bee-application + secure-application-mixin) + ()) + +(defmethod application-find-user ((app bee-admin-application) username) + (bee-auth:find-user username)) + +(defmethod application-check-password ((app bee-admin-application) user pass) + (bee-auth:check-password user pass)) addfile ./src/authentication.lisp hunk ./src/authentication.lisp 1 - +(in-package :beesknees.auth) + +(defpclass user () + ((username :initarg :username :accessor username :index t) + (password :initarg :password :accessor password))) + +(defmethod (setf password) (new-password (user user)) + (setf (slot-value user 'password) (md5:md5sum-sequence new-password))) + +(defun create-user (name password) + (make-instance 'user + :username name + :password (md5:md5sum-sequence password))) + +(defun find-user (name) + (get-instance-by-value 'user 'username name)) + +(defun check-password (user-or-name password) + (let ((user (typecase user-or-name + (user user-or-name) + (t (find-user user-or-name))))) + (and user (equalp (md5:md5sum-sequence password) (password user))))) hunk ./src/packages.lisp 7 + #:bee-admin-application hunk ./src/packages.lisp 20 +(defpackage :beesknees.auth + (:use :common-lisp :elephant) + (:nicknames :bee-auth) + (:export :user :create-user :find-user :check-password :username :password)) + hunk ./src/packages.lisp 30 - (:use :cl :beesknees.web :ucw-core :ucw :org.unknownlamer.golgonooza.site-control) + (:use :cl :ucw-core :ucw + :beesknees.web + :org.unknownlamer.golgonooza.site-control + :org.unknownlamer.golgonooza.elephant) hunk ./src/site-control.lisp 29 + data-root "wwwroot/"))))) + (cons :backend + (make-instance 'bee-admin-application + :url-prefix "/admin/" + :static-roots + (list `("static/" + . ,(format nil "~A~A" addfile ./src/web-admin.lisp hunk ./src/web-admin.lisp 1 +(in-package :beesknees.web) +