Browse Source

remove single file upload route and refactor multi-upload route.

stable
Craig Oates 2 years ago
parent
commit
4156b0eee0
  1. 98
      src/web.lisp

98
src/web.lisp

@ -741,8 +741,10 @@
(if (nera:get-storage-file :slug slug)
`(200 (:content-type
,(files::file-type-of
(nera:get-storage-file :slug slug)))
,(storage:open-binary-file "" "media" slug))
(nera:get-storage-file :slug slug)))
,(storage:open-binary-file
"" "media" (files::name-of
(nera:get-storage-file :slug slug))))
(on-exception *web* 404)))
(defroute ("/storage/thumb/archive/:slug" :method :GET) (&key slug)
@ -766,68 +768,46 @@
(progn (utils:set-alert "You are not logged in.")
(redirect "/login"))))
(defroute ("/storage/upload" :method :POST) ()
(destructuring-bind
(&key file-name storage-file authenticity-token &allow-other-keys)
(utils:request-params
(lack.request:request-body-parameters ningle:*request*))
(if (not (string= authenticity-token (auth:csrf-token)))
`(,+forbidden+ (:content-type "text/plain") ("Denied"))
(hermetic:auth
(:logged-in)
;; Authorised
(cond ((utils:string-is-nil-or-empty? (cadr storage-file))
(utils:set-alert "No file provided.")
(redirect "/storage/manage"))
((not (null (nera:get-storage-file :filename file-name)))
(utils:set-alert "File with that name already exists. File not saved.")
(redirect "/storage/manage"))
(t (storage:store-file "" "media" (utils:slugify file-name) storage-file)
(nera:add-storage-file file-name
(utils:slugify file-name)
(caddr storage-file))
(utils:create-thumbnail "media" (utils:slugify file-name))
(utils:set-alert "File uploaded.")
(redirect "/storage/manage")))
;; Not Authorised
(progn
(utils:set-alert "You are not authorised to view this page.")
(redirect "/login"))))))
(defroute ("/storage/multi-upload" :method :POST) ()
(destructuring-bind
(&key authenticity-token &allow-other-keys)
(utils:request-params
(lack.request:request-body-parameters ningle:*request*))
(if (not (string= authenticity-token (auth:csrf-token)))
`(,+forbidden+ (:content-type "text/plain") ("Denied"))
(let ((files (utils:separate-files-in-web-request
(lack.request:request-body-parameters ningle:*request*)
"STORAGE-FILES")))
(format t "[INFO] Files: ~a" (length files))
(hermetic:auth
(:logged-in)
;; Authorised
(cond ((utils:string-is-nil-or-empty? (caddr (car files)))
(utils:set-alert "No files provided.")
(redirect "/storage/manage"))
(t (loop :for item :in files :do
(storage:store-file
"" "media"
(utils:slugify (caddr item)) (cdr item))
(nera:add-storage-file (caddr item)
(utils:slugify (caddr item))
(cadddr item))
(utils:create-thumbnail "media" (utils:slugify (caddr item))))
(utils:set-alert "Multi-File upload complete.")
(redirect "/storage/manage")))
;; Not Authorised
(progn
(utils:set-alert "You are not authorised to view this page.")
(redirect "/login")))))))
(if (not (string= authenticity-token (auth:csrf-token)))
`(,+forbidden+ (:content-type "text/plain") ("Denied"))
(let ((files (utils:separate-files-in-web-request
(lack.request:request-body-parameters ningle:*request*)
"STORAGE-FILES")))
(hermetic:auth
(:logged-in)
;; Authorised
(cond ((utils:string-is-nil-or-empty? (caddr (car files)))
(utils:set-alert "No files provided.")
(redirect "/storage/manage"))
(t (loop
:for item :in files
:do (storage:store-file
"" "media" (utils:format-filename (caddr item)) (cdr item))
(nera:add-storage-file (caddr item)
(utils:slugify (caddr item))
(cadddr item))
(when (str:contains? "image" (caddr item) :ignore-case t)
(utils:create-thumbnail
"media" (utils:format-filename (caddr item)) nil)
(nera:add-storage-file
(format nil "thumbnail-~a" (caddr item))
(utils:slugify (format nil "thumbnail-~a" (caddr item)))
(cadddr item))))
(utils:set-alert "Multi-File upload complete.")
(redirect "/storage/manage")))
;; Not Authorised
(progn
(utils:set-alert "You are not authorised to view this page.")
(redirect "/login")))))))
(defroute ("/storage/rename/:slug" :method :POST) (&key slug)
(destructuring-bind

Loading…
Cancel
Save