diff --git a/asteroid.lisp b/asteroid.lisp index bdd673e..6708dc8 100644 --- a/asteroid.lisp +++ b/asteroid.lisp @@ -16,8 +16,11 @@ ;; configuration logic. Probably using 'ubiquity (defparameter *server-port* 8080) (defparameter *music-library-path* - (merge-pathnames "music/library/" - (asdf:system-source-directory :asteroid))) + (or (uiop:getenv "MUSIC_LIBRARY_PATH") + ;; Default to /app/music/ for production Docker, but check if music/library/ exists for local dev + (if (probe-file (merge-pathnames "music/library/" (asdf:system-source-directory :asteroid))) + (merge-pathnames "music/library/" (asdf:system-source-directory :asteroid)) + "/app/music/"))) (defparameter *supported-formats* '("mp3" "flac" "ogg" "wav")) (defparameter *stream-base-url* "http://localhost:8000") diff --git a/auth-routes.lisp b/auth-routes.lisp index 3095b9a..559d99b 100644 --- a/auth-routes.lisp +++ b/auth-routes.lisp @@ -127,7 +127,7 @@ (error 'authentication-error :message "Not authenticated")) ;; Verify current password - (unless (verify-user-credentials username current-password) + (unless (authenticate-user username current-password) (error 'authentication-error :message "Current password is incorrect")) ;; Update password diff --git a/conditions.lisp b/conditions.lisp index f16464a..d010aa6 100644 --- a/conditions.lisp +++ b/conditions.lisp @@ -109,39 +109,47 @@ (not-found-error (e) (api-output `(("status" . "error") ("message" . ,(error-message e))) + :message (error-message e) :status 404)) (authentication-error (e) (api-output `(("status" . "error") ("message" . ,(error-message e))) + :message (error-message e) :status 401)) (authorization-error (e) (api-output `(("status" . "error") ("message" . ,(error-message e))) + :message (error-message e) :status 403)) (validation-error (e) (api-output `(("status" . "error") ("message" . ,(error-message e))) + :message (error-message e) :status 400)) (database-error (e) (format t "Database error: ~a~%" e) (api-output `(("status" . "error") ("message" . "Database operation failed")) + :message "Database operation failed" :status 500)) (asteroid-stream-error (e) (format t "Stream error: ~a~%" e) (api-output `(("status" . "error") ("message" . "Stream operation failed")) + :message "Stream operation failed" :status 500)) (asteroid-error (e) (format t "Asteroid error: ~a~%" e) (api-output `(("status" . "error") ("message" . ,(error-message e))) + :message (error-message e) :status 500)) (error (e) (format t "Unexpected error: ~a~%" e) (api-output `(("status" . "error") ("message" . "An unexpected error occurred")) - :status 500)))) + :status 500 + :message "An unexpected error occurred")))) (defmacro with-db-error-handling (operation &body body) "Wrap database operations with error handling.