2021-11-11 09:10:24 -06:00
|
|
|
package manager
|
|
|
|
|
|
|
|
import (
|
|
|
|
"context"
|
|
|
|
|
|
|
|
"github.com/grafana/grafana/pkg/api/routing"
|
|
|
|
"github.com/grafana/grafana/pkg/infra/log"
|
2021-12-14 07:39:25 -06:00
|
|
|
"github.com/grafana/grafana/pkg/models"
|
2021-11-11 09:10:24 -06:00
|
|
|
"github.com/grafana/grafana/pkg/services/accesscontrol"
|
|
|
|
"github.com/grafana/grafana/pkg/services/serviceaccounts"
|
|
|
|
"github.com/grafana/grafana/pkg/services/serviceaccounts/api"
|
|
|
|
"github.com/grafana/grafana/pkg/services/serviceaccounts/database"
|
|
|
|
"github.com/grafana/grafana/pkg/services/sqlstore"
|
|
|
|
"github.com/grafana/grafana/pkg/setting"
|
|
|
|
)
|
|
|
|
|
|
|
|
var (
|
|
|
|
ServiceAccountFeatureToggleNotFound = "FeatureToggle service-accounts not found, try adding it to your custom.ini"
|
|
|
|
)
|
|
|
|
|
|
|
|
type ServiceAccountsService struct {
|
|
|
|
store serviceaccounts.Store
|
|
|
|
cfg *setting.Cfg
|
|
|
|
log log.Logger
|
|
|
|
}
|
|
|
|
|
|
|
|
func ProvideServiceAccountsService(
|
|
|
|
cfg *setting.Cfg,
|
|
|
|
store *sqlstore.SQLStore,
|
|
|
|
ac accesscontrol.AccessControl,
|
|
|
|
routeRegister routing.RouteRegister,
|
|
|
|
) (*ServiceAccountsService, error) {
|
|
|
|
s := &ServiceAccountsService{
|
|
|
|
cfg: cfg,
|
|
|
|
store: database.NewServiceAccountsStore(store),
|
|
|
|
log: log.New("serviceaccounts"),
|
|
|
|
}
|
|
|
|
if err := ac.DeclareFixedRoles(role); err != nil {
|
|
|
|
return nil, err
|
|
|
|
}
|
|
|
|
serviceaccountsAPI := api.NewServiceAccountsAPI(s, ac, routeRegister)
|
|
|
|
serviceaccountsAPI.RegisterAPIEndpoints(cfg)
|
|
|
|
return s, nil
|
|
|
|
}
|
|
|
|
|
2021-12-14 07:39:25 -06:00
|
|
|
func (sa *ServiceAccountsService) CreateServiceAccount(ctx context.Context, saForm *serviceaccounts.CreateServiceaccountForm) (*models.User, error) {
|
|
|
|
if !sa.cfg.FeatureToggles["service-accounts"] {
|
|
|
|
sa.log.Debug(ServiceAccountFeatureToggleNotFound)
|
|
|
|
return nil, nil
|
|
|
|
}
|
|
|
|
return sa.store.CreateServiceAccount(ctx, saForm)
|
|
|
|
}
|
|
|
|
|
2021-11-23 17:06:40 -06:00
|
|
|
func (sa *ServiceAccountsService) DeleteServiceAccount(ctx context.Context, orgID, serviceAccountID int64) error {
|
|
|
|
if !sa.cfg.FeatureToggles["service-accounts"] {
|
|
|
|
sa.log.Debug(ServiceAccountFeatureToggleNotFound)
|
2021-11-11 09:10:24 -06:00
|
|
|
return nil
|
|
|
|
}
|
2021-11-23 17:06:40 -06:00
|
|
|
return sa.store.DeleteServiceAccount(ctx, orgID, serviceAccountID)
|
2021-11-11 09:10:24 -06:00
|
|
|
}
|