mirror of
https://github.com/zitadel/zitadel.git
synced 2025-08-11 20:17:32 +00:00
feat: add attribute to only enable specific themes (#6798)
* feat: enable only specific themes in label policy * feat: enable only specific themes in label policy * feat: enable only specific themes in label policy * feat: enable only specific themes in label policy * add management in console * pass enabledTheme * render login ui based on enabled theme * add in branding / settings service and name consistently * update console to latest proto state * fix console linting * fix linting * cleanup * add translations --------- Co-authored-by: Livio Spring <livio.a@gmail.com> Co-authored-by: Tim Möhlmann <tim+github@zitadel.com>
This commit is contained in:
@@ -3,6 +3,7 @@ package admin
|
||||
import (
|
||||
"github.com/zitadel/zitadel/internal/domain"
|
||||
admin_pb "github.com/zitadel/zitadel/pkg/grpc/admin"
|
||||
policy_pb "github.com/zitadel/zitadel/pkg/grpc/policy"
|
||||
)
|
||||
|
||||
func updateLabelPolicyToDomain(policy *admin_pb.UpdateLabelPolicyRequest) *domain.LabelPolicy {
|
||||
@@ -17,5 +18,21 @@ func updateLabelPolicyToDomain(policy *admin_pb.UpdateLabelPolicyRequest) *domai
|
||||
FontColorDark: policy.FontColorDark,
|
||||
HideLoginNameSuffix: policy.HideLoginNameSuffix,
|
||||
DisableWatermark: policy.DisableWatermark,
|
||||
ThemeMode: themeModeToDomain(policy.ThemeMode),
|
||||
}
|
||||
}
|
||||
|
||||
func themeModeToDomain(theme policy_pb.ThemeMode) domain.LabelPolicyThemeMode {
|
||||
switch theme {
|
||||
case policy_pb.ThemeMode_THEME_MODE_AUTO:
|
||||
return domain.LabelPolicyThemeAuto
|
||||
case policy_pb.ThemeMode_THEME_MODE_DARK:
|
||||
return domain.LabelPolicyThemeDark
|
||||
case policy_pb.ThemeMode_THEME_MODE_LIGHT:
|
||||
return domain.LabelPolicyThemeLight
|
||||
case policy_pb.ThemeMode_THEME_MODE_UNSPECIFIED:
|
||||
return domain.LabelPolicyThemeAuto
|
||||
default:
|
||||
return domain.LabelPolicyThemeAuto
|
||||
}
|
||||
}
|
||||
|
@@ -3,6 +3,7 @@ package management
|
||||
import (
|
||||
"github.com/zitadel/zitadel/internal/domain"
|
||||
mgmt_pb "github.com/zitadel/zitadel/pkg/grpc/management"
|
||||
policy_pb "github.com/zitadel/zitadel/pkg/grpc/policy"
|
||||
)
|
||||
|
||||
func AddLabelPolicyToDomain(p *mgmt_pb.AddCustomLabelPolicyRequest) *domain.LabelPolicy {
|
||||
@@ -17,6 +18,22 @@ func AddLabelPolicyToDomain(p *mgmt_pb.AddCustomLabelPolicyRequest) *domain.Labe
|
||||
FontColorDark: p.FontColorDark,
|
||||
HideLoginNameSuffix: p.HideLoginNameSuffix,
|
||||
DisableWatermark: p.DisableWatermark,
|
||||
ThemeMode: themeModeToDomain(p.ThemeMode),
|
||||
}
|
||||
}
|
||||
|
||||
func themeModeToDomain(theme policy_pb.ThemeMode) domain.LabelPolicyThemeMode {
|
||||
switch theme {
|
||||
case policy_pb.ThemeMode_THEME_MODE_AUTO:
|
||||
return domain.LabelPolicyThemeAuto
|
||||
case policy_pb.ThemeMode_THEME_MODE_DARK:
|
||||
return domain.LabelPolicyThemeDark
|
||||
case policy_pb.ThemeMode_THEME_MODE_LIGHT:
|
||||
return domain.LabelPolicyThemeLight
|
||||
case policy_pb.ThemeMode_THEME_MODE_UNSPECIFIED:
|
||||
return domain.LabelPolicyThemeAuto
|
||||
default:
|
||||
return domain.LabelPolicyThemeAuto
|
||||
}
|
||||
}
|
||||
|
||||
@@ -32,5 +49,6 @@ func updateLabelPolicyToDomain(p *mgmt_pb.UpdateCustomLabelPolicyRequest) *domai
|
||||
FontColorDark: p.FontColorDark,
|
||||
HideLoginNameSuffix: p.HideLoginNameSuffix,
|
||||
DisableWatermark: p.DisableWatermark,
|
||||
ThemeMode: themeModeToDomain(p.ThemeMode),
|
||||
}
|
||||
}
|
||||
|
@@ -26,6 +26,7 @@ func ModelLabelPolicyToPb(policy *query.LabelPolicy, assetPrefix string) *policy
|
||||
|
||||
DisableWatermark: policy.WatermarkDisabled,
|
||||
HideLoginNameSuffix: policy.HideLoginNameSuffix,
|
||||
ThemeMode: themeModeToPb(policy.ThemeMode),
|
||||
Details: object.ToViewDetailsPb(
|
||||
policy.Sequence,
|
||||
policy.CreationDate,
|
||||
@@ -34,3 +35,16 @@ func ModelLabelPolicyToPb(policy *query.LabelPolicy, assetPrefix string) *policy
|
||||
),
|
||||
}
|
||||
}
|
||||
|
||||
func themeModeToPb(theme domain.LabelPolicyThemeMode) policy_pb.ThemeMode {
|
||||
switch theme {
|
||||
case domain.LabelPolicyThemeAuto:
|
||||
return policy_pb.ThemeMode_THEME_MODE_AUTO
|
||||
case domain.LabelPolicyThemeDark:
|
||||
return policy_pb.ThemeMode_THEME_MODE_DARK
|
||||
case domain.LabelPolicyThemeLight:
|
||||
return policy_pb.ThemeMode_THEME_MODE_LIGHT
|
||||
default:
|
||||
return policy_pb.ThemeMode_THEME_MODE_AUTO
|
||||
}
|
||||
}
|
||||
|
@@ -107,6 +107,20 @@ func brandingSettingsToPb(current *query.LabelPolicy, assetPrefix string) *setti
|
||||
DisableWatermark: current.WatermarkDisabled,
|
||||
HideLoginNameSuffix: current.HideLoginNameSuffix,
|
||||
ResourceOwnerType: isDefaultToResourceOwnerTypePb(current.IsDefault),
|
||||
ThemeMode: themeModeToPb(current.ThemeMode),
|
||||
}
|
||||
}
|
||||
|
||||
func themeModeToPb(themeMode domain.LabelPolicyThemeMode) settings.ThemeMode {
|
||||
switch themeMode {
|
||||
case domain.LabelPolicyThemeAuto:
|
||||
return settings.ThemeMode_THEME_MODE_AUTO
|
||||
case domain.LabelPolicyThemeLight:
|
||||
return settings.ThemeMode_THEME_MODE_LIGHT
|
||||
case domain.LabelPolicyThemeDark:
|
||||
return settings.ThemeMode_THEME_MODE_DARK
|
||||
default:
|
||||
return settings.ThemeMode_THEME_MODE_AUTO
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -258,6 +258,7 @@ func Test_brandingSettingsToPb(t *testing.T) {
|
||||
FontURL: "fonts",
|
||||
WatermarkDisabled: true,
|
||||
HideLoginNameSuffix: true,
|
||||
ThemeMode: domain.LabelPolicyThemeDark,
|
||||
IsDefault: true,
|
||||
}
|
||||
want := &settings.BrandingSettings{
|
||||
@@ -281,6 +282,7 @@ func Test_brandingSettingsToPb(t *testing.T) {
|
||||
DisableWatermark: true,
|
||||
HideLoginNameSuffix: true,
|
||||
ResourceOwnerType: settings.ResourceOwnerType_RESOURCE_OWNER_TYPE_INSTANCE,
|
||||
ThemeMode: settings.ThemeMode_THEME_MODE_DARK,
|
||||
}
|
||||
|
||||
got := brandingSettingsToPb(arg, "http://example.com")
|
||||
|
Reference in New Issue
Block a user