1
0
Fork 0
mirror of https://github.com/maybe-finance/maybe.git synced 2025-08-05 05:25:24 +02:00

Feature/profile image uploads (#687)

* Introduce ActiveStorage

* Add active storage related service gems

* Update storage.yml

* Install image processing gem
- sudo apt-get install libvips (required dependency)

* Set default active storage service

* Add profile image to user model

* Amend form to allow profile images to be saved, introduce stimulus controller.

* Purge image when form is blank

* Update markup/stimulus controller

* Add test for profile image uplaods

* Add profile image validation

* Use rails guide gem versions

* Use correct ERB syntax and make all storage options configurable

* Ensure form submits when user clears profile image

* Add profile image thumbnail method

* Extract profile image to a partial

* Updates env.example and storage.yml

* Fix bug with double form save

* Add profile image to the sidenav

* Update production config

* Fix ERB formatting

* normalize en.yml

* Handle non-square images

* Use pre-processing on thumbnail variant

* Resovle gemfile.lock issues

* Rubocop style changes

---------

Signed-off-by: Christian <47796704+crobbo@users.noreply.github.com>
Co-authored-by: Christian Robinson <christian@robbo.dev>
This commit is contained in:
Christian 2024-04-30 18:38:33 +01:00 committed by GitHub
parent 19ee773d9b
commit dc024d63b0
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
17 changed files with 349 additions and 54 deletions

View file

@ -31,7 +31,7 @@ Rails.application.configure do
# config.action_dispatch.x_sendfile_header = "X-Accel-Redirect" # for NGINX
# Store uploaded files on the local file system (see config/storage.yml for options).
config.active_storage.service = :local
config.active_storage.service = ENV.fetch("ACTIVE_STORAGE_SERVICE", "local").to_sym
# Mount Action Cable outside main process or domain.
# config.action_cable.mount_path = nil

View file

@ -106,4 +106,5 @@ en:
profile_title: Profile
save: Save
update:
file_size_error: File size must be less than 5MB
success: Profile updated successfully.

View file

@ -1,34 +1,25 @@
test:
service: Disk
root: <%= Rails.root.join("tmp/storage") %>
local:
service: Disk
root: <%= Rails.root.join("storage") %>
# Use bin/rails credentials:edit to set the AWS secrets (as aws:access_key_id|secret_access_key)
# amazon:
# service: S3
# access_key_id: <%= Rails.application.credentials.dig(:aws, :access_key_id) %>
# secret_access_key: <%= Rails.application.credentials.dig(:aws, :secret_access_key) %>
# region: us-east-1
# bucket: your_own_bucket-<%= Rails.env %>
test:
service: Disk
root: <%= Rails.root.join("tmp/storage") %>
# Remember not to checkin your GCS keyfile to a repository
# google:
# service: GCS
# project: your_project
# credentials: <%= Rails.root.join("path/to/gcs.keyfile") %>
# bucket: your_own_bucket-<%= Rails.env %>
amazon:
service: S3
access_key_id: <%= ENV["S3_ACCESS_KEY_ID"] %>
secret_access_key: <%= ENV["S3_SECRET_ACCESS_KEY"] %>
region: <%= ENV["S3_REGION"] || "us-east-1" %>
bucket: <%= ENV["S3_BUCKET"] %>
google:
service: GCS
project: <%= ENV["GCS_PROJECT"] %>
credentials: <%= Rails.root.join("gcp-storage-keyfile.json") %>
bucket: <%= ENV["GCS_BUCKET"] %>
# Use bin/rails credentials:edit to set the Azure Storage secret (as azure_storage:storage_access_key)
# microsoft:
# service: AzureStorage
# storage_account_name: your_account_name
# storage_access_key: <%= Rails.application.credentials.dig(:azure_storage, :storage_access_key) %>
# container: your_container_name-<%= Rails.env %>
# mirror:
# service: Mirror
# primary: local
# mirrors: [ amazon, google, microsoft ]
azure:
service: AzureStorage
storage_account_name: <%= ENV["AZURE_STORAGE_ACCOUNT_NAME"] %>
storage_access_key: <%= ENV["AZURE_STORAGE_ACCESS_KEY"] %>
container: <%= ENV["AZURE_STORAGE_CONTAINER"] %>