FIX: PM tags route should work for usernames with a period.

FIX: PM tags route should work for usernames with a period.

diff --git a/config/routes.rb b/config/routes.rb
index 211a4ff..f48ad3d 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -922,7 +922,7 @@ Discourse::Application.routes.draw do
       get '/' => 'tags#index'
       get '/filter/list' => 'tags#index'
       get '/filter/search' => 'tags#search'
-      get '/personal_messages/:username' => 'tags#personal_messages'
+      get '/personal_messages/:username' => 'tags#personal_messages', constraints: { username: RouteFormat.username }
       post '/upload' => 'tags#upload'
       get '/unused' => 'tags#list_unused'
       delete '/unused' => 'tags#destroy_unused'
diff --git a/spec/requests/tags_controller_spec.rb b/spec/requests/tags_controller_spec.rb
index ea63342..fecf09f 100644
--- a/spec/requests/tags_controller_spec.rb
+++ b/spec/requests/tags_controller_spec.rb
@@ -520,6 +520,14 @@ describe TagsController do
         tag = response.parsed_body['tags']
         expect(tag[0]["id"]).to eq('test')
       end
+
+      it 'works with usernames with a period' do
+        admin.update!(username: "test.test")
+
+        get "/tags/personal_messages/#{admin.username}.json"
+
+        expect(response.status).to eq(200)
+      end
     end
   end
 

GitHub sha: 543a2d70b2907d8742922b5c549c436f5ceb763c

This commit appears in #13879 which was approved by martin. It was merged by tgxworld.