dawarich/config/routes.rb

213 lines
6.6 KiB
Ruby
Raw Normal View History

2024-05-18 06:13:29 -04:00
# frozen_string_literal: true
2025-06-09 07:39:25 -04:00
require 'sidekiq/web'
Rails.application.routes.draw do
mount ActionCable.server => '/cable'
mount Rswag::Api::Engine => '/api-docs'
mount Rswag::Ui::Engine => '/api-docs'
2025-04-11 13:13:46 -04:00
2025-06-09 07:39:25 -04:00
unless DawarichSettings.self_hosted?
Sidekiq::Web.use(Rack::Auth::Basic) do |username, password|
ActiveSupport::SecurityUtils.secure_compare(
::Digest::SHA256.hexdigest(username),
::Digest::SHA256.hexdigest(ENV['SIDEKIQ_USERNAME'])
) &
ActiveSupport::SecurityUtils.secure_compare(
::Digest::SHA256.hexdigest(password),
::Digest::SHA256.hexdigest(ENV['SIDEKIQ_PASSWORD'])
)
end
end
2025-04-11 13:13:46 -04:00
authenticate :user, lambda { |u|
(u.admin? && DawarichSettings.self_hosted?) ||
(u.admin? && ENV['SIDEKIQ_USERNAME'].present? && ENV['SIDEKIQ_PASSWORD'].present?)
} do
2025-06-09 07:39:25 -04:00
mount Sidekiq::Web => '/sidekiq'
2024-07-16 16:26:16 -04:00
end
mount RailsPulse::Engine => '/rails_pulse'
2025-06-09 07:39:25 -04:00
# We want to return a nice error message if the user is not authorized to access Sidekiq
match '/sidekiq' => redirect { |_, request|
request.flash[:error] = 'You are not authorized to perform this action.'
'/'
}, via: :get
resources :settings, only: :index
namespace :settings do
2025-06-02 14:53:35 -04:00
resources :background_jobs, only: %i[index create]
resources :users, only: %i[index create destroy edit update] do
collection do
get 'export'
post 'import'
end
end
resources :maps, only: %i[index]
patch 'maps', to: 'maps#update'
end
patch 'settings', to: 'settings#update'
2024-05-18 06:13:29 -04:00
get 'settings/theme', to: 'settings#theme'
post 'settings/generate_api_key', to: 'settings#generate_api_key', as: :generate_api_key
2024-03-15 18:27:31 -04:00
resources :imports
2024-07-27 06:35:47 -04:00
resources :visits, only: %i[index update]
2024-08-25 14:19:02 -04:00
resources :places, only: %i[index destroy]
2024-06-12 14:29:38 -04:00
resources :exports, only: %i[index create destroy]
2024-11-28 10:11:04 -05:00
resources :trips
0.36.0 (#1952) * Implement OmniAuth GitHub authentication * Fix omniauth GitHub scope to include user email access * Remove margin-bottom * Implement Google OAuth2 authentication * Implement OIDC authentication for Dawarich using omniauth_openid_connect gem. * Add patreon account linking and patron checking service * Update docker-compose.yml to use boolean values instead of strings * Add support for KML files * Add tests * Update changelog * Remove patreon OAuth integration * Move omniauthable to a concern * Update an icon in integrations * Update changelog * Update app version * Fix family location sharing toggle * Move family location sharing to its own controller * Update changelog * Implement basic tagging functionality for places, allowing users to categorize and label places with custom tags. * Add places management API and tags feature * Add some changes related to places management feature * Fix some tests * Fix sometests * Add places layer * Update places layer to use Leaflet.Control.Layers.Tree for hierarchical layer control * Rework tag form * Add hashtag * Add privacy zones to tags * Add notes to places and manage place tags * Update changelog * Update e2e tests * Extract tag serializer to its own file * Fix some tests * Fix tags request specs * Fix some tests * Fix rest of the tests * Revert some changes * Add missing specs * Revert changes in place export/import code * Fix some specs * Fix PlaceFinder to only consider global places when finding existing places * Fix few more specs * Fix visits creator spec * Fix last tests * Update place creating modal * Add home location based on "Home" tagged place * Save enabled tag layers * Some fixes * Fix bug where enabling place tag layers would trigger saving enabled layers, overwriting with incomplete data * Update migration to use disable_ddl_transaction! and add up/down methods * Fix tag layers restoration and filtering logic * Update OIDC auto-registration and email/password registration settings * Fix potential xss
2025-11-24 13:45:09 -05:00
resources :tags, except: [:show]
2025-09-27 07:23:33 -04:00
2025-09-28 07:10:07 -04:00
# Family management routes (only if feature is enabled)
2025-10-04 16:39:47 -04:00
if DawarichSettings.family_feature_enabled?
resource :family, only: %i[show new create edit update destroy] do
resources :invitations, except: %i[edit update], controller: 'family/invitations'
2025-10-04 16:39:47 -04:00
resources :members, only: %i[destroy], controller: 'family/memberships'
0.36.0 (#1952) * Implement OmniAuth GitHub authentication * Fix omniauth GitHub scope to include user email access * Remove margin-bottom * Implement Google OAuth2 authentication * Implement OIDC authentication for Dawarich using omniauth_openid_connect gem. * Add patreon account linking and patron checking service * Update docker-compose.yml to use boolean values instead of strings * Add support for KML files * Add tests * Update changelog * Remove patreon OAuth integration * Move omniauthable to a concern * Update an icon in integrations * Update changelog * Update app version * Fix family location sharing toggle * Move family location sharing to its own controller * Update changelog * Implement basic tagging functionality for places, allowing users to categorize and label places with custom tags. * Add places management API and tags feature * Add some changes related to places management feature * Fix some tests * Fix sometests * Add places layer * Update places layer to use Leaflet.Control.Layers.Tree for hierarchical layer control * Rework tag form * Add hashtag * Add privacy zones to tags * Add notes to places and manage place tags * Update changelog * Update e2e tests * Extract tag serializer to its own file * Fix some tests * Fix tags request specs * Fix some tests * Fix rest of the tests * Revert some changes * Add missing specs * Revert changes in place export/import code * Fix some specs * Fix PlaceFinder to only consider global places when finding existing places * Fix few more specs * Fix visits creator spec * Fix last tests * Update place creating modal * Add home location based on "Home" tagged place * Save enabled tag layers * Some fixes * Fix bug where enabling place tag layers would trigger saving enabled layers, overwriting with incomplete data * Update migration to use disable_ddl_transaction! and add up/down methods * Fix tag layers restoration and filtering logic * Update OIDC auto-registration and email/password registration settings * Fix potential xss
2025-11-24 13:45:09 -05:00
patch 'location_sharing', to: 'family/location_sharing#update', as: :location_sharing
2025-09-27 07:23:33 -04:00
end
2025-10-04 16:39:47 -04:00
get 'invitations/:token', to: 'family/invitations#show', as: :public_invitation
post 'family/memberships', to: 'family/memberships#create', as: :accept_family_invitation
2025-09-27 07:23:33 -04:00
end
2024-05-23 14:12:23 -04:00
resources :points, only: %i[index] do
collection do
delete :bulk_destroy
end
end
2024-07-04 16:20:12 -04:00
resources :notifications, only: %i[index show destroy]
2024-07-04 17:00:07 -04:00
post 'notifications/mark_as_read', to: 'notifications#mark_as_read', as: :mark_notifications_as_read
2024-12-15 11:28:59 -05:00
post 'notifications/destroy_all', to: 'notifications#destroy_all', as: :delete_all_notifications
2024-03-24 14:25:33 -04:00
resources :stats, only: :index do
collection do
put :update_all
2024-03-24 14:25:33 -04:00
end
end
get 'stats/:year', to: 'stats#show', constraints: { year: /\d{4}/ }
2025-09-13 11:04:48 -04:00
get 'stats/:year/:month', to: 'stats#month', constraints: { year: /\d{4}/, month: /(0?[1-9]|1[0-2])/ }
put 'stats/:year/:month/update',
to: 'stats#update',
as: :update_year_month_stats,
constraints: { year: /\d{4}/, month: /\d{1,2}|all/ }
2025-09-29 16:27:07 -04:00
get 'shared/month/:uuid', to: 'shared/stats#show', as: :shared_stat
# Sharing management endpoint (requires auth)
2025-09-11 14:41:43 -04:00
patch 'stats/:year/:month/sharing',
to: 'shared/stats#update',
2025-09-11 14:41:43 -04:00
as: :sharing_stats,
constraints: { year: /\d{4}/, month: /\d{1,2}/ }
# User digests routes (yearly/monthly digest reports)
scope module: 'users' do
resources :digests, only: %i[index create], param: :year, as: :users_digests
get 'digests/:year', to: 'digests#show', as: :users_digest, constraints: { year: /\d{4}/ }
end
get 'shared/digest/:uuid', to: 'shared/digests#show', as: :shared_users_digest
patch 'digests/:year/sharing',
to: 'shared/digests#update',
as: :sharing_users_digest,
constraints: { year: /\d{4}/ }
2023-10-21 06:43:31 -04:00
root to: 'home#index'
2025-01-15 15:52:59 -05:00
get 'auth/ios/success', to: 'auth/ios#success', as: :ios_success
devise_for :users, controllers: {
registrations: 'users/registrations',
0.36.0 (#1952) * Implement OmniAuth GitHub authentication * Fix omniauth GitHub scope to include user email access * Remove margin-bottom * Implement Google OAuth2 authentication * Implement OIDC authentication for Dawarich using omniauth_openid_connect gem. * Add patreon account linking and patron checking service * Update docker-compose.yml to use boolean values instead of strings * Add support for KML files * Add tests * Update changelog * Remove patreon OAuth integration * Move omniauthable to a concern * Update an icon in integrations * Update changelog * Update app version * Fix family location sharing toggle * Move family location sharing to its own controller * Update changelog * Implement basic tagging functionality for places, allowing users to categorize and label places with custom tags. * Add places management API and tags feature * Add some changes related to places management feature * Fix some tests * Fix sometests * Add places layer * Update places layer to use Leaflet.Control.Layers.Tree for hierarchical layer control * Rework tag form * Add hashtag * Add privacy zones to tags * Add notes to places and manage place tags * Update changelog * Update e2e tests * Extract tag serializer to its own file * Fix some tests * Fix tags request specs * Fix some tests * Fix rest of the tests * Revert some changes * Add missing specs * Revert changes in place export/import code * Fix some specs * Fix PlaceFinder to only consider global places when finding existing places * Fix few more specs * Fix visits creator spec * Fix last tests * Update place creating modal * Add home location based on "Home" tagged place * Save enabled tag layers * Some fixes * Fix bug where enabling place tag layers would trigger saving enabled layers, overwriting with incomplete data * Update migration to use disable_ddl_transaction! and add up/down methods * Fix tag layers restoration and filtering logic * Update OIDC auto-registration and email/password registration settings * Fix potential xss
2025-11-24 13:45:09 -05:00
sessions: 'users/sessions',
omniauth_callbacks: 'users/omniauth_callbacks'
}
2025-07-26 06:14:08 -04:00
resources :metrics, only: [:index]
# Map namespace with versioning
namespace :map do
get '/v1', to: 'leaflet#index', as: :v1
get '/v2', to: 'maplibre#index', as: :v2
end
# Backward compatibility redirects
get '/map', to: 'map/leaflet#index'
get '/maps/v2', to: redirect('/map/v2')
2024-03-15 18:27:31 -04:00
namespace :api do
namespace :v1 do
get 'photos', to: 'photos#index'
2024-09-05 15:16:40 -04:00
get 'health', to: 'health#index'
2024-08-28 14:24:35 -04:00
patch 'settings', to: 'settings#update'
get 'settings', to: 'settings#index'
2025-01-20 09:17:56 -05:00
get 'users/me', to: 'users#me'
2024-08-28 14:24:35 -04:00
resources :areas, only: %i[index show create update destroy]
0.36.0 (#1952) * Implement OmniAuth GitHub authentication * Fix omniauth GitHub scope to include user email access * Remove margin-bottom * Implement Google OAuth2 authentication * Implement OIDC authentication for Dawarich using omniauth_openid_connect gem. * Add patreon account linking and patron checking service * Update docker-compose.yml to use boolean values instead of strings * Add support for KML files * Add tests * Update changelog * Remove patreon OAuth integration * Move omniauthable to a concern * Update an icon in integrations * Update changelog * Update app version * Fix family location sharing toggle * Move family location sharing to its own controller * Update changelog * Implement basic tagging functionality for places, allowing users to categorize and label places with custom tags. * Add places management API and tags feature * Add some changes related to places management feature * Fix some tests * Fix sometests * Add places layer * Update places layer to use Leaflet.Control.Layers.Tree for hierarchical layer control * Rework tag form * Add hashtag * Add privacy zones to tags * Add notes to places and manage place tags * Update changelog * Update e2e tests * Extract tag serializer to its own file * Fix some tests * Fix tags request specs * Fix some tests * Fix rest of the tests * Revert some changes * Add missing specs * Revert changes in place export/import code * Fix some specs * Fix PlaceFinder to only consider global places when finding existing places * Fix few more specs * Fix visits creator spec * Fix last tests * Update place creating modal * Add home location based on "Home" tagged place * Save enabled tag layers * Some fixes * Fix bug where enabling place tag layers would trigger saving enabled layers, overwriting with incomplete data * Update migration to use disable_ddl_transaction! and add up/down methods * Fix tag layers restoration and filtering logic * Update OIDC auto-registration and email/password registration settings * Fix potential xss
2025-11-24 13:45:09 -05:00
resources :places, only: %i[index show create update destroy] do
collection do
get 'nearby'
end
end
2025-08-31 06:08:33 -04:00
resources :locations, only: %i[index] do
collection do
get 'suggestions'
end
end
resources :points, only: %i[index create update destroy] do
collection do
delete :bulk_destroy
end
end
resources :visits, only: %i[index show create update destroy] do
2025-03-03 14:11:21 -05:00
get 'possible_places', to: 'visits/possible_places#index', on: :member
2025-03-05 14:04:26 -05:00
collection do
post 'merge', to: 'visits#merge'
post 'bulk_update', to: 'visits#bulk_update'
end
2025-03-03 14:11:21 -05:00
end
resources :stats, only: :index
0.36.0 (#1952) * Implement OmniAuth GitHub authentication * Fix omniauth GitHub scope to include user email access * Remove margin-bottom * Implement Google OAuth2 authentication * Implement OIDC authentication for Dawarich using omniauth_openid_connect gem. * Add patreon account linking and patron checking service * Update docker-compose.yml to use boolean values instead of strings * Add support for KML files * Add tests * Update changelog * Remove patreon OAuth integration * Move omniauthable to a concern * Update an icon in integrations * Update changelog * Update app version * Fix family location sharing toggle * Move family location sharing to its own controller * Update changelog * Implement basic tagging functionality for places, allowing users to categorize and label places with custom tags. * Add places management API and tags feature * Add some changes related to places management feature * Fix some tests * Fix sometests * Add places layer * Update places layer to use Leaflet.Control.Layers.Tree for hierarchical layer control * Rework tag form * Add hashtag * Add privacy zones to tags * Add notes to places and manage place tags * Update changelog * Update e2e tests * Extract tag serializer to its own file * Fix some tests * Fix tags request specs * Fix some tests * Fix rest of the tests * Revert some changes * Add missing specs * Revert changes in place export/import code * Fix some specs * Fix PlaceFinder to only consider global places when finding existing places * Fix few more specs * Fix visits creator spec * Fix last tests * Update place creating modal * Add home location based on "Home" tagged place * Save enabled tag layers * Some fixes * Fix bug where enabling place tag layers would trigger saving enabled layers, overwriting with incomplete data * Update migration to use disable_ddl_transaction! and add up/down methods * Fix tag layers restoration and filtering logic * Update OIDC auto-registration and email/password registration settings * Fix potential xss
2025-11-24 13:45:09 -05:00
resources :tags, only: [] do
collection do
get 'privacy_zones'
end
end
2024-04-06 13:09:38 -04:00
namespace :overland do
resources :batches, only: :create
end
namespace :owntracks do
resources :points, only: :create
end
namespace :countries do
resources :borders, only: :index
2024-12-11 16:00:33 -05:00
resources :visited_cities, only: :index
end
namespace :points do
get 'tracked_months', to: 'tracked_months#index'
end
2024-11-26 14:18:08 -05:00
resources :photos, only: %i[index] do
member do
get 'thumbnail', constraints: { id: %r{[^/]+} }
end
end
2025-02-11 14:45:36 -05:00
2025-02-11 15:04:12 -05:00
namespace :maps do
resources :tile_usage, only: [:create]
2025-09-12 02:33:51 -04:00
resources :hexagons, only: [:index] do
collection do
get :bounds
end
end
2025-02-11 15:04:12 -05:00
end
2025-04-19 07:18:39 -04:00
0.36.0 (#1952) * Implement OmniAuth GitHub authentication * Fix omniauth GitHub scope to include user email access * Remove margin-bottom * Implement Google OAuth2 authentication * Implement OIDC authentication for Dawarich using omniauth_openid_connect gem. * Add patreon account linking and patron checking service * Update docker-compose.yml to use boolean values instead of strings * Add support for KML files * Add tests * Update changelog * Remove patreon OAuth integration * Move omniauthable to a concern * Update an icon in integrations * Update changelog * Update app version * Fix family location sharing toggle * Move family location sharing to its own controller * Update changelog * Implement basic tagging functionality for places, allowing users to categorize and label places with custom tags. * Add places management API and tags feature * Add some changes related to places management feature * Fix some tests * Fix sometests * Add places layer * Update places layer to use Leaflet.Control.Layers.Tree for hierarchical layer control * Rework tag form * Add hashtag * Add privacy zones to tags * Add notes to places and manage place tags * Update changelog * Update e2e tests * Extract tag serializer to its own file * Fix some tests * Fix tags request specs * Fix some tests * Fix rest of the tests * Revert some changes * Add missing specs * Revert changes in place export/import code * Fix some specs * Fix PlaceFinder to only consider global places when finding existing places * Fix few more specs * Fix visits creator spec * Fix last tests * Update place creating modal * Add home location based on "Home" tagged place * Save enabled tag layers * Some fixes * Fix bug where enabling place tag layers would trigger saving enabled layers, overwriting with incomplete data * Update migration to use disable_ddl_transaction! and add up/down methods * Fix tag layers restoration and filtering logic * Update OIDC auto-registration and email/password registration settings * Fix potential xss
2025-11-24 13:45:09 -05:00
namespace :families do
resources :locations, only: [:index]
2025-09-29 15:31:24 -04:00
end
2025-04-19 07:18:39 -04:00
post 'subscriptions/callback', to: 'subscriptions#callback'
2024-03-15 18:27:31 -04:00
end
end
end