zrok/controller/configuration.go
2023-05-23 14:21:37 -04:00

44 lines
1.3 KiB
Go

package controller
import (
"github.com/go-openapi/runtime/middleware"
"github.com/openziti/zrok/build"
"github.com/openziti/zrok/controller/config"
"github.com/openziti/zrok/rest_model_zrok"
"github.com/openziti/zrok/rest_server_zrok/operations/metadata"
)
type configurationHandler struct {
cfg *config.Config
}
func newConfigurationHandler(cfg *config.Config) *configurationHandler {
return &configurationHandler{
cfg: cfg,
}
}
func (ch *configurationHandler) Handle(_ metadata.ConfigurationParams) middleware.Responder {
data := &rest_model_zrok.Configuration{
Version: build.String(),
InvitesOpen: cfg.Invites != nil && cfg.Invites.InvitesOpen,
RequiresInviteToken: cfg.Invites != nil && cfg.Invites.TokenStrategy == "store",
}
if cfg.Admin != nil {
data.TouLink = cfg.Admin.TouLink
}
if cfg.Invites != nil {
data.InviteTokenContact = cfg.Invites.TokenContact
}
if cfg.Passwords != nil {
data.PasswordRequirements = &rest_model_zrok.PasswordRequirements{
Length: int64(cfg.Passwords.Length),
RequireCapital: cfg.Passwords.RequireCapital,
RequireNumeric: cfg.Passwords.RequireNumeric,
RequireSpecial: cfg.Passwords.RequireSpecial,
ValidSpecialCharacters: cfg.Passwords.ValidSpecialCharacters,
}
}
return metadata.NewConfigurationOK().WithPayload(data)
}