From e05e3b980fa4bc8ada2f7d06d7a1358a6727d8ee Mon Sep 17 00:00:00 2001 From: Michael Barz Date: Mon, 6 Mar 2023 10:45:33 +0100 Subject: [PATCH] add common part, make the logic theme name agnostic --- changelog/unreleased/branding-api.md | 1 + services/web/pkg/service/v0/branding.go | 45 ++++++++++++------------- 2 files changed, 22 insertions(+), 24 deletions(-) diff --git a/changelog/unreleased/branding-api.md b/changelog/unreleased/branding-api.md index 3722cb523..ab675019c 100644 --- a/changelog/unreleased/branding-api.md +++ b/changelog/unreleased/branding-api.md @@ -3,4 +3,5 @@ Enhancement: Add endpoints to upload a custom logo Added endpoints to upload and reset custom logos. The files are stored under the `WEB_ASSET_PATH` which defaults to `$OCIS_BASE_DATA_PATH/web/assets`. +https://github.com/owncloud/ocis/pull/5735 https://github.com/owncloud/ocis/pull/5559 diff --git a/services/web/pkg/service/v0/branding.go b/services/web/pkg/service/v0/branding.go index afc8592df..25a2746a4 100644 --- a/services/web/pkg/service/v0/branding.go +++ b/services/web/pkg/service/v0/branding.go @@ -167,37 +167,34 @@ func (p Web) updateLogoThemeConfig(logoPath string) error { var m map[string]interface{} _ = json.NewDecoder(f).Decode(&m) + // change logo in common part + commonCfg, ok := m["common"].(map[string]interface{}) + if !ok { + return errInvalidThemeConfig + } + commonCfg["logo"] = logoPath + webCfg, ok := m["web"].(map[string]interface{}) if !ok { return errInvalidThemeConfig } - defaultCfg, ok := webCfg["default"].(map[string]interface{}) - if !ok { - return errInvalidThemeConfig + // iterate over all possible themes and replace logo + for theme := range webCfg { + themeCfg, ok := webCfg[theme].(map[string]interface{}) + if !ok { + return errInvalidThemeConfig + } + + logoCfg, ok := themeCfg["logo"].(map[string]interface{}) + if !ok { + return errInvalidThemeConfig + } + + logoCfg["login"] = logoPath + logoCfg["topbar"] = logoPath } - logoCfg, ok := defaultCfg["logo"].(map[string]interface{}) - if !ok { - return errInvalidThemeConfig - } - - logoCfg["login"] = logoPath - logoCfg["topbar"] = logoPath - - defaultDarkCfg, ok := webCfg["default-dark"].(map[string]interface{}) - if !ok { - return errInvalidThemeConfig - } - - logoDarkCfg, ok := defaultDarkCfg["logo"].(map[string]interface{}) - if !ok { - return errInvalidThemeConfig - } - - logoDarkCfg["login"] = logoPath - logoDarkCfg["topbar"] = logoPath - dst, err := p.fs.Create(_themesConfigPath) if err != nil { return err