98 lines
3.2 KiB
Go
98 lines
3.2 KiB
Go
package config
|
|
|
|
import "strings"
|
|
|
|
type SafeBrandingConfig struct {
|
|
SiteName string `json:"siteName"`
|
|
PortalTitle string `json:"portalTitle"`
|
|
PortalSubtitle string `json:"portalSubtitle"`
|
|
AdminTitle string `json:"adminTitle"`
|
|
AdminSubtitle string `json:"adminSubtitle"`
|
|
SiteIconURL string `json:"siteIconUrl"`
|
|
LogoURL string `json:"logoUrl"`
|
|
DeveloperAvatarURL string `json:"developerAvatarUrl"`
|
|
DeveloperName string `json:"developerName"`
|
|
FeedbackEmail string `json:"feedbackEmail"`
|
|
}
|
|
|
|
func SafeBranding(cfg BrandingConfig) SafeBrandingConfig {
|
|
normalized := NormalizeBranding(BrandingConfig{}, cfg)
|
|
return SafeBrandingConfig{
|
|
SiteName: strings.TrimSpace(normalized.SiteName),
|
|
PortalTitle: strings.TrimSpace(normalized.PortalTitle),
|
|
PortalSubtitle: strings.TrimSpace(normalized.PortalSubtitle),
|
|
AdminTitle: strings.TrimSpace(normalized.AdminTitle),
|
|
AdminSubtitle: strings.TrimSpace(normalized.AdminSubtitle),
|
|
SiteIconURL: strings.TrimSpace(normalized.SiteIconURL),
|
|
LogoURL: strings.TrimSpace(normalized.LogoURL),
|
|
DeveloperAvatarURL: strings.TrimSpace(normalized.DeveloperAvatarURL),
|
|
DeveloperName: strings.TrimSpace(normalized.DeveloperName),
|
|
FeedbackEmail: strings.TrimSpace(normalized.FeedbackEmail),
|
|
}
|
|
}
|
|
|
|
func NormalizeBranding(current BrandingConfig, incoming BrandingConfig) BrandingConfig {
|
|
next := current
|
|
if value := strings.TrimSpace(incoming.SiteName); value != "" {
|
|
next.SiteName = value
|
|
}
|
|
if value := strings.TrimSpace(incoming.PortalTitle); value != "" {
|
|
next.PortalTitle = value
|
|
}
|
|
if value := strings.TrimSpace(incoming.PortalSubtitle); value != "" {
|
|
next.PortalSubtitle = value
|
|
}
|
|
if value := strings.TrimSpace(incoming.AdminTitle); value != "" {
|
|
next.AdminTitle = value
|
|
}
|
|
if value := strings.TrimSpace(incoming.AdminSubtitle); value != "" {
|
|
next.AdminSubtitle = value
|
|
}
|
|
if value := strings.TrimSpace(incoming.SiteIconURL); value != "" {
|
|
next.SiteIconURL = value
|
|
}
|
|
if value := strings.TrimSpace(incoming.LogoURL); value != "" {
|
|
next.LogoURL = value
|
|
}
|
|
if value := strings.TrimSpace(incoming.DeveloperAvatarURL); value != "" {
|
|
next.DeveloperAvatarURL = value
|
|
}
|
|
if value := strings.TrimSpace(incoming.DeveloperName); value != "" {
|
|
next.DeveloperName = value
|
|
}
|
|
if value := strings.TrimSpace(incoming.FeedbackEmail); value != "" {
|
|
next.FeedbackEmail = value
|
|
}
|
|
if next.SiteName == "" {
|
|
next.SiteName = "YMhut Box"
|
|
}
|
|
if next.PortalTitle == "" {
|
|
next.PortalTitle = next.SiteName + " 统一服务门户"
|
|
}
|
|
if next.PortalSubtitle == "" {
|
|
next.PortalSubtitle = "统一发布、反馈与接口源状态门户"
|
|
}
|
|
if next.AdminTitle == "" {
|
|
next.AdminTitle = "YMhut 统一管理台"
|
|
}
|
|
if next.AdminSubtitle == "" {
|
|
next.AdminSubtitle = "发布、反馈、接口源与系统运维"
|
|
}
|
|
if next.SiteIconURL == "" {
|
|
next.SiteIconURL = "/assets/favicon.ico"
|
|
}
|
|
if next.LogoURL == "" {
|
|
next.LogoURL = next.SiteIconURL
|
|
}
|
|
if next.DeveloperAvatarURL == "" {
|
|
next.DeveloperAvatarURL = "/assets/developer-avatar.png"
|
|
}
|
|
if next.DeveloperName == "" {
|
|
next.DeveloperName = "YMhut"
|
|
}
|
|
if next.FeedbackEmail == "" {
|
|
next.FeedbackEmail = "support@ymhut.cn"
|
|
}
|
|
return next
|
|
}
|