github.com/juju/juju@v0.0.0-20240430160146-1752b71fcf00/apiserver/facades/controller/usersecrets/register.go (about) 1 // Copyright 2023 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package usersecrets 5 6 import ( 7 "reflect" 8 9 "github.com/juju/errors" 10 11 "github.com/juju/juju/apiserver/common/secrets" 12 apiservererrors "github.com/juju/juju/apiserver/errors" 13 "github.com/juju/juju/apiserver/facade" 14 "github.com/juju/juju/secrets/provider" 15 "github.com/juju/juju/state" 16 ) 17 18 // Register is called to expose a package of facades onto a given registry. 19 func Register(registry facade.FacadeRegistry) { 20 registry.MustRegister("UserSecretsManager", 1, func(ctx facade.Context) (facade.Facade, error) { 21 return NewUserSecretsManager(ctx) 22 }, reflect.TypeOf((*UserSecretsManager)(nil))) 23 } 24 25 // NewUserSecretsManager creates a UserSecretsManager. 26 func NewUserSecretsManager(context facade.Context) (*UserSecretsManager, error) { 27 if !context.Auth().AuthController() { 28 return nil, apiservererrors.ErrPerm 29 } 30 model, err := context.State().Model() 31 if err != nil { 32 return nil, errors.Trace(err) 33 } 34 35 backendConfigGetter := func() (*provider.ModelBackendConfigInfo, error) { 36 return secrets.AdminBackendConfigInfo(secrets.SecretsModel(model)) 37 } 38 39 return &UserSecretsManager{ 40 authorizer: context.Auth(), 41 resources: context.Resources(), 42 authTag: context.Auth().GetAuthTag(), 43 controllerUUID: context.State().ControllerUUID(), 44 modelUUID: context.State().ModelUUID(), 45 secretsState: state.NewSecrets(context.State()), 46 backendConfigGetter: backendConfigGetter, 47 }, nil 48 }