diff --git a/.rubocop.yml b/.rubocop.yml index 16a04ae9584..67bed89b9ac 100644 --- a/.rubocop.yml +++ b/.rubocop.yml @@ -86,6 +86,7 @@ Metrics/BlockLength: - 'config/initializers/simple_form.rb' - 'config/navigation.rb' - 'config/routes.rb' + - 'config/routes/*.rb' - 'db/post_migrate/20221101190723_backfill_admin_action_logs.rb' - 'db/post_migrate/20221206114142_backfill_admin_action_logs_again.rb' - 'lib/paperclip/gif_transcoder.rb' diff --git a/config/routes.rb b/config/routes.rb index f177a1fdb9a..04d5ec2a65f 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -131,77 +131,7 @@ Rails.application.routes.draw do get '/@:username_with_domain/(*any)', to: 'home#index', constraints: { username_with_domain: /([^\/])+?/ }, format: false get '/settings', to: redirect('/settings/profile') - namespace :settings do - resource :profile, only: [:show, :update] do - resources :pictures, only: :destroy - end - - get :preferences, to: redirect('/settings/preferences/appearance') - - namespace :preferences do - resource :appearance, only: [:show, :update], controller: :appearance - resource :notifications, only: [:show, :update] - resource :other, only: [:show, :update], controller: :other - end - - resources :imports, only: [:index, :show, :destroy, :create] do - member do - post :confirm - get :failures - end - end - - resource :export, only: [:show, :create] - - namespace :exports, constraints: { format: :csv } do - resources :follows, only: :index, controller: :following_accounts - resources :blocks, only: :index, controller: :blocked_accounts - resources :mutes, only: :index, controller: :muted_accounts - resources :lists, only: :index, controller: :lists - resources :domain_blocks, only: :index, controller: :blocked_domains - resources :bookmarks, only: :index, controller: :bookmarks - end - - resources :two_factor_authentication_methods, only: [:index] do - collection do - post :disable - end - end - - resource :otp_authentication, only: [:show, :create], controller: 'two_factor_authentication/otp_authentication' - - resources :webauthn_credentials, only: [:index, :new, :create, :destroy], - path: 'security_keys', - controller: 'two_factor_authentication/webauthn_credentials' do - - collection do - get :options - end - end - - namespace :two_factor_authentication do - resources :recovery_codes, only: [:create] - resource :confirmation, only: [:new, :create] - end - - resources :applications, except: [:edit] do - member do - post :regenerate - end - end - - resource :delete, only: [:show, :destroy] - resource :migration, only: [:show, :create] - - namespace :migration do - resource :redirect, only: [:new, :create, :destroy] - end - - resources :aliases, only: [:index, :create, :destroy] - resources :sessions, only: [:destroy] - resources :featured_tags, only: [:index, :create, :destroy] - resources :login_activities, only: [:index] - end + draw(:settings) namespace :disputes do resources :strikes, only: [:show, :index] do @@ -233,513 +163,11 @@ Rails.application.routes.draw do resource :authorize_interaction, only: [:show, :create] resource :share, only: [:show, :create] - namespace :admin do - get '/dashboard', to: 'dashboard#index' - - resources :domain_allows, only: [:new, :create, :show, :destroy] - resources :domain_blocks, only: [:new, :create, :destroy, :update, :edit] do - collection do - post :batch - end - end - - resources :export_domain_allows, only: [:new] do - collection do - get :export, constraints: { format: :csv } - post :import - end - end - - resources :export_domain_blocks, only: [:new] do - collection do - get :export, constraints: { format: :csv } - post :import - end - end - - resources :email_domain_blocks, only: [:index, :new, :create] do - collection do - post :batch - end - end - - resources :action_logs, only: [:index] - resources :warning_presets, except: [:new] - - resources :announcements, except: [:show] do - member do - post :publish - post :unpublish - end - end - - get '/settings', to: redirect('/admin/settings/branding') - get '/settings/edit', to: redirect('/admin/settings/branding') - - namespace :settings do - resource :branding, only: [:show, :update], controller: 'branding' - resource :registrations, only: [:show, :update], controller: 'registrations' - resource :content_retention, only: [:show, :update], controller: 'content_retention' - resource :about, only: [:show, :update], controller: 'about' - resource :appearance, only: [:show, :update], controller: 'appearance' - resource :discovery, only: [:show, :update], controller: 'discovery' - end - - resources :site_uploads, only: [:destroy] - - resources :invites, only: [:index, :create, :destroy] do - collection do - post :deactivate_all - end - end - - resources :relays, only: [:index, :new, :create, :destroy] do - member do - post :enable - post :disable - end - end - - resources :instances, only: [:index, :show, :destroy], constraints: { id: /[^\/]+/ } do - member do - post :clear_delivery_errors - post :restart_delivery - post :stop_delivery - end - end - - resources :rules - - resources :webhooks do - member do - post :enable - post :disable - end - - resource :secret, only: [], controller: 'webhooks/secrets' do - post :rotate - end - end - - resources :reports, only: [:index, :show] do - resources :actions, only: [:create], controller: 'reports/actions' do - collection do - post :preview - end - end - - member do - post :assign_to_self - post :unassign - post :reopen - post :resolve - end - end - - resources :report_notes, only: [:create, :destroy] - - resources :accounts, only: [:index, :show, :destroy] do - member do - post :enable - post :unsensitive - post :unsilence - post :unsuspend - post :redownload - post :remove_avatar - post :remove_header - post :memorialize - post :approve - post :reject - post :unblock_email - end - - collection do - post :batch - end - - resource :change_email, only: [:show, :update] - resource :reset, only: [:create] - resource :action, only: [:new, :create], controller: 'account_actions' - - resources :statuses, only: [:index, :show] do - collection do - post :batch - end - end - - resources :relationships, only: [:index] - - resource :confirmation, only: [:create] do - collection do - post :resend - end - end - end - - resources :users, only: [] do - resource :two_factor_authentication, only: [:destroy], controller: 'users/two_factor_authentications' - resource :role, only: [:show, :update], controller: 'users/roles' - end - - resources :custom_emojis, only: [:index, :new, :create] do - collection do - post :batch - end - end - - resources :ip_blocks, only: [:index, :new, :create] do - collection do - post :batch - end - end - - resources :roles, except: [:show] - resources :account_moderation_notes, only: [:create, :destroy] - resource :follow_recommendations, only: [:show, :update] - resources :tags, only: [:show, :update] - - namespace :trends do - resources :links, only: [:index] do - collection do - post :batch - end - end - - resources :tags, only: [:index] do - collection do - post :batch - end - end - - resources :statuses, only: [:index] do - collection do - post :batch - end - end - - namespace :links do - resources :preview_card_providers, only: [:index], path: :publishers do - collection do - post :batch - end - end - end - end - - namespace :disputes do - resources :appeals, only: [:index] do - member do - post :approve - post :reject - end - end - end - end + draw(:admin) get '/admin', to: redirect('/admin/dashboard', status: 302) - namespace :api, format: false do - # OEmbed - get '/oembed', to: 'oembed#show', as: :oembed - - # JSON / REST API - namespace :v1 do - resources :statuses, only: [:create, :show, :update, :destroy] do - scope module: :statuses do - resources :reblogged_by, controller: :reblogged_by_accounts, only: :index - resources :favourited_by, controller: :favourited_by_accounts, only: :index - resource :reblog, only: :create - post :unreblog, to: 'reblogs#destroy' - - resource :favourite, only: :create - post :unfavourite, to: 'favourites#destroy' - - resource :bookmark, only: :create - post :unbookmark, to: 'bookmarks#destroy' - - resource :mute, only: :create - post :unmute, to: 'mutes#destroy' - - resource :pin, only: :create - post :unpin, to: 'pins#destroy' - - resource :history, only: :show - resource :source, only: :show - - post :translate, to: 'translations#create' - end - - member do - get :context - end - end - - namespace :timelines do - resource :home, only: :show, controller: :home - resource :public, only: :show, controller: :public - resources :tag, only: :show - resources :list, only: :show - end - - get '/streaming', to: 'streaming#index' - get '/streaming/(*any)', to: 'streaming#index' - - resources :custom_emojis, only: [:index] - resources :suggestions, only: [:index, :destroy] - resources :scheduled_statuses, only: [:index, :show, :update, :destroy] - resources :preferences, only: [:index] - - resources :announcements, only: [:index] do - scope module: :announcements do - resources :reactions, only: [:update, :destroy] - end - - member do - post :dismiss - end - end - - # namespace :crypto do - # resources :deliveries, only: :create - - # namespace :keys do - # resource :upload, only: [:create] - # resource :query, only: [:create] - # resource :claim, only: [:create] - # resource :count, only: [:show] - # end - - # resources :encrypted_messages, only: [:index] do - # collection do - # post :clear - # end - # end - # end - - resources :conversations, only: [:index, :destroy] do - member do - post :read - end - end - - resources :media, only: [:create, :update, :show] - resources :blocks, only: [:index] - resources :mutes, only: [:index] - resources :favourites, only: [:index] - resources :bookmarks, only: [:index] - resources :reports, only: [:create] - resources :trends, only: [:index], controller: 'trends/tags' - resources :filters, only: [:index, :create, :show, :update, :destroy] - resources :endorsements, only: [:index] - resources :markers, only: [:index, :create] - - namespace :apps do - get :verify_credentials, to: 'credentials#show' - end - - resources :apps, only: [:create] - - namespace :trends do - resources :links, only: [:index] - resources :tags, only: [:index] - resources :statuses, only: [:index] - end - - namespace :emails do - resources :confirmations, only: [:create] - end - - resource :instance, only: [:show] do - resources :peers, only: [:index], controller: 'instances/peers' - resources :rules, only: [:index], controller: 'instances/rules' - resources :domain_blocks, only: [:index], controller: 'instances/domain_blocks' - resource :privacy_policy, only: [:show], controller: 'instances/privacy_policies' - resource :extended_description, only: [:show], controller: 'instances/extended_descriptions' - resource :translation_languages, only: [:show], controller: 'instances/translation_languages' - resource :activity, only: [:show], controller: 'instances/activity' - end - - resource :domain_blocks, only: [:show, :create, :destroy] - - resource :directory, only: [:show] - - resources :follow_requests, only: [:index] do - member do - post :authorize - post :reject - end - end - - resources :notifications, only: [:index, :show] do - collection do - post :clear - end - - member do - post :dismiss - end - end - - namespace :accounts do - get :verify_credentials, to: 'credentials#show' - patch :update_credentials, to: 'credentials#update' - resource :search, only: :show, controller: :search - resource :lookup, only: :show, controller: :lookup - resources :relationships, only: :index - resources :familiar_followers, only: :index - end - - resources :accounts, only: [:create, :show] do - resources :statuses, only: :index, controller: 'accounts/statuses' - resources :followers, only: :index, controller: 'accounts/follower_accounts' - resources :following, only: :index, controller: 'accounts/following_accounts' - resources :lists, only: :index, controller: 'accounts/lists' - resources :identity_proofs, only: :index, controller: 'accounts/identity_proofs' - resources :featured_tags, only: :index, controller: 'accounts/featured_tags' - - member do - post :follow - post :unfollow - post :remove_from_followers - post :block - post :unblock - post :mute - post :unmute - end - - resource :pin, only: :create, controller: 'accounts/pins' - post :unpin, to: 'accounts/pins#destroy' - resource :note, only: :create, controller: 'accounts/notes' - end - - resources :tags, only: [:show] do - member do - post :follow - post :unfollow - end - end - - resources :followed_tags, only: [:index] - - resources :lists, only: [:index, :create, :show, :update, :destroy] do - resource :accounts, only: [:show, :create, :destroy], controller: 'lists/accounts' - end - - namespace :featured_tags do - get :suggestions, to: 'suggestions#index' - end - - resources :featured_tags, only: [:index, :create, :destroy] - - resources :polls, only: [:create, :show] do - resources :votes, only: :create, controller: 'polls/votes' - end - - namespace :push do - resource :subscription, only: [:create, :show, :update, :destroy] - end - - namespace :admin do - resources :accounts, only: [:index, :show, :destroy] do - member do - post :enable - post :unsensitive - post :unsilence - post :unsuspend - post :approve - post :reject - end - - resource :action, only: [:create], controller: 'account_actions' - end - - resources :reports, only: [:index, :update, :show] do - member do - post :assign_to_self - post :unassign - post :reopen - post :resolve - end - end - - resources :domain_allows, only: [:index, :show, :create, :destroy] - resources :domain_blocks, only: [:index, :show, :update, :create, :destroy] - resources :email_domain_blocks, only: [:index, :show, :create, :destroy] - resources :ip_blocks, only: [:index, :show, :update, :create, :destroy] - - namespace :trends do - resources :tags, only: [:index] do - member do - post :approve - post :reject - end - end - resources :links, only: [:index] do - member do - post :approve - post :reject - end - end - resources :statuses, only: [:index] do - member do - post :approve - post :reject - end - end - - namespace :links do - resources :preview_card_providers, only: [:index], path: :publishers do - member do - post :approve - post :reject - end - end - end - end - - post :measures, to: 'measures#create' - post :dimensions, to: 'dimensions#create' - post :retention, to: 'retention#create' - - resources :canonical_email_blocks, only: [:index, :create, :show, :destroy] do - collection do - post :test - end - end - end - end - - namespace :v2 do - get '/search', to: 'search#index', as: :search - - resources :media, only: [:create] - resources :suggestions, only: [:index] - resource :instance, only: [:show] - resources :filters, only: [:index, :create, :show, :update, :destroy] do - resources :keywords, only: [:index, :create], controller: 'filters/keywords' - resources :statuses, only: [:index, :create], controller: 'filters/statuses' - end - - namespace :filters do - resources :keywords, only: [:show, :update, :destroy] - resources :statuses, only: [:show, :destroy] - end - - namespace :admin do - resources :accounts, only: [:index] - end - end - - namespace :web do - resource :settings, only: [:update] - resource :embed, only: [:create] - resources :push_subscriptions, only: [:create] do - member do - put :update - end - end - end - end + draw(:api) web_app_paths.each do |path| get path, to: 'home#index' diff --git a/config/routes/admin.rb b/config/routes/admin.rb new file mode 100644 index 00000000000..90e892e4b9f --- /dev/null +++ b/config/routes/admin.rb @@ -0,0 +1,204 @@ +# frozen_string_literal: true + +namespace :admin do + get '/dashboard', to: 'dashboard#index' + + resources :domain_allows, only: [:new, :create, :show, :destroy] + resources :domain_blocks, only: [:new, :create, :destroy, :update, :edit] do + collection do + post :batch + end + end + + resources :export_domain_allows, only: [:new] do + collection do + get :export, constraints: { format: :csv } + post :import + end + end + + resources :export_domain_blocks, only: [:new] do + collection do + get :export, constraints: { format: :csv } + post :import + end + end + + resources :email_domain_blocks, only: [:index, :new, :create] do + collection do + post :batch + end + end + + resources :action_logs, only: [:index] + resources :warning_presets, except: [:new] + + resources :announcements, except: [:show] do + member do + post :publish + post :unpublish + end + end + + get '/settings', to: redirect('/admin/settings/branding') + get '/settings/edit', to: redirect('/admin/settings/branding') + + namespace :settings do + resource :branding, only: [:show, :update], controller: 'branding' + resource :registrations, only: [:show, :update], controller: 'registrations' + resource :content_retention, only: [:show, :update], controller: 'content_retention' + resource :about, only: [:show, :update], controller: 'about' + resource :appearance, only: [:show, :update], controller: 'appearance' + resource :discovery, only: [:show, :update], controller: 'discovery' + end + + resources :site_uploads, only: [:destroy] + + resources :invites, only: [:index, :create, :destroy] do + collection do + post :deactivate_all + end + end + + resources :relays, only: [:index, :new, :create, :destroy] do + member do + post :enable + post :disable + end + end + + resources :instances, only: [:index, :show, :destroy], constraints: { id: %r{[^/]+} } do + member do + post :clear_delivery_errors + post :restart_delivery + post :stop_delivery + end + end + + resources :rules + + resources :webhooks do + member do + post :enable + post :disable + end + + resource :secret, only: [], controller: 'webhooks/secrets' do + post :rotate + end + end + + resources :reports, only: [:index, :show] do + resources :actions, only: [:create], controller: 'reports/actions' do + collection do + post :preview + end + end + + member do + post :assign_to_self + post :unassign + post :reopen + post :resolve + end + end + + resources :report_notes, only: [:create, :destroy] + + resources :accounts, only: [:index, :show, :destroy] do + member do + post :enable + post :unsensitive + post :unsilence + post :unsuspend + post :redownload + post :remove_avatar + post :remove_header + post :memorialize + post :approve + post :reject + post :unblock_email + end + + collection do + post :batch + end + + resource :change_email, only: [:show, :update] + resource :reset, only: [:create] + resource :action, only: [:new, :create], controller: 'account_actions' + + resources :statuses, only: [:index, :show] do + collection do + post :batch + end + end + + resources :relationships, only: [:index] + + resource :confirmation, only: [:create] do + collection do + post :resend + end + end + end + + resources :users, only: [] do + resource :two_factor_authentication, only: [:destroy], controller: 'users/two_factor_authentications' + resource :role, only: [:show, :update], controller: 'users/roles' + end + + resources :custom_emojis, only: [:index, :new, :create] do + collection do + post :batch + end + end + + resources :ip_blocks, only: [:index, :new, :create] do + collection do + post :batch + end + end + + resources :roles, except: [:show] + resources :account_moderation_notes, only: [:create, :destroy] + resource :follow_recommendations, only: [:show, :update] + resources :tags, only: [:show, :update] + + namespace :trends do + resources :links, only: [:index] do + collection do + post :batch + end + end + + resources :tags, only: [:index] do + collection do + post :batch + end + end + + resources :statuses, only: [:index] do + collection do + post :batch + end + end + + namespace :links do + resources :preview_card_providers, only: [:index], path: :publishers do + collection do + post :batch + end + end + end + end + + namespace :disputes do + resources :appeals, only: [:index] do + member do + post :approve + post :reject + end + end + end +end diff --git a/config/routes/api.rb b/config/routes/api.rb new file mode 100644 index 00000000000..91d5def8216 --- /dev/null +++ b/config/routes/api.rb @@ -0,0 +1,304 @@ +# frozen_string_literal: true + +namespace :api, format: false do + # OEmbed + get '/oembed', to: 'oembed#show', as: :oembed + + # JSON / REST API + namespace :v1 do + resources :statuses, only: [:create, :show, :update, :destroy] do + scope module: :statuses do + resources :reblogged_by, controller: :reblogged_by_accounts, only: :index + resources :favourited_by, controller: :favourited_by_accounts, only: :index + resource :reblog, only: :create + post :unreblog, to: 'reblogs#destroy' + + resource :favourite, only: :create + post :unfavourite, to: 'favourites#destroy' + + resource :bookmark, only: :create + post :unbookmark, to: 'bookmarks#destroy' + + resource :mute, only: :create + post :unmute, to: 'mutes#destroy' + + resource :pin, only: :create + post :unpin, to: 'pins#destroy' + + resource :history, only: :show + resource :source, only: :show + + post :translate, to: 'translations#create' + end + + member do + get :context + end + end + + namespace :timelines do + resource :home, only: :show, controller: :home + resource :public, only: :show, controller: :public + resources :tag, only: :show + resources :list, only: :show + end + + get '/streaming', to: 'streaming#index' + get '/streaming/(*any)', to: 'streaming#index' + + resources :custom_emojis, only: [:index] + resources :suggestions, only: [:index, :destroy] + resources :scheduled_statuses, only: [:index, :show, :update, :destroy] + resources :preferences, only: [:index] + + resources :announcements, only: [:index] do + scope module: :announcements do + resources :reactions, only: [:update, :destroy] + end + + member do + post :dismiss + end + end + + # namespace :crypto do + # resources :deliveries, only: :create + + # namespace :keys do + # resource :upload, only: [:create] + # resource :query, only: [:create] + # resource :claim, only: [:create] + # resource :count, only: [:show] + # end + + # resources :encrypted_messages, only: [:index] do + # collection do + # post :clear + # end + # end + # end + + resources :conversations, only: [:index, :destroy] do + member do + post :read + end + end + + resources :media, only: [:create, :update, :show] + resources :blocks, only: [:index] + resources :mutes, only: [:index] + resources :favourites, only: [:index] + resources :bookmarks, only: [:index] + resources :reports, only: [:create] + resources :trends, only: [:index], controller: 'trends/tags' + resources :filters, only: [:index, :create, :show, :update, :destroy] + resources :endorsements, only: [:index] + resources :markers, only: [:index, :create] + + namespace :apps do + get :verify_credentials, to: 'credentials#show' + end + + resources :apps, only: [:create] + + namespace :trends do + resources :tags, only: [:index] + resources :links, only: [:index] + resources :statuses, only: [:index] + end + + namespace :emails do + resources :confirmations, only: [:create] + end + + resource :instance, only: [:show] do + resources :peers, only: [:index], controller: 'instances/peers' + resources :rules, only: [:index], controller: 'instances/rules' + resources :domain_blocks, only: [:index], controller: 'instances/domain_blocks' + resource :privacy_policy, only: [:show], controller: 'instances/privacy_policies' + resource :extended_description, only: [:show], controller: 'instances/extended_descriptions' + resource :translation_languages, only: [:show], controller: 'instances/translation_languages' + resource :activity, only: [:show], controller: 'instances/activity' + end + + resource :domain_blocks, only: [:show, :create, :destroy] + + resource :directory, only: [:show] + + resources :follow_requests, only: [:index] do + member do + post :authorize + post :reject + end + end + + resources :notifications, only: [:index, :show] do + collection do + post :clear + end + + member do + post :dismiss + end + end + + namespace :accounts do + get :verify_credentials, to: 'credentials#show' + patch :update_credentials, to: 'credentials#update' + resource :search, only: :show, controller: :search + resource :lookup, only: :show, controller: :lookup + resources :relationships, only: :index + resources :familiar_followers, only: :index + end + + resources :accounts, only: [:create, :show] do + resources :statuses, only: :index, controller: 'accounts/statuses' + resources :followers, only: :index, controller: 'accounts/follower_accounts' + resources :following, only: :index, controller: 'accounts/following_accounts' + resources :lists, only: :index, controller: 'accounts/lists' + resources :identity_proofs, only: :index, controller: 'accounts/identity_proofs' + resources :featured_tags, only: :index, controller: 'accounts/featured_tags' + + member do + post :follow + post :unfollow + post :remove_from_followers + post :block + post :unblock + post :mute + post :unmute + end + + resource :pin, only: :create, controller: 'accounts/pins' + post :unpin, to: 'accounts/pins#destroy' + resource :note, only: :create, controller: 'accounts/notes' + end + + resources :tags, only: [:show] do + member do + post :follow + post :unfollow + end + end + + resources :followed_tags, only: [:index] + + resources :lists, only: [:index, :create, :show, :update, :destroy] do + resource :accounts, only: [:show, :create, :destroy], controller: 'lists/accounts' + end + + namespace :featured_tags do + get :suggestions, to: 'suggestions#index' + end + + resources :featured_tags, only: [:index, :create, :destroy] + + resources :polls, only: [:create, :show] do + resources :votes, only: :create, controller: 'polls/votes' + end + + namespace :push do + resource :subscription, only: [:create, :show, :update, :destroy] + end + + namespace :admin do + resources :accounts, only: [:index, :show, :destroy] do + member do + post :enable + post :unsensitive + post :unsilence + post :unsuspend + post :approve + post :reject + end + + resource :action, only: [:create], controller: 'account_actions' + end + + resources :reports, only: [:index, :update, :show] do + member do + post :assign_to_self + post :unassign + post :reopen + post :resolve + end + end + + resources :domain_allows, only: [:index, :show, :create, :destroy] + resources :domain_blocks, only: [:index, :show, :update, :create, :destroy] + resources :email_domain_blocks, only: [:index, :show, :create, :destroy] + resources :ip_blocks, only: [:index, :show, :update, :create, :destroy] + + namespace :trends do + resources :tags, only: [:index] do + member do + post :approve + post :reject + end + end + resources :links, only: [:index] do + member do + post :approve + post :reject + end + end + resources :statuses, only: [:index] do + member do + post :approve + post :reject + end + end + + namespace :links do + resources :preview_card_providers, only: [:index], path: :publishers do + member do + post :approve + post :reject + end + end + end + end + + post :measures, to: 'measures#create' + post :dimensions, to: 'dimensions#create' + post :retention, to: 'retention#create' + + resources :canonical_email_blocks, only: [:index, :create, :show, :destroy] do + collection do + post :test + end + end + end + end + + namespace :v2 do + get '/search', to: 'search#index', as: :search + + resources :media, only: [:create] + resources :suggestions, only: [:index] + resource :instance, only: [:show] + resources :filters, only: [:index, :create, :show, :update, :destroy] do + resources :keywords, only: [:index, :create], controller: 'filters/keywords' + resources :statuses, only: [:index, :create], controller: 'filters/statuses' + end + + namespace :filters do + resources :keywords, only: [:show, :update, :destroy] + resources :statuses, only: [:show, :destroy] + end + + namespace :admin do + resources :accounts, only: [:index] + end + end + + namespace :web do + resource :settings, only: [:update] + resource :embed, only: [:create] + resources :push_subscriptions, only: [:create] do + member do + put :update + end + end + end +end diff --git a/config/routes/settings.rb b/config/routes/settings.rb new file mode 100644 index 00000000000..875cf2cad01 --- /dev/null +++ b/config/routes/settings.rb @@ -0,0 +1,72 @@ +# frozen_string_literal: true + +namespace :settings do + resource :profile, only: [:show, :update] do + resources :pictures, only: :destroy + end + + get :preferences, to: redirect('/settings/preferences/appearance') + + namespace :preferences do + resource :appearance, only: [:show, :update], controller: :appearance + resource :notifications, only: [:show, :update] + resource :other, only: [:show, :update], controller: :other + end + + resources :imports, only: [:index, :show, :destroy, :create] do + member do + post :confirm + get :failures + end + end + + resource :export, only: [:show, :create] + + namespace :exports, constraints: { format: :csv } do + resources :follows, only: :index, controller: :following_accounts + resources :blocks, only: :index, controller: :blocked_accounts + resources :mutes, only: :index, controller: :muted_accounts + resources :lists, only: :index, controller: :lists + resources :domain_blocks, only: :index, controller: :blocked_domains + resources :bookmarks, only: :index, controller: :bookmarks + end + + resources :two_factor_authentication_methods, only: [:index] do + collection do + post :disable + end + end + + resource :otp_authentication, only: [:show, :create], controller: 'two_factor_authentication/otp_authentication' + + resources :webauthn_credentials, only: [:index, :new, :create, :destroy], + path: 'security_keys', + controller: 'two_factor_authentication/webauthn_credentials' do + collection do + get :options + end + end + + namespace :two_factor_authentication do + resources :recovery_codes, only: [:create] + resource :confirmation, only: [:new, :create] + end + + resources :applications, except: [:edit] do + member do + post :regenerate + end + end + + resource :delete, only: [:show, :destroy] + resource :migration, only: [:show, :create] + + namespace :migration do + resource :redirect, only: [:new, :create, :destroy] + end + + resources :aliases, only: [:index, :create, :destroy] + resources :sessions, only: [:destroy] + resources :featured_tags, only: [:index, :create, :destroy] + resources :login_activities, only: [:index] +end