src/routes/user-editor.lisp
(in-package :murja.routes.user-editor)
;; TODO redo with spinneret
;; (defun can-save-user? (user-id old-password)
;; (and *user*
;; (equalp (users:user-id *user*)
;; user-id)
;; ;; (user-db:search-with-id-and-pwd* user-id (sha-512 old-password))
;; ))
(defmacro patch (map symbol)
(let ((symbol-str (str:downcase (format nil "~s" symbol))))
`(setf (gethash ,symbol-str ,map) ,symbol)))
;; (defroute submit-user ("/api/user/submit" :method :post
;; :decorators (@transaction
;; @authenticated
;; @json)) ()
;; (bind-json (nickname username img_location id old-password) (new-password) (hunchentoot:raw-post-data :force-text t)
;; (if (can-save-user? id old-password)
;; (let* ((user (user-db:get-user-by-id id)))
;; (patch user nickname)
;; (patch user username)
;; (when (and new-password
;; (not (string= new-password "")))
;; (setf (gethash "password" user)
;; (sha-512 new-password)))
;; (user-db:patch-user user)
;; (setf (hunchentoot:return-code*) 204)
;; (multiple-value-bind (session-key max-age) (login:get-session-key username)
;; (login:set-session-cookies username session-key max-age (settings:get-settings))
;; (murja.session:set-session-value :logged-in-username username))
;; "")
;; (progn
;; (log:warn "can-save-user? failed due to ~a" (cond
;; ((not *user*) "*user* failing")
;; ((not (equalp (gethash "id" *user*)
;; id))
;; (format nil "id ~a != ~a" (gethash "id" *user*)
;; id))
;; ((not (user-db:search-with-id-and-pwd* id (sha-512 old-password)))
;; "password lookup failing")))
;; (setf (hunchentoot:return-code*) 500)
;; ""))))
;; (defroute submit-profile-pic ("/api/pictures/profile" :method :post
;; :decorators (@transaction
;; @authenticated
;; @json))
;; (&post file)
;; (with-keys ("id" "username") *user*
;; (destructuring-bind (tmp-file filename mime) file
;; (when (str:starts-with? "image/" mime)
;; (log:info "Changing profile pic of ~a to ~a" username filename)
;; (let* ((bytes (lisp-fixup:slurp-bytes tmp-file))
;; (result (insert-media filename bytes))
;; (img-id (caar result)))
;; (user-db:patch-user-img* (format nil "/api/pictures/~a" img-id) id)
;; (stringify (hash (:id img-id))))))))