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:
Stefan Benz
2023-10-26 07:54:09 +02:00
committed by GitHub
parent 7b0506c19c
commit cb7b50b513
43 changed files with 527 additions and 100 deletions

View File

@@ -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
}
}

View File

@@ -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),
}
}

View File

@@ -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
}
}

View File

@@ -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
}
}

View File

@@ -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")