mirror of
https://github.com/pocket-id/pocket-id.git
synced 2025-12-23 09:15:13 +03:00
feat: redact sensitive app config variables if set with env variable
This commit is contained in:
@@ -8,6 +8,8 @@ import (
|
|||||||
"strconv"
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
"github.com/pocket-id/pocket-id/backend/internal/common"
|
||||||
)
|
)
|
||||||
|
|
||||||
type AppConfigVariable struct {
|
type AppConfigVariable struct {
|
||||||
@@ -49,7 +51,7 @@ type AppConfig struct {
|
|||||||
SmtpPort AppConfigVariable `key:"smtpPort"`
|
SmtpPort AppConfigVariable `key:"smtpPort"`
|
||||||
SmtpFrom AppConfigVariable `key:"smtpFrom"`
|
SmtpFrom AppConfigVariable `key:"smtpFrom"`
|
||||||
SmtpUser AppConfigVariable `key:"smtpUser"`
|
SmtpUser AppConfigVariable `key:"smtpUser"`
|
||||||
SmtpPassword AppConfigVariable `key:"smtpPassword"`
|
SmtpPassword AppConfigVariable `key:"smtpPassword,sensitive"`
|
||||||
SmtpTls AppConfigVariable `key:"smtpTls"`
|
SmtpTls AppConfigVariable `key:"smtpTls"`
|
||||||
SmtpSkipCertVerify AppConfigVariable `key:"smtpSkipCertVerify"`
|
SmtpSkipCertVerify AppConfigVariable `key:"smtpSkipCertVerify"`
|
||||||
EmailLoginNotificationEnabled AppConfigVariable `key:"emailLoginNotificationEnabled"`
|
EmailLoginNotificationEnabled AppConfigVariable `key:"emailLoginNotificationEnabled"`
|
||||||
@@ -60,7 +62,7 @@ type AppConfig struct {
|
|||||||
LdapEnabled AppConfigVariable `key:"ldapEnabled,public"` // Public
|
LdapEnabled AppConfigVariable `key:"ldapEnabled,public"` // Public
|
||||||
LdapUrl AppConfigVariable `key:"ldapUrl"`
|
LdapUrl AppConfigVariable `key:"ldapUrl"`
|
||||||
LdapBindDn AppConfigVariable `key:"ldapBindDn"`
|
LdapBindDn AppConfigVariable `key:"ldapBindDn"`
|
||||||
LdapBindPassword AppConfigVariable `key:"ldapBindPassword"`
|
LdapBindPassword AppConfigVariable `key:"ldapBindPassword,sensitive"`
|
||||||
LdapBase AppConfigVariable `key:"ldapBase"`
|
LdapBase AppConfigVariable `key:"ldapBase"`
|
||||||
LdapUserSearchFilter AppConfigVariable `key:"ldapUserSearchFilter"`
|
LdapUserSearchFilter AppConfigVariable `key:"ldapUserSearchFilter"`
|
||||||
LdapUserGroupSearchFilter AppConfigVariable `key:"ldapUserGroupSearchFilter"`
|
LdapUserGroupSearchFilter AppConfigVariable `key:"ldapUserGroupSearchFilter"`
|
||||||
@@ -78,7 +80,7 @@ type AppConfig struct {
|
|||||||
LdapSoftDeleteUsers AppConfigVariable `key:"ldapSoftDeleteUsers"`
|
LdapSoftDeleteUsers AppConfigVariable `key:"ldapSoftDeleteUsers"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *AppConfig) ToAppConfigVariableSlice(showAll bool) []AppConfigVariable {
|
func (c *AppConfig) ToAppConfigVariableSlice(showAll bool, redactSensitiveValues bool) []AppConfigVariable {
|
||||||
// Use reflection to iterate through all fields
|
// Use reflection to iterate through all fields
|
||||||
cfgValue := reflect.ValueOf(c).Elem()
|
cfgValue := reflect.ValueOf(c).Elem()
|
||||||
cfgType := cfgValue.Type()
|
cfgType := cfgValue.Type()
|
||||||
@@ -98,11 +100,16 @@ func (c *AppConfig) ToAppConfigVariableSlice(showAll bool) []AppConfigVariable {
|
|||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
fieldValue := cfgValue.Field(i)
|
value := cfgValue.Field(i).FieldByName("Value").String()
|
||||||
|
|
||||||
|
// Redact sensitive values if the value isn't empty, the UI config is disabled, and redactSensitiveValues is true
|
||||||
|
if value != "" && common.EnvConfig.UiConfigDisabled && redactSensitiveValues && attrs == "sensitive" {
|
||||||
|
value = "XXXXXXXXXX"
|
||||||
|
}
|
||||||
|
|
||||||
appConfigVariable := AppConfigVariable{
|
appConfigVariable := AppConfigVariable{
|
||||||
Key: key,
|
Key: key,
|
||||||
Value: fieldValue.FieldByName("Value").String(),
|
Value: value,
|
||||||
}
|
}
|
||||||
|
|
||||||
res = append(res, appConfigVariable)
|
res = append(res, appConfigVariable)
|
||||||
|
|||||||
@@ -234,7 +234,7 @@ func (s *AppConfigService) UpdateAppConfig(ctx context.Context, input dto.AppCon
|
|||||||
s.dbConfig.Store(cfg)
|
s.dbConfig.Store(cfg)
|
||||||
|
|
||||||
// Return the updated config
|
// Return the updated config
|
||||||
res := cfg.ToAppConfigVariableSlice(true)
|
res := cfg.ToAppConfigVariableSlice(true, false)
|
||||||
return res, nil
|
return res, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -319,7 +319,7 @@ func (s *AppConfigService) UpdateAppConfigValues(ctx context.Context, keysAndVal
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (s *AppConfigService) ListAppConfig(showAll bool) []model.AppConfigVariable {
|
func (s *AppConfigService) ListAppConfig(showAll bool) []model.AppConfigVariable {
|
||||||
return s.GetDbConfig().ToAppConfigVariableSlice(showAll)
|
return s.GetDbConfig().ToAppConfigVariableSlice(showAll, true)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *AppConfigService) UpdateImage(ctx context.Context, uploadedFile *multipart.FileHeader, imageName string, oldImageType string) (err error) {
|
func (s *AppConfigService) UpdateImage(ctx context.Context, uploadedFile *multipart.FileHeader, imageName string, oldImageType string) (err error) {
|
||||||
|
|||||||
Reference in New Issue
Block a user