mirror of
https://github.com/discourse/discourse.git
synced 2025-02-17 09:22:44 +08:00
Revert "FIX: apply defaults constraints to routes format (#7890)"
This reverts commit 7d01c5de1a
.
Trivial get on / was failing with a 404 with this change.
This commit is contained in:
parent
12e71f1fb2
commit
e8ee392186
|
@ -1065,10 +1065,7 @@ class UsersController < ApplicationController
|
||||||
@confirmed = true
|
@confirmed = true
|
||||||
end
|
end
|
||||||
|
|
||||||
respond_to do |format|
|
render layout: 'no_ember'
|
||||||
format.json { render json: success_json }
|
|
||||||
format.html { render layout: 'no_ember' }
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
||||||
def list_second_factors
|
def list_second_factors
|
||||||
|
|
|
@ -12,8 +12,7 @@ USERNAME_ROUTE_FORMAT = /[%\w.\-]+?/ unless defined? USERNAME_ROUTE_FORMAT
|
||||||
BACKUP_ROUTE_FORMAT = /.+\.(sql\.gz|tar\.gz|tgz)/i unless defined? BACKUP_ROUTE_FORMAT
|
BACKUP_ROUTE_FORMAT = /.+\.(sql\.gz|tar\.gz|tgz)/i unless defined? BACKUP_ROUTE_FORMAT
|
||||||
|
|
||||||
Discourse::Application.routes.draw do
|
Discourse::Application.routes.draw do
|
||||||
scope path: nil, constraints: { format: /(json|html)/ } do
|
relative_url_root = (defined?(Rails.configuration.relative_url_root) && Rails.configuration.relative_url_root) ? Rails.configuration.relative_url_root + '/' : '/'
|
||||||
relative_url_root = (defined?(Rails.configuration.relative_url_root) && Rails.configuration.relative_url_root) ? Rails.configuration.relative_url_root + '/' : '/'
|
|
||||||
|
|
||||||
match "/404", to: "exceptions#not_found", via: [:get, :post]
|
match "/404", to: "exceptions#not_found", via: [:get, :post]
|
||||||
get "/404-body" => "exceptions#not_found_body"
|
get "/404-body" => "exceptions#not_found_body"
|
||||||
|
@ -25,15 +24,13 @@ Discourse::Application.routes.draw do
|
||||||
post "webhooks/sendgrid" => "webhooks#sendgrid"
|
post "webhooks/sendgrid" => "webhooks#sendgrid"
|
||||||
post "webhooks/sparkpost" => "webhooks#sparkpost"
|
post "webhooks/sparkpost" => "webhooks#sparkpost"
|
||||||
|
|
||||||
scope path: nil, constraints: { format: /.*/ } do
|
if Rails.env.development?
|
||||||
if Rails.env.development?
|
mount Sidekiq::Web => "/sidekiq"
|
||||||
mount Sidekiq::Web => "/sidekiq"
|
mount Logster::Web => "/logs"
|
||||||
mount Logster::Web => "/logs"
|
else
|
||||||
else
|
# only allow sidekiq in master site
|
||||||
# only allow sidekiq in master site
|
mount Sidekiq::Web => "/sidekiq", constraints: AdminConstraint.new(require_master: true)
|
||||||
mount Sidekiq::Web => "/sidekiq", constraints: AdminConstraint.new(require_master: true)
|
mount Logster::Web => "/logs", constraints: AdminConstraint.new
|
||||||
mount Logster::Web => "/logs", constraints: AdminConstraint.new
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
||||||
resources :about do
|
resources :about do
|
||||||
|
@ -353,17 +350,17 @@ Discourse::Application.routes.draw do
|
||||||
post "composer/parse_html" => "composer#parse_html"
|
post "composer/parse_html" => "composer#parse_html"
|
||||||
|
|
||||||
resources :static
|
resources :static
|
||||||
post "login" => "static#enter"
|
post "login" => "static#enter", constraints: { format: /(json|html)/ }
|
||||||
get "login" => "static#show", id: "login"
|
get "login" => "static#show", id: "login", constraints: { format: /(json|html)/ }
|
||||||
get "password-reset" => "static#show", id: "password_reset"
|
get "password-reset" => "static#show", id: "password_reset", constraints: { format: /(json|html)/ }
|
||||||
get "faq" => "static#show", id: "faq"
|
get "faq" => "static#show", id: "faq", constraints: { format: /(json|html)/ }
|
||||||
get "tos" => "static#show", id: "tos", as: 'tos'
|
get "tos" => "static#show", id: "tos", as: 'tos', constraints: { format: /(json|html)/ }
|
||||||
get "privacy" => "static#show", id: "privacy", as: 'privacy'
|
get "privacy" => "static#show", id: "privacy", as: 'privacy', constraints: { format: /(json|html)/ }
|
||||||
get "signup" => "static#show", id: "signup"
|
get "signup" => "static#show", id: "signup", constraints: { format: /(json|html)/ }
|
||||||
get "login-preferences" => "static#show", id: "login"
|
get "login-preferences" => "static#show", id: "login", constraints: { format: /(json|html)/ }
|
||||||
|
|
||||||
%w{guidelines rules conduct}.each do |faq_alias|
|
%w{guidelines rules conduct}.each do |faq_alias|
|
||||||
get faq_alias => "static#show", id: "guidelines", as: faq_alias
|
get faq_alias => "static#show", id: "guidelines", as: faq_alias, constraints: { format: /(json|html)/ }
|
||||||
end
|
end
|
||||||
|
|
||||||
get "my/*path", to: 'users#my_redirect'
|
get "my/*path", to: 'users#my_redirect'
|
||||||
|
@ -423,8 +420,8 @@ Discourse::Application.routes.draw do
|
||||||
get "#{root_path}/:username/messages/group/:group_name/archive" => "user_actions#private_messages", constraints: { username: RouteFormat.username, group_name: RouteFormat.username }
|
get "#{root_path}/:username/messages/group/:group_name/archive" => "user_actions#private_messages", constraints: { username: RouteFormat.username, group_name: RouteFormat.username }
|
||||||
get "#{root_path}/:username/messages/tags/:tag_id" => "user_actions#private_messages", constraints: StaffConstraint.new
|
get "#{root_path}/:username/messages/tags/:tag_id" => "user_actions#private_messages", constraints: StaffConstraint.new
|
||||||
get "#{root_path}/:username.json" => "users#show", constraints: { username: RouteFormat.username }, defaults: { format: :json }
|
get "#{root_path}/:username.json" => "users#show", constraints: { username: RouteFormat.username }, defaults: { format: :json }
|
||||||
get({ "#{root_path}/:username" => "users#show", constraints: { username: RouteFormat.username } }.merge(index == 1 ? { as: 'user' } : {}))
|
get({ "#{root_path}/:username" => "users#show", constraints: { username: RouteFormat.username, format: /(json|html)/ } }.merge(index == 1 ? { as: 'user' } : {}))
|
||||||
put "#{root_path}/:username" => "users#update", constraints: { username: RouteFormat.username }, defaults: { format: :json }
|
put "#{root_path}/:username" => "users#update", constraints: { username: RouteFormat.username, format: /(json|html)/ }, defaults: { format: :json }
|
||||||
get "#{root_path}/:username/emails" => "users#check_emails", constraints: { username: RouteFormat.username }
|
get "#{root_path}/:username/emails" => "users#check_emails", constraints: { username: RouteFormat.username }
|
||||||
get({ "#{root_path}/:username/preferences" => "users#preferences", constraints: { username: RouteFormat.username } }.merge(index == 1 ? { as: :email_preferences } : {}))
|
get({ "#{root_path}/:username/preferences" => "users#preferences", constraints: { username: RouteFormat.username } }.merge(index == 1 ? { as: :email_preferences } : {}))
|
||||||
get "#{root_path}/:username/preferences/email" => "users_email#index", constraints: { username: RouteFormat.username }
|
get "#{root_path}/:username/preferences/email" => "users_email#index", constraints: { username: RouteFormat.username }
|
||||||
|
@ -466,7 +463,7 @@ Discourse::Application.routes.draw do
|
||||||
get "#{root_path}/:username/badges" => "users#badges", constraints: { username: RouteFormat.username }
|
get "#{root_path}/:username/badges" => "users#badges", constraints: { username: RouteFormat.username }
|
||||||
get "#{root_path}/:username/notifications" => "users#show", constraints: { username: RouteFormat.username }
|
get "#{root_path}/:username/notifications" => "users#show", constraints: { username: RouteFormat.username }
|
||||||
get "#{root_path}/:username/notifications/:filter" => "users#show", constraints: { username: RouteFormat.username }
|
get "#{root_path}/:username/notifications/:filter" => "users#show", constraints: { username: RouteFormat.username }
|
||||||
delete "#{root_path}/:username" => "users#destroy", constraints: { username: RouteFormat.username }
|
delete "#{root_path}/:username" => "users#destroy", constraints: { username: RouteFormat.username, format: /(json|html)/ }
|
||||||
get "#{root_path}/by-external/:external_id" => "users#show", constraints: { external_id: /[^\/]+/ }
|
get "#{root_path}/by-external/:external_id" => "users#show", constraints: { external_id: /[^\/]+/ }
|
||||||
get "#{root_path}/:username/flagged-posts" => "users#show", constraints: { username: RouteFormat.username }
|
get "#{root_path}/:username/flagged-posts" => "users#show", constraints: { username: RouteFormat.username }
|
||||||
get "#{root_path}/:username/deleted-posts" => "users#show", constraints: { username: RouteFormat.username }
|
get "#{root_path}/:username/deleted-posts" => "users#show", constraints: { username: RouteFormat.username }
|
||||||
|
@ -475,18 +472,18 @@ Discourse::Application.routes.draw do
|
||||||
end
|
end
|
||||||
|
|
||||||
get "user-badges/:username.json" => "user_badges#username", constraints: { username: RouteFormat.username }, defaults: { format: :json }
|
get "user-badges/:username.json" => "user_badges#username", constraints: { username: RouteFormat.username }, defaults: { format: :json }
|
||||||
get "user-badges/:username" => "user_badges#username", constraints: { username: RouteFormat.username }
|
get "user-badges/:username" => "user_badges#username", constraints: { username: RouteFormat.username, format: /(json|html)/ }
|
||||||
|
|
||||||
post "user_avatar/:username/refresh_gravatar" => "user_avatars#refresh_gravatar", constraints: { username: RouteFormat.username }
|
post "user_avatar/:username/refresh_gravatar" => "user_avatars#refresh_gravatar", constraints: { username: RouteFormat.username }
|
||||||
get "letter_avatar/:username/:size/:version.png" => "user_avatars#show_letter", constraints: { hostname: /[\w\.-]+/, size: /\d+/, username: RouteFormat.username, format: :png }
|
get "letter_avatar/:username/:size/:version.png" => "user_avatars#show_letter", format: false, constraints: { hostname: /[\w\.-]+/, size: /\d+/, username: RouteFormat.username }
|
||||||
get "user_avatar/:hostname/:username/:size/:version.png" => "user_avatars#show", constraints: { hostname: /[\w\.-]+/, size: /\d+/, username: RouteFormat.username, format: :png }
|
get "user_avatar/:hostname/:username/:size/:version.png" => "user_avatars#show", format: false, constraints: { hostname: /[\w\.-]+/, size: /\d+/, username: RouteFormat.username }
|
||||||
|
|
||||||
get "letter_avatar_proxy/:version/letter/:letter/:color/:size.png" => "user_avatars#show_proxy_letter", constraints: { format: :png }
|
get "letter_avatar_proxy/:version/letter/:letter/:color/:size.png" => "user_avatars#show_proxy_letter"
|
||||||
|
|
||||||
get "svg-sprite/:hostname/svg-:theme_ids-:version.js" => "svg_sprite#show", constraints: { hostname: /[\w\.-]+/, version: /\h{40}/, theme_ids: /([0-9]+(,[0-9]+)*)?/, format: :js }
|
get "svg-sprite/:hostname/svg-:theme_ids-:version.js" => "svg_sprite#show", format: false, constraints: { hostname: /[\w\.-]+/, version: /\h{40}/, theme_ids: /([0-9]+(,[0-9]+)*)?/ }
|
||||||
get "svg-sprite/search/:keyword" => "svg_sprite#search", format: false, constraints: { keyword: /[-a-z0-9\s\%]+/ }
|
get "svg-sprite/search/:keyword" => "svg_sprite#search", format: false, constraints: { keyword: /[-a-z0-9\s\%]+/ }
|
||||||
|
|
||||||
get "highlight-js/:hostname/:version.js" => "highlight_js#show", constraints: { hostname: /[\w\.-]+/, format: :js }
|
get "highlight-js/:hostname/:version.js" => "highlight_js#show", format: false, constraints: { hostname: /[\w\.-]+/ }
|
||||||
|
|
||||||
get "stylesheets/:name.css.map" => "stylesheets#show_source_map", constraints: { name: /[-a-z0-9_]+/ }
|
get "stylesheets/:name.css.map" => "stylesheets#show_source_map", constraints: { name: /[-a-z0-9_]+/ }
|
||||||
get "stylesheets/:name.css" => "stylesheets#show", constraints: { name: /[-a-z0-9_]+/ }
|
get "stylesheets/:name.css" => "stylesheets#show", constraints: { name: /[-a-z0-9_]+/ }
|
||||||
|
@ -502,10 +499,10 @@ Discourse::Application.routes.draw do
|
||||||
# used to download attachments
|
# used to download attachments
|
||||||
get "uploads/:site/original/:tree:sha(.:extension)" => "uploads#show", constraints: { site: /\w+/, tree: /([a-z0-9]+\/)+/i, sha: /\h{40}/, extension: /[a-z0-9\.]+/i }
|
get "uploads/:site/original/:tree:sha(.:extension)" => "uploads#show", constraints: { site: /\w+/, tree: /([a-z0-9]+\/)+/i, sha: /\h{40}/, extension: /[a-z0-9\.]+/i }
|
||||||
# used to download attachments (old route)
|
# used to download attachments (old route)
|
||||||
get "uploads/:site/:id/:sha" => "uploads#show", constraints: { site: /\w+/, id: /\d+/, sha: /\h{16}/, format: /.*/ }
|
get "uploads/:site/:id/:sha" => "uploads#show", constraints: { site: /\w+/, id: /\d+/, sha: /\h{16}/ }
|
||||||
|
|
||||||
get "posts" => "posts#latest", id: "latest_posts", constraints: { format: /(json|rss)/ }
|
get "posts" => "posts#latest", id: "latest_posts"
|
||||||
get "private-posts" => "posts#latest", id: "private_posts", constraints: { format: /(json|rss)/ }
|
get "private-posts" => "posts#latest", id: "private_posts"
|
||||||
get "posts/by_number/:topic_id/:post_number" => "posts#by_number"
|
get "posts/by_number/:topic_id/:post_number" => "posts#by_number"
|
||||||
get "posts/by-date/:topic_id/:date" => "posts#by_date"
|
get "posts/by-date/:topic_id/:date" => "posts#by_date"
|
||||||
get "posts/:id/reply-history" => "posts#reply_history"
|
get "posts/:id/reply-history" => "posts#reply_history"
|
||||||
|
@ -615,7 +612,7 @@ Discourse::Application.routes.draw do
|
||||||
resources :user_actions
|
resources :user_actions
|
||||||
|
|
||||||
resources :badges, only: [:index]
|
resources :badges, only: [:index]
|
||||||
get "/badges/:id(/:slug)" => "badges#show", constraints: { format: /(json|html|rss)/ }
|
get "/badges/:id(/:slug)" => "badges#show"
|
||||||
resources :user_badges, only: [:index, :create, :destroy]
|
resources :user_badges, only: [:index, :create, :destroy]
|
||||||
|
|
||||||
get '/c', to: redirect(relative_url_root + 'categories')
|
get '/c', to: redirect(relative_url_root + 'categories')
|
||||||
|
@ -656,7 +653,7 @@ Discourse::Application.routes.draw do
|
||||||
end
|
end
|
||||||
|
|
||||||
Discourse.filters.each do |filter|
|
Discourse.filters.each do |filter|
|
||||||
get "#{filter}" => "list##{filter}"
|
get "#{filter}" => "list##{filter}", constraints: { format: /(json|html)/ }
|
||||||
get "c/:category/l/#{filter}" => "list#category_#{filter}", as: "category_#{filter}"
|
get "c/:category/l/#{filter}" => "list#category_#{filter}", as: "category_#{filter}"
|
||||||
get "c/:category/none/l/#{filter}" => "list#category_none_#{filter}", as: "category_none_#{filter}"
|
get "c/:category/none/l/#{filter}" => "list#category_none_#{filter}", as: "category_none_#{filter}"
|
||||||
get "c/:parent_category/:category/l/#{filter}" => "list#parent_category_category_#{filter}", as: "parent_category_category_#{filter}"
|
get "c/:parent_category/:category/l/#{filter}" => "list#parent_category_category_#{filter}", as: "parent_category_category_#{filter}"
|
||||||
|
@ -689,11 +686,11 @@ Discourse::Application.routes.draw do
|
||||||
get "topics/feature_stats"
|
get "topics/feature_stats"
|
||||||
|
|
||||||
scope "/topics", username: RouteFormat.username do
|
scope "/topics", username: RouteFormat.username do
|
||||||
get "created-by/:username" => "list#topics_by", as: "topics_by", defaults: { format: :json }
|
get "created-by/:username" => "list#topics_by", as: "topics_by", constraints: { format: /(json|html)/ }, defaults: { format: :json }
|
||||||
get "private-messages/:username" => "list#private_messages", as: "topics_private_messages", defaults: { format: :json }
|
get "private-messages/:username" => "list#private_messages", as: "topics_private_messages", constraints: { format: /(json|html)/ }, defaults: { format: :json }
|
||||||
get "private-messages-sent/:username" => "list#private_messages_sent", as: "topics_private_messages_sent", defaults: { format: :json }
|
get "private-messages-sent/:username" => "list#private_messages_sent", as: "topics_private_messages_sent", constraints: { format: /(json|html)/ }, defaults: { format: :json }
|
||||||
get "private-messages-archive/:username" => "list#private_messages_archive", as: "topics_private_messages_archive", defaults: { format: :json }
|
get "private-messages-archive/:username" => "list#private_messages_archive", as: "topics_private_messages_archive", constraints: { format: /(json|html)/ }, defaults: { format: :json }
|
||||||
get "private-messages-unread/:username" => "list#private_messages_unread", as: "topics_private_messages_unread", defaults: { format: :json }
|
get "private-messages-unread/:username" => "list#private_messages_unread", as: "topics_private_messages_unread", constraints: { format: /(json|html)/ }, defaults: { format: :json }
|
||||||
get "private-messages-tags/:username/:tag_id.json" => "list#private_messages_tag", as: "topics_private_messages_tag", constraints: StaffConstraint.new
|
get "private-messages-tags/:username/:tag_id.json" => "list#private_messages_tag", as: "topics_private_messages_tag", constraints: StaffConstraint.new
|
||||||
get "groups/:group_name" => "list#group_topics", as: "group_topics", group_name: RouteFormat.username
|
get "groups/:group_name" => "list#group_topics", as: "group_topics", group_name: RouteFormat.username
|
||||||
|
|
||||||
|
@ -804,8 +801,8 @@ Discourse::Application.routes.draw do
|
||||||
get "/service-worker.js" => "static#service_worker_asset", format: :js
|
get "/service-worker.js" => "static#service_worker_asset", format: :js
|
||||||
end
|
end
|
||||||
|
|
||||||
get "cdn_asset/:site/*path" => "static#cdn_asset", format: false, constraints: { format: /.*/ }
|
get "cdn_asset/:site/*path" => "static#cdn_asset", format: false
|
||||||
get "brotli_asset/*path" => "static#brotli_asset", format: false, constraints: { format: /.*/ }
|
get "brotli_asset/*path" => "static#brotli_asset", format: false
|
||||||
|
|
||||||
get "favicon/proxied" => "static#favicon", format: false
|
get "favicon/proxied" => "static#favicon", format: false
|
||||||
|
|
||||||
|
@ -814,7 +811,7 @@ Discourse::Application.routes.draw do
|
||||||
get "offline.html" => "offline#index"
|
get "offline.html" => "offline#index"
|
||||||
get "manifest.webmanifest" => "metadata#manifest", as: :manifest
|
get "manifest.webmanifest" => "metadata#manifest", as: :manifest
|
||||||
get "manifest.json" => "metadata#manifest"
|
get "manifest.json" => "metadata#manifest"
|
||||||
get "opensearch" => "metadata#opensearch", constraints: { format: :xml }
|
get "opensearch" => "metadata#opensearch", format: :xml
|
||||||
|
|
||||||
scope "/tags" do
|
scope "/tags" do
|
||||||
get '/' => 'tags#index'
|
get '/' => 'tags#index'
|
||||||
|
@ -883,5 +880,5 @@ Discourse::Application.routes.draw do
|
||||||
resources :csp_reports, only: [:create]
|
resources :csp_reports, only: [:create]
|
||||||
|
|
||||||
get "*url", to: 'permalinks#show', constraints: PermalinkConstraint.new
|
get "*url", to: 'permalinks#show', constraints: PermalinkConstraint.new
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
|
@ -2372,12 +2372,12 @@ describe UsersController do
|
||||||
|
|
||||||
describe '#confirm_admin' do
|
describe '#confirm_admin' do
|
||||||
it "fails without a valid token" do
|
it "fails without a valid token" do
|
||||||
get "/u/confirm-admin/invalid-token.json"
|
get "/u/confirm-admin/invalid-token.josn"
|
||||||
expect(response).not_to be_successful
|
expect(response).not_to be_successful
|
||||||
end
|
end
|
||||||
|
|
||||||
it "fails with a missing token" do
|
it "fails with a missing token" do
|
||||||
get "/u/confirm-admin/a0a0a0a0a0.json"
|
get "/u/confirm-admin/a0a0a0a0a0.josn"
|
||||||
expect(response).to_not be_successful
|
expect(response).to_not be_successful
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -2385,7 +2385,7 @@ describe UsersController do
|
||||||
user = Fabricate(:user)
|
user = Fabricate(:user)
|
||||||
ac = AdminConfirmation.new(user, Fabricate(:admin))
|
ac = AdminConfirmation.new(user, Fabricate(:admin))
|
||||||
ac.create_confirmation
|
ac.create_confirmation
|
||||||
get "/u/confirm-admin/#{ac.token}.json"
|
get "/u/confirm-admin/#{ac.token}.josn"
|
||||||
expect(response.status).to eq(200)
|
expect(response.status).to eq(200)
|
||||||
|
|
||||||
user.reload
|
user.reload
|
||||||
|
@ -2398,7 +2398,7 @@ describe UsersController do
|
||||||
|
|
||||||
ac = AdminConfirmation.new(user, admin)
|
ac = AdminConfirmation.new(user, admin)
|
||||||
ac.create_confirmation
|
ac.create_confirmation
|
||||||
get "/u/confirm-admin/#{ac.token}.json", params: { token: ac.token }
|
get "/u/confirm-admin/#{ac.token}.josn", params: { token: ac.token }
|
||||||
expect(response.status).to eq(200)
|
expect(response.status).to eq(200)
|
||||||
|
|
||||||
user.reload
|
user.reload
|
||||||
|
@ -2411,7 +2411,7 @@ describe UsersController do
|
||||||
|
|
||||||
ac = AdminConfirmation.new(user, Fabricate(:admin))
|
ac = AdminConfirmation.new(user, Fabricate(:admin))
|
||||||
ac.create_confirmation
|
ac.create_confirmation
|
||||||
get "/u/confirm-admin/#{ac.token}.json"
|
get "/u/confirm-admin/#{ac.token}.josn"
|
||||||
expect(response).to_not be_successful
|
expect(response).to_not be_successful
|
||||||
|
|
||||||
user.reload
|
user.reload
|
||||||
|
@ -2423,7 +2423,7 @@ describe UsersController do
|
||||||
user = Fabricate(:user)
|
user = Fabricate(:user)
|
||||||
ac = AdminConfirmation.new(user, Fabricate(:admin))
|
ac = AdminConfirmation.new(user, Fabricate(:admin))
|
||||||
ac.create_confirmation
|
ac.create_confirmation
|
||||||
post "/u/confirm-admin/#{ac.token}.json"
|
post "/u/confirm-admin/#{ac.token}.josn"
|
||||||
expect(response.status).to eq(200)
|
expect(response.status).to eq(200)
|
||||||
|
|
||||||
user.reload
|
user.reload
|
||||||
|
|
Loading…
Reference in New Issue
Block a user