diff options
Diffstat (limited to 'internal/admin/service.go')
| -rw-r--r-- | internal/admin/service.go | 46 |
1 files changed, 25 insertions, 21 deletions
diff --git a/internal/admin/service.go b/internal/admin/service.go index 267a243..182c153 100644 --- a/internal/admin/service.go +++ b/internal/admin/service.go @@ -2,7 +2,8 @@ package admin import ( "errors" - "log" + "fmt" + "log/slog" casbin "github.com/casbin/casbin/v2" ) @@ -21,57 +22,58 @@ func (s *Servicer) Reload() { tmpConfig, err := loadServerConfig(s.mgmtRepo, s.reposDir, s.serverConfigPath) if err != nil { // log.error - log.Printf("failed to load config %s", err) - log.Print("refusing to reload config") + slog.Error("failed to load config", "error", err) + slog.Error("refusing to reload config") return } s.Conf = tmpConfig - s.InitServer() + _ = s.InitServer() } // InitServer initialize a git server and configure -func (s *Servicer) InitServer() { +func (s *Servicer) InitServer() error { policies := s.Conf.ServerPolicies() - log.Print("policies generated") numAdded := 0 for _, policy := range policies { added, err := s.AddPolicy(policy[0], policy[1], policy[2]) if err != nil { // log.error - log.Printf("error adding policy %s %s %s error %s", policy[0], policy[1], policy[2], err) + slog.Error("error adding policy", "role", policy[0], "slug", policy[1], "action", policy[2], "err", err) continue } if added { numAdded++ } } - log.Printf("policies added %d", numAdded) + slog.Info("policy generated", "added", numAdded) if err := s.SavePolicy(); err != nil { - log.Print("couldn't save policy") + return fmt.Errorf("policy couldn't be saved %w", err) } - log.Printf("policies saved") + slog.Info("policy saved") if err := s.LoadPolicy(); err != nil { - log.Print("cloudn't load policy") + return fmt.Errorf("cloudn't load policy %w", err) } - log.Print("policies loaded") - s.Conf.ConfigureRepos() - log.Print("configured repos") + slog.Info("policy loaded") + if err := s.Conf.ConfigureRepos(); err != nil { + return fmt.Errorf("couldn't configure repos %w", err) + } + slog.Info("configured repos") + return nil } // NewService create a new admin service, load config, and generate policies -func NewService(modelPath, policyPath, serverConfigPath, reposDir string, mgmtRepo bool) *Servicer { +func NewService(modelPath, policyPath, serverConfigPath, reposDir string, mgmtRepo bool) (*Servicer, error) { enf, err := casbin.NewSyncedEnforcer(modelPath, policyPath) if err != nil { - log.Fatalf("Couldn't load the enforcer encountered the following error: %s", err) + return &Servicer{}, fmt.Errorf("Couldn't load the enforcer encountered the following error: %w", err) } conf, err := loadServerConfig(mgmtRepo, reposDir, serverConfigPath) if errors.Is(err, ErrMgmtRepoNotFound) { - log.Print("no server config found, using default") + slog.Info("no server config found, using default") conf = defaultServerConfig } else if err != nil { - // log.error - log.Fatalf("Coudln't load server config %s", err) + return &Servicer{}, fmt.Errorf("Coudln't load server config. %w", err) } conf.basePath = reposDir svc := &Servicer{ @@ -81,6 +83,8 @@ func NewService(modelPath, policyPath, serverConfigPath, reposDir string, mgmtRe reposDir, mgmtRepo, } - svc.InitServer() - return svc + if err := svc.InitServer(); err != nil { + return nil, err + } + return svc, nil } |