diff --git a/modules/templates/helper.go b/modules/templates/helper.go index b6c170cc3a..15b36d5dc8 100644 --- a/modules/templates/helper.go +++ b/modules/templates/helper.go @@ -173,7 +173,8 @@ func NewFuncMap() template.FuncMap { return !setting.ImportLocalPaths }, "ThemeName": func(user *user_model.User) string { - if user == nil { + // Guest user may not be nil on some pages, e.g. in org pages, so user.Theme check is also needed + if user == nil || user.Theme == "" { return setting.UI.DefaultTheme } return user.Theme diff --git a/tests/integration/org_test.go b/tests/integration/org_test.go index ddfaf2fa55..7766b76ef6 100644 --- a/tests/integration/org_test.go +++ b/tests/integration/org_test.go @@ -1,4 +1,5 @@ // Copyright 2019 The Gitea Authors. All rights reserved. +// Copyright 2024 The Forgejo Authors. All rights reserved. // SPDX-License-Identifier: MIT package integration @@ -54,6 +55,14 @@ func TestOrgRepos(t *testing.T) { } } +func TestPublicOrgHome(t *testing.T) { + defer tests.PrepareTestEnv(t)() + + // Verify that in org pages, default theme get properly assigned to guest users + page := NewHTMLParser(t, MakeRequest(t, NewRequest(t, "GET", "/org41"), http.StatusOK).Body) + page.AssertElement(t, "html head link[rel='stylesheet'][href^='/assets/css/theme-forgejo-auto.css']", true) +} + func TestLimitedOrg(t *testing.T) { defer tests.PrepareTestEnv(t)()