Add global settings (#40)

This commit is contained in:
Jonas Plum
2022-03-13 13:45:10 +01:00
committed by GitHub
parent 86daadc73d
commit 18a4dc54e7
30 changed files with 1297 additions and 255 deletions

View File

@@ -8,19 +8,18 @@ import (
"github.com/SecurityBrewery/catalyst/bus"
"github.com/SecurityBrewery/catalyst/database"
"github.com/SecurityBrewery/catalyst/database/busdb"
"github.com/SecurityBrewery/catalyst/generated/model"
"github.com/SecurityBrewery/catalyst/storage"
)
type Service struct {
bus *bus.Bus
database *database.Database
settings *model.Settings
storage *storage.Storage
version string
}
func New(bus *bus.Bus, database *database.Database, storage *storage.Storage, settings *model.Settings) (*Service, error) {
return &Service{database: database, bus: bus, settings: settings, storage: storage}, nil
func New(bus *bus.Bus, database *database.Database, storage *storage.Storage, version string) (*Service, error) {
return &Service{database: database, bus: bus, storage: storage, version: version}, nil
}
func (s *Service) publishRequest(ctx context.Context, err error, function string, ids []driver.DocumentID) {

62
service/settings.go Normal file
View File

@@ -0,0 +1,62 @@
package service
import (
"context"
"errors"
"sort"
"github.com/SecurityBrewery/catalyst/database/busdb"
"github.com/SecurityBrewery/catalyst/generated/model"
"github.com/SecurityBrewery/catalyst/role"
)
func (s *Service) GetSettings(ctx context.Context) (*model.SettingsResponse, error) {
globalSettings, err := s.database.Settings(ctx)
if err != nil {
return nil, err
}
return s.settings(ctx, globalSettings)
}
func (s *Service) SaveSettings(ctx context.Context, settings *model.Settings) (*model.SettingsResponse, error) {
globalSettings, err := s.database.SaveSettings(ctx, settings)
if err != nil {
return nil, err
}
return s.settings(ctx, globalSettings)
}
func (s *Service) settings(ctx context.Context, globalSettings *model.Settings) (*model.SettingsResponse, error) {
user, ok := busdb.UserFromContext(ctx)
if !ok {
return nil, errors.New("no user in context")
}
userData, err := s.database.UserDataGet(ctx, user.ID)
if err != nil {
return nil, err
}
ticketTypeList, err := s.database.TicketTypeList(ctx)
if err != nil {
return nil, err
}
if userData.Timeformat != nil {
globalSettings.Timeformat = *userData.Timeformat
}
roles := role.Strings(role.List())
sort.Strings(roles)
return &model.SettingsResponse{
Tier: model.SettingsResponseTierCommunity,
Version: s.version,
Roles: roles,
TicketTypes: ticketTypeList,
ArtifactStates: globalSettings.ArtifactStates,
ArtifactKinds: globalSettings.ArtifactKinds,
Timeformat: globalSettings.Timeformat,
}, nil
}

View File

@@ -1,45 +0,0 @@
package service
import (
"context"
"errors"
"sort"
"github.com/SecurityBrewery/catalyst/database/busdb"
"github.com/SecurityBrewery/catalyst/generated/model"
"github.com/SecurityBrewery/catalyst/role"
)
func (s *Service) GetSettings(ctx context.Context) (*model.Settings, error) {
user, ok := busdb.UserFromContext(ctx)
if !ok {
return nil, errors.New("no user in context")
}
setting, err := s.database.UserDataGet(ctx, user.ID)
if err != nil {
return nil, err
}
settings := mergeSettings(s.settings, setting)
ticketTypeList, err := s.database.TicketTypeList(ctx)
if err != nil {
return nil, err
}
settings.TicketTypes = ticketTypeList
return settings, nil
}
func mergeSettings(globalSettings *model.Settings, user *model.UserDataResponse) *model.Settings {
if user.Timeformat != nil {
globalSettings.Timeformat = *user.Timeformat
}
roles := role.Strings(role.List())
sort.Strings(roles)
globalSettings.Roles = roles
return globalSettings
}