mirror of
https://github.com/basecamp/once-campfire.git
synced 2026-10-30 01:04:05 +09:00
Disable libvips unfuzzed operations (#226)
and add test coverage for (un)supported file types. The avatar and logo variants move into the models and return nil for content types that are no longer variable, so the controllers fall back to the initials avatar and stock logo icon instead of raising `ActiveStorage::InvariableError`.
This commit is contained in:
1 parent
69e8cd7885
commit
b065b40a34
11 files changed
+198
-14
No files matched your search
@@ -8,9 +8,8 @@ class Accounts::LogosController < ApplicationController
|
||||
if stale?(etag: Current.account)
|
||||
expires_in 5.minutes, public: true, stale_while_revalidate: 1.week
|
||||
|
||||
if Current.account&.logo&.attached?
|
||||
logo = Current.account.logo.variant(logo_variant).processed
|
||||
send_png_file ActiveStorage::Blob.service.path_for(logo.key)
|
||||
if (logo_variant = Current.account&.logo_variant(logo_size))
|
||||
send_png_file ActiveStorage::Blob.service.path_for(logo_variant.key)
|
||||
else
|
||||
send_stock_icon
|
||||
end
|
||||
@@ -23,9 +22,6 @@ class Accounts::LogosController < ApplicationController
|
||||
end
|
||||
|
||||
private
|
||||
LARGE_SQUARE_PNG_VARIANT = { resize_to_limit: [ 512, 512 ], format: :png }
|
||||
SMALL_SQUARE_PNG_VARIANT = { resize_to_limit: [ 192, 192 ], format: :png }
|
||||
|
||||
def send_png_file(path)
|
||||
send_file path, content_type: "image/png", disposition: :inline
|
||||
end
|
||||
@@ -38,8 +34,8 @@ class Accounts::LogosController < ApplicationController
|
||||
end
|
||||
end
|
||||
|
||||
def logo_variant
|
||||
small_logo? ? SMALL_SQUARE_PNG_VARIANT : LARGE_SQUARE_PNG_VARIANT
|
||||
def logo_size
|
||||
small_logo? ? :small : :large
|
||||
end
|
||||
|
||||
def small_logo?
|
||||
|
||||
Reference in new issue
Block a user