diff --git a/app/controllers/api/v1/places_controller.rb b/app/controllers/api/v1/places_controller.rb index 43011828..d353f128 100644 --- a/app/controllers/api/v1/places_controller.rb +++ b/app/controllers/api/v1/places_controller.rb @@ -22,6 +22,7 @@ module Api if @place.save add_tags if tag_ids.present? + @place = current_api_user.places.includes(:tags, :visits).find(@place.id) render json: serialize_place(@place), status: :created else @@ -32,6 +33,8 @@ module Api def update if @place.update(place_params) set_tags if params[:place][:tag_ids] + @place = current_api_user.places.includes(:tags, :visits).find(@place.id) + render json: serialize_place(@place) else render json: { errors: @place.errors.full_messages }, status: :unprocessable_entity diff --git a/app/models/concerns/omniauthable.rb b/app/models/concerns/omniauthable.rb index b0fbb21b..c29a559f 100644 --- a/app/models/concerns/omniauthable.rb +++ b/app/models/concerns/omniauthable.rb @@ -19,7 +19,7 @@ module Omniauthable if user # Update provider and uid for existing user (first-time linking) - user.update(provider: provider, uid: uid) + user.update!(provider: provider, uid: uid) return user end diff --git a/config/initializers/01_constants.rb b/config/initializers/01_constants.rb index 0215de24..c4d06e0a 100644 --- a/config/initializers/01_constants.rb +++ b/config/initializers/01_constants.rb @@ -46,7 +46,12 @@ OMNIAUTH_PROVIDERS = else # Cloud: only GitHub and Google providers = [] - providers << :github if ENV['GITHUB_OAUTH_CLIENT_ID'].present? - providers << :google_oauth2 if ENV['GOOGLE_OAUTH_CLIENT_ID'].present? - providers + + if ENV['GITHUB_OAUTH_CLIENT_ID'].present? && ENV['GITHUB_OAUTH_CLIENT_SECRET'].present? + providers << :github + end + + if ENV['GOOGLE_OAUTH_CLIENT_ID'].present? && ENV['GOOGLE_OAUTH_CLIENT_SECRET'].present? + providers << :google_oauth2 + end end diff --git a/db/migrate/20251028130433_add_omniauth_to_users.rb b/db/migrate/20251028130433_add_omniauth_to_users.rb index 75b37862..7e6a2fe0 100644 --- a/db/migrate/20251028130433_add_omniauth_to_users.rb +++ b/db/migrate/20251028130433_add_omniauth_to_users.rb @@ -1,7 +1,15 @@ class AddOmniauthToUsers < ActiveRecord::Migration[8.0] - def change - add_column :users, :provider, :string unless column_exists? :users, :provider - add_column :users, :uid, :string unless column_exists? :users, :uid - add_index :users, [:provider, :uid], unique: true, algorithm: :concurrently + disable_ddl_transaction! + + def up + add_column :users, :provider, :string unless column_exists?(:users, :provider) + add_column :users, :uid, :string unless column_exists?(:users, :uid) + add_index :users, [:provider, :uid], unique: true, algorithm: :concurrently, if_not_exists: true + end + + def down + remove_index :users, column: [:provider, :uid], algorithm: :concurrently, if_exists: true + remove_column :users, :uid if column_exists?(:users, :uid) + remove_column :users, :provider if column_exists?(:users, :provider) end end