Files
grafana/apps/advisor/pkg/app/checks/authchecks/check.go
T
2025-05-23 16:38:50 +02:00

68 lines
1.3 KiB
Go

package authchecks
import (
"context"
"errors"
"fmt"
"github.com/grafana/grafana/apps/advisor/pkg/app/checks"
"github.com/grafana/grafana/pkg/services/ssosettings"
)
const (
CheckID = "ssosetting"
)
var _ checks.Check = (*check)(nil)
type check struct {
ssoSettingsService ssosettings.Service
}
func New(ssoSettingsService ssosettings.Service) checks.Check {
return &check{
ssoSettingsService: ssoSettingsService,
}
}
func (c *check) ID() string {
return CheckID
}
func (c *check) Name() string {
return "SSO setting"
}
func (c *check) Init(ctx context.Context) error {
return nil
}
func (c *check) Steps() []checks.Step {
return []checks.Step{
&listFormatValidation{},
}
}
func (c *check) Items(ctx context.Context) ([]any, error) {
ssoSettings, err := c.ssoSettingsService.ListWithRedactedSecrets(ctx)
if err != nil {
return nil, fmt.Errorf("failed to list SSO settings: %w", err)
}
res := make([]any, len(ssoSettings))
for i, ds := range ssoSettings {
res[i] = ds
}
return res, nil
}
func (c *check) Item(ctx context.Context, id string) (any, error) {
ssoSetting, err := c.ssoSettingsService.GetForProviderWithRedactedSecrets(ctx, id)
if err != nil {
if errors.Is(err, ssosettings.ErrNotFound) {
return nil, nil
}
return nil, err
}
return ssoSetting, nil
}