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

Loading…
Cancel
Save