2014-12-12 18:35:14 +01:00
require 'sidekiq/web'
2014-08-01 11:23:47 +02:00
Rails . application . routes . draw do
2017-03-31 22:38:23 +02:00
start = Time . now
2014-12-05 07:02:23 +01:00
2014-12-26 13:46:47 +01:00
# Sidekiq
2014-12-12 18:35:14 +01:00
constraints - > ( req ) { req . env [ " warden " ] . authenticate? ( scope : :user ) &&
2020-04-19 22:35:58 +02:00
req . env [ " warden " ] . user . has_role? ( :administrator ) } do
# Admin panel
mount RailsAdmin :: Engine = > " /justask_admin " , as : " rails_admin "
2014-12-12 18:35:14 +01:00
mount Sidekiq :: Web , at : " /sidekiq "
2020-04-19 22:35:58 +02:00
mount PgHero :: Engine , at : " /pghero " , as : " pghero "
2020-04-19 23:58:47 +02:00
match " /admin/announcements " , to : " announcement # index " , via : :get , as : :announcement_index
match " /admin/announcements " , to : " announcement # create " , via : :post , as : :announcement_create
match " /admin/announcements/new " , to : " announcement # new " , via : :get , as : :announcement_new
match " /admin/announcements/:id/edit " , to : " announcement # edit " , via : :get , as : :announcement_edit
match " /admin/announcements/:id " , to : " announcement # update " , via : :patch , as : :announcement_update
match " /admin/announcements/:id " , to : " announcement # destroy " , via : :delete , as : :announcement_destroy
2014-12-12 18:35:14 +01:00
end
2014-12-26 13:46:47 +01:00
# Moderation panel
2020-04-19 22:35:58 +02:00
constraints - > ( req ) { req . env [ " warden " ] . authenticate? ( scope : :user ) &&
req . env [ " warden " ] . user . mod? } do
2022-06-23 23:35:33 +02:00
match '/moderation/unmask' , to : 'moderation#toggle_unmask' , via : :post , as : :moderation_toggle_unmask
2015-07-23 19:38:42 +02:00
match '/moderation/priority(/:user_id)' , to : 'moderation#priority' , via : :get , as : :moderation_priority
match '/moderation/ip/:user_id' , to : 'moderation#ip' , via : :get , as : :moderation_ip
2014-12-29 01:25:48 +01:00
match '/moderation(/:type)' , to : 'moderation#index' , via : :get , as : :moderation , defaults : { type : 'all' }
2022-06-20 00:59:47 +02:00
match '/moderation/inbox/:user' , to : 'moderation/inbox#index' , via : :get , as : :mod_inbox_index
2014-12-28 23:26:16 +01:00
namespace :ajax do
2014-12-29 00:21:06 +01:00
match '/mod/destroy_report' , to : 'moderation#destroy_report' , via : :post , as : :mod_destroy_report
2014-12-29 00:50:14 +01:00
match '/mod/create_comment' , to : 'moderation#create_comment' , via : :post , as : :mod_create_comment
match '/mod/destroy_comment' , to : 'moderation#destroy_comment' , via : :post , as : :mod_destroy_comment
match '/mod/create_vote' , to : 'moderation#vote' , via : :post , as : :mod_create_vote
2014-12-28 23:26:16 +01:00
match '/mod/destroy_vote' , to : 'moderation#destroy_vote' , via : :post , as : :mod_destroy_vote
2015-02-03 17:48:30 +01:00
match '/mod/privilege' , to : 'moderation#privilege' , via : :post , as : :mod_privilege
2015-04-23 02:56:29 +02:00
match '/mod/ban' , to : 'moderation#ban' , via : :post , as : :mod_ban
2014-12-28 23:26:16 +01:00
end
2014-12-26 13:46:47 +01:00
end
2014-08-01 11:47:25 +02:00
root 'static#index'
2014-08-01 11:23:47 +02:00
2014-08-01 11:47:25 +02:00
match '/about' , to : 'static#about' , via : 'get'
2015-01-16 22:36:39 +01:00
match '/privacy' , to : 'static#privacy_policy' , via : 'get' , as : :privacy_policy
2015-01-16 23:16:28 +01:00
match '/terms' , to : 'static#terms' , via : 'get' , as : :terms
2021-12-30 17:58:15 +01:00
match '/linkfilter' , to : 'static#linkfilter' , via : 'get' , as : :linkfilter
2014-11-02 17:58:27 +01:00
# Devise routes
devise_for :users , path : 'user' , skip : [ :sessions , :registrations ]
as :user do
# :sessions
2020-10-23 21:00:06 +02:00
get 'sign_in' = > 'user/sessions#new' , as : :new_user_session
2020-10-18 10:39:46 +02:00
post 'sign_in' = > 'user/sessions#create' , as : :user_session
2014-11-02 17:58:27 +01:00
delete 'sign_out' = > 'devise/sessions#destroy' , as : :destroy_user_session
# :registrations
get 'settings/delete_account' = > 'devise/registrations#cancel' , as : :cancel_user_registration
2020-05-22 22:29:22 +02:00
post '/user/create' = > 'user/registrations#create' , as : :user_registration
2014-11-02 17:58:27 +01:00
get '/sign_up' = > 'devise/registrations#new' , as : :new_user_registration
get '/settings/account' = > 'devise/registrations#edit' , as : :edit_user_registration
2014-11-03 13:21:41 +01:00
patch '/settings/account' = > 'devise/registrations#update' , as : :update_user_registration
2014-11-02 17:58:27 +01:00
put '/settings/account' = > 'devise/registrations#update'
2015-07-15 01:44:35 +02:00
delete '/settings/account' = > 'user/registrations#destroy'
2014-11-02 17:58:27 +01:00
end
2022-06-26 13:28:35 +02:00
namespace :settings do
get :theme , to : redirect ( '/settings/theme/edit' )
2022-06-26 13:36:30 +02:00
resource :theme , controller : :theme , only : % i [ edit update destroy ]
2022-06-26 19:16:31 +02:00
get :profile , to : redirect ( '/settings/profile/edit' )
2022-06-26 19:45:31 +02:00
resource :profile , controller : :profile , only : % i [ edit update ]
resource :profile_picture , controller : :profile_picture , only : % i [ update ]
2022-06-28 01:50:20 +02:00
get :privacy , to : redirect ( '/settings/privacy/edit' )
resource :privacy , controller : :privacy , only : % i [ edit update ]
2022-07-02 06:15:00 +02:00
get :export , to : 'export#index'
post :export , to : 'export#create'
2022-07-02 23:35:58 +02:00
namespace :two_factor_authentication do
get :otp_authentication , to : 'otp_authentication#index'
patch :otp_authentication , to : 'otp_authentication#update'
delete :otp_authentication , to : 'otp_authentication#destroy'
match 'otp_authentication/reset' , to : 'otp_authentication#reset' , via : :delete
end
2022-06-26 13:28:35 +02:00
end
resolve ( 'Theme' ) { [ :settings_theme ] } # to make link_to/form_for work nicely when passing a `Theme` object to it, see also: https://api.rubyonrails.org/v6.1.5.1/classes/ActionDispatch/Routing/Mapper/CustomUrls.html#method-i-resolve
2022-06-26 19:16:31 +02:00
resolve ( 'Profile' ) { [ :settings_profile ] }
2015-08-25 10:26:36 +02:00
2021-12-23 00:03:42 +01:00
match '/settings/muted' , to : 'user#edit_mute' , via : :get , as : :edit_user_mute_rules
2022-06-23 20:03:11 +02:00
match '/settings/blocks' , to : 'user#edit_blocks' , via : :get , as : :edit_user_blocks
2020-10-18 10:39:46 +02:00
2014-12-12 21:43:09 +01:00
# resources :services, only: [:index, :destroy]
match '/settings/services' , to : 'services#index' , via : 'get' , as : :services
2022-01-05 01:00:18 +01:00
match '/settings/services/:id' , to : 'services#update' , via : 'patch' , as : :update_service
2014-12-12 21:43:09 +01:00
match '/settings/services/:id' , to : 'services#destroy' , via : 'delete' , as : :service
controller :services do
scope " /auth " , as : " auth " do
get ':provider/callback' = > :create
get :failure
end
end
2015-06-20 20:38:07 +02:00
match '/settings/data' , to : 'user#data' , via : :get , as : :user_data
2014-11-10 13:04:10 +01:00
namespace :ajax do
2014-11-10 21:56:30 +01:00
match '/ask' , to : 'question#create' , via : :post , as : :ask
2015-04-26 03:36:25 +02:00
match '/destroy_question' , to : 'question#destroy' , via : :post , as : :destroy_question
2014-12-09 23:21:41 +01:00
match '/generate_question' , to : 'inbox#create' , via : :post , as : :generate_question
2014-11-30 18:05:51 +01:00
match '/delete_inbox' , to : 'inbox#remove' , via : :post , as : :delete_inbox
2014-12-21 13:41:57 +01:00
match '/delete_all_inbox' , to : 'inbox#remove_all' , via : :post , as : :delete_all_inbox
2015-07-17 20:29:19 +02:00
match '/delete_all_inbox/:author' , to : 'inbox#remove_all_author' , via : :post , as : :delete_all_author
2015-01-03 18:40:39 +01:00
match '/answer' , to : 'answer#create' , via : :post , as : :answer
2014-11-26 17:05:46 +01:00
match '/destroy_answer' , to : 'answer#destroy' , via : :post , as : :destroy_answer
2022-01-03 00:31:55 +01:00
match '/create_relationship' , to : 'relationship#create' , via : :post , as : :create_relationship
match '/destroy_relationship' , to : 'relationship#destroy' , via : :post , as : :destroy_relationship
2014-11-30 20:31:22 +01:00
match '/create_smile' , to : 'smile#create' , via : :post , as : :create_smile
match '/destroy_smile' , to : 'smile#destroy' , via : :post , as : :destroy_smile
2015-05-04 03:39:41 +02:00
match '/create_comment_smile' , to : 'smile#create_comment' , via : :post , as : :create_comment_smile
match '/destroy_comment_smile' , to : 'smile#destroy_comment' , via : :post , as : :destroy_comment_smile
2014-12-07 14:29:35 +01:00
match '/create_comment' , to : 'comment#create' , via : :post , as : :create_comment
2014-12-28 21:14:01 +01:00
match '/destroy_comment' , to : 'comment#destroy' , via : :post , as : :destroy_comment
2014-12-28 19:55:50 +01:00
match '/report' , to : 'report#create' , via : :post , as : :report
2020-05-25 18:04:54 +02:00
match '/create_list' , to : 'list#create' , via : :post , as : :create_list
match '/destroy_list' , to : 'list#destroy' , via : :post , as : :destroy_list
match '/list_membership' , to : 'list#membership' , via : :post , as : :list_membership
2015-04-21 03:12:11 +02:00
match '/subscribe' , to : 'subscription#subscribe' , via : :post , as : :subscribe_answer
match '/unsubscribe' , to : 'subscription#unsubscribe' , via : :post , as : :unsubscribe_answer
2021-12-22 23:15:47 +01:00
match '/mute' , to : 'mute_rule#create' , via : :post , as : :create_mute_rule
match '/mute/:id' , to : 'mute_rule#update' , via : :post , as : :update_mute_rule
match '/mute/:id' , to : 'mute_rule#destroy' , via : :delete , as : :delete_mute_rule
2022-06-14 23:16:55 +02:00
match '/block_anon' , to : 'anonymous_block#create' , via : :post , as : :block_anon
2022-06-14 23:30:27 +02:00
match '/block_anon/:id' , to : 'anonymous_block#destroy' , via : :delete , as : :unblock_anon
2014-11-10 13:04:10 +01:00
end
2014-11-03 13:21:41 +01:00
2020-04-19 13:55:13 +02:00
match '/discover' , to : 'discover#index' , via : :get , as : :discover
2017-03-31 22:21:19 +02:00
match '/public' , to : 'public#index' , via : :get , as : :public_timeline if APP_CONFIG . dig ( :features , :public , :enabled )
2020-05-25 18:04:54 +02:00
match '/list/:list_name' , to : 'list#index' , via : :get , as : :list_timeline
2014-12-11 06:39:35 +01:00
2015-09-16 22:18:40 +02:00
match '/notifications(/:type)' , to : 'notifications#index' , via : :get , as : :notifications , defaults : { type : 'new' }
2014-12-14 15:17:52 +01:00
2014-11-11 07:10:41 +01:00
match '/inbox' , to : 'inbox#show' , via : 'get'
2015-07-17 21:02:53 +02:00
match '/inbox/:author' , to : 'inbox#show' , via : 'get'
2015-04-19 00:17:13 +02:00
2014-11-12 20:40:24 +01:00
match '/user/:username(/p/:page)' , to : 'user#show' , via : 'get' , defaults : { page : 1 }
2015-01-17 16:29:11 +01:00
match '/@:username(/p/:page)' , to : 'user#show' , via : 'get' , as : :show_user_profile_alt , defaults : { page : 1 }
match '/@:username/a/:id' , to : 'answer#show' , via : 'get' , as : :show_user_answer_alt
match '/@:username/q/:id' , to : 'question#show' , via : 'get' , as : :show_user_question_alt
match '/@:username/followers(/p/:page)' , to : 'user#followers' , via : 'get' , as : :show_user_followers_alt , defaults : { page : 1 }
2021-12-31 22:19:21 +01:00
match '/@:username/followings(/p/:page)' , to : 'user#followings' , via : 'get' , as : :show_user_followings_alt , defaults : { page : 1 }
2022-01-22 22:48:55 +01:00
match '/@:username/friends(/p/:page)' , to : redirect ( '/@%{username}/followings/p/%{page}' ) , via : 'get' , defaults : { page : 1 }
2015-01-17 16:29:11 +01:00
match '/:username(/p/:page)' , to : 'user#show' , via : 'get' , as : :show_user_profile , defaults : { page : 1 }
match '/:username/a/:id' , to : 'answer#show' , via : 'get' , as : :show_user_answer
match '/:username/q/:id' , to : 'question#show' , via : 'get' , as : :show_user_question
match '/:username/followers(/p/:page)' , to : 'user#followers' , via : 'get' , as : :show_user_followers , defaults : { page : 1 }
2021-12-31 22:19:21 +01:00
match '/:username/followings(/p/:page)' , to : 'user#followings' , via : 'get' , as : :show_user_followings , defaults : { page : 1 }
2022-01-22 22:48:55 +01:00
match '/:username/friends(/p/:page)' , to : redirect ( '/%{username}/followings/p/%{page}' ) , via : 'get' , defaults : { page : 1 }
2014-12-19 22:34:24 +01:00
match '/:username/questions(/p/:page)' , to : 'user#questions' , via : 'get' , as : :show_user_questions , defaults : { page : 1 }
2017-03-31 22:38:23 +02:00
2022-01-22 22:37:01 +01:00
match '/feedback/consent' , to : 'feedback#consent' , via : 'get' , as : 'feedback_consent'
match '/feedback/consent/update' , to : 'feedback#update' , via : 'post' , as : 'feedback_consent_update'
2022-01-22 00:33:37 +01:00
match '/feedback/bugs(/*any)' , to : 'feedback#bugs' , via : 'get' , as : 'feedback_bugs'
2022-01-22 21:30:39 +01:00
match '/feedback/feature_requests(/*any)' , to : 'feedback#features' , via : 'get' , as : 'feedback_features'
2022-01-22 00:33:37 +01:00
2022-06-27 22:10:39 +02:00
get '/.well-known/change-password' , to : redirect ( '/settings/account' )
2017-03-31 22:38:23 +02:00
puts 'processing time of routes.rb: ' + " #{ ( Time . now - start ) . round ( 3 ) . to_s . ljust ( 5 , '0' ) } s " . light_green
2014-08-01 11:23:47 +02:00
end