diff --git a/src/metabase/models/recent_views.clj b/src/metabase/models/recent_views.clj index f127040b27f86ba8fa7d67fa0888a805c145e9f1..d64c829c299007f2b53626fbf764253e43c10780 100644 --- a/src/metabase/models/recent_views.clj +++ b/src/metabase/models/recent_views.clj @@ -419,7 +419,7 @@ (when (and (not= "hidden" (:visibility_type table)) (:database-name table) (:active table) - (mi/can-read? table)) + (mi/can-read? :model/Table model_id)) {:id model_id :name (:name table) :description (:description table) diff --git a/test/metabase/models/recent_views_test.clj b/test/metabase/models/recent_views_test.clj index bb270a4ea9ddae1c4c4b925da174102670240609..6ea0d2f729ad0e2784fed377ebd7c37ae170c123 100644 --- a/test/metabase/models/recent_views_test.clj +++ b/test/metabase/models/recent_views_test.clj @@ -180,7 +180,16 @@ (is (= expected (mapv fixup (mt/with-test-user :rasta - (recent-views (mt/user->id :rasta)))))))))) + (recent-views (mt/user->id :rasta))))))))) + (testing "non admins can see tables in recents (#47420)" + (mt/dataset test-data + (let [products-id (mt/id :products)] + (assert (-> (mt/fetch-user :rasta) :is_superuser not) "User is a super user") + (recent-views/update-users-recent-views! (mt/user->id :rasta) :model/Table products-id :view) + (let [views (mt/with-test-user :rasta + (recent-views (mt/user->id :rasta)))] + (is (contains? (into #{} (map (juxt :id :display_name :model)) views) + [products-id "Products" :table]))))))) (deftest update-users-recent-views!-duplicates-test (testing "`update-users-recent-views!` prunes duplicates of a certain model.`"