mirror of
https://github.com/netbirdio/management-refactor.git
synced 2026-05-22 17:12:59 -07:00
95 lines
3.2 KiB
Go
95 lines
3.2 KiB
Go
package settings
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
|
|
"github.com/gorilla/mux"
|
|
"github.com/netbirdio/netbird/management/server/integrations/extra_settings"
|
|
types2 "github.com/netbirdio/netbird/management/server/types"
|
|
|
|
"management/internal/modules/accounts/settings/types"
|
|
"management/internal/modules/users"
|
|
"management/internal/shared/activity"
|
|
"management/internal/shared/db"
|
|
"management/internal/shared/permissions"
|
|
"management/pkg/logging"
|
|
)
|
|
|
|
var log = logging.LoggerForThisPackage()
|
|
|
|
type Manager struct {
|
|
repository Repository
|
|
extraSettingsManager extra_settings.Manager
|
|
userManager *users.Manager
|
|
eventManager *activity.Manager
|
|
}
|
|
|
|
func NewManager(store *db.Store, router *mux.Router, eventManager *activity.Manager, permissionsManager permissions.Manager, userManager *users.Manager, extraSettingsManager extra_settings.Manager) *Manager {
|
|
repo := newRepository(store)
|
|
m := &Manager{
|
|
repository: repo,
|
|
extraSettingsManager: extraSettingsManager,
|
|
userManager: userManager,
|
|
eventManager: eventManager,
|
|
}
|
|
api := newHandler(m, permissionsManager)
|
|
api.RegisterEndpoints(router)
|
|
return m
|
|
}
|
|
|
|
func (m *Manager) GetExtraSettingsManager() extra_settings.Manager {
|
|
return m.extraSettingsManager
|
|
}
|
|
|
|
func (m *Manager) GetSettings(ctx context.Context, tx db.Transaction, strength db.LockingStrength, accountID string) (*types.Settings, error) {
|
|
extraSettings, err := m.extraSettingsManager.GetExtraSettings(ctx, accountID)
|
|
if err != nil {
|
|
return nil, fmt.Errorf("get extra settings: %w", err)
|
|
}
|
|
|
|
settings, err := m.repository.GetAccountSettings(tx, strength, accountID)
|
|
if err != nil {
|
|
return nil, fmt.Errorf("get account settings: %w", err)
|
|
}
|
|
|
|
// Once we migrate the peer approval to settings manager this merging is obsolete
|
|
if settings.Extra != nil {
|
|
settings.Extra.FlowEnabled = extraSettings.FlowEnabled
|
|
settings.Extra.FlowPacketCounterEnabled = extraSettings.FlowPacketCounterEnabled
|
|
settings.Extra.FlowENCollectionEnabled = extraSettings.FlowENCollectionEnabled
|
|
settings.Extra.FlowDnsCollectionEnabled = extraSettings.FlowDnsCollectionEnabled
|
|
}
|
|
|
|
return settings, nil
|
|
}
|
|
|
|
func (m *Manager) GetExtraSettings(ctx context.Context, tx db.Transaction, accountID string) (*types.ExtraSettings, error) {
|
|
extraSettings, err := m.extraSettingsManager.GetExtraSettings(ctx, accountID)
|
|
if err != nil {
|
|
return nil, fmt.Errorf("get extra settings: %w", err)
|
|
}
|
|
|
|
settings, err := m.repository.GetAccountSettings(tx, db.LockingStrengthShare, accountID)
|
|
if err != nil {
|
|
return nil, fmt.Errorf("get account settings: %w", err)
|
|
}
|
|
|
|
// Once we migrate the peer approval to settings manager this merging is obsolete
|
|
if settings.Extra == nil {
|
|
settings.Extra = &types.ExtraSettings{}
|
|
}
|
|
|
|
settings.Extra.FlowEnabled = extraSettings.FlowEnabled
|
|
|
|
return settings.Extra, nil
|
|
}
|
|
|
|
func (m *Manager) UpdateExtraSettings(ctx context.Context, accountID, userID string, extraSettings *types.ExtraSettings) (bool, error) {
|
|
return m.extraSettingsManager.UpdateExtraSettings(ctx, accountID, userID, (*types2.ExtraSettings)(extraSettings))
|
|
}
|
|
|
|
func (m *Manager) UpdateSettings(ctx context.Context, tx db.Transaction, settings *types.Settings) (*types.Settings, error) {
|
|
return m.repository.UpdateSettings(tx, settings)
|
|
}
|